Cut three of the onions into thin sliced half rings, cut the fourth finely. Keep the two types of onions separate.
Put the garlic and ginger into a blender add 100ml of the measured water and blend until fairly smooth.
Heat the oil in a wide heavy saucepan over a medium heat. When hot, put in the sliced onions. stir and fry for 10-12 minutes until the onions turn a reddish-brown colour. You may have to turn the heat down towards the end of this cooking period.
Remove onions when cooked and spread them on a paper towel lined plate.
Put the cinnamon, cardamom and cloves into he hot oil. Stir them for about 5 seconds, now put in the meat and brown the meat on one side.
Turn it over and brown on the other side. Remove the meat and put in a bowl.
Put the chopped onion into the remaining oil. Stir and fry on a medium heat until the pieces turn brown at the edges. Add the garlic-ginger paste. Stir and fry it until all the water has boiled away and you can see the oil again. Turn the heat down and add the coriander and cumin. Stir for 30 seconds.
Now add 1 tablespoon of yoghurt, stir and blend, add all the yoghurt this way, blending well.
Put all the meat and accumulated juices and remaining water into the pan. Add the cayenne and salt, simmer, covered on a low heat for 40 minutes or until the meat is tender.
Add the fried onions and the garam masala. Stir to mix.
Cook, uncovered for another 2-3 minutes.
Turn off the heat and let the pan sit for a while. the fat will rise to the top, remove it.
This dish is great prepared ahead of time and reheated.