Melt butter and sauté onions until tender. Add garlic and cook for 1 minute more.
Add 2 cups broth and potatoes, bring to boil, simmer for 15 minutes or until very tender, then remove the potatoes. Mash potatoes in a separate bowl and set aside.
Add remaining 2 cups broth and asparagus to pot, cover and simmer until tender, about 5-8 minutes.
Remove from heat and let cool 5 minutes so you don’t blow the lid off your blender and spray hot soup everywhere. Ahem. Blend in two batches and puree until smooth, return puree and potatoes to pot, and mix together.
Whisk in greek yogurt (optional), season with salt and pepper and garnish with parmesan cheese.