In a large pot, place diced potatoes, cover with water, and add 2 tsp of salt. Bring to a low boil with the lid on. Cook until potatoes are fork-tender. Strain to remove water and set aside.
While potatoes are cooking, prepare vegetables.
On medium heat, cook diced bacon in the pot until desired doneness. Remove bacon, leaving the grease in the pot.
Add butter, onions, and cook for 4-5 minutes until onions are soft. Add garlic and cook for an additional minute.
Whisk in flour and cook for 2-3 minutes, stirring continuously. Slowly add chicken stock, followed by milk, heavy cream, and sour cream.
Bring the soup to a low simmer, tasting and adjusting seasoning.
Carefully add potatoes back to the soup, taste again, and adjust seasoning.
Serve the soup topped with bacon bits, freshly grated cheese, and green onions.