Add olive oil and onion to a large pot and cook for about five minutes until onion is translucent. Stir in butter, garlic and flour.
Add potatoes, chicken stock, and seasonings and bring to a boil. Cook for 15-20 minutes or until potatoes are tender and you can stick a fork in them easily. Mash a few times to make the soup creamy.
Add in milk and cream and stir. Cover and simmer for 5-10 minutes on low-medium.
OPTIONAL: **If soup is thin, create a roux with 3 tbsp flour and 3 tbsp water. Mix and slowly add to soup 1 tbsp at a time, stirring the entire time. Continue to cover and cook for 5-10 minutes and this will thicken soup. **If soup is too thick, add 1 tbsp of chicken stock at a time.
Top with bacon, cheese, green onion, and any other favorite toppings. Enjoy!