Peel and dice the potatoes until you have 3 lbs and add to a large stock pot.
Cover the potatoes with water and bring to a boil.
Boil the potatoes until tender and easily pierced with a fork.
While the potatoes are boiling, make the bacon.
Heat a large fry pan over medium heat.
Chopped the uncooked bacon into small pieces and add to pan.
Fry the bacon, stirring occasionally until crisp.
Reserve ¼ cup bacon grease and then set the bacon crumbled on a paper towel.
Add the olive oil to the ¼ cup bacon grease.
Add the diced onions and cook over medium heat, stirring occasionally until translucent and soft.
Add the garlic and cook for 2 minutes, stirring constantly to avoid burning the garlic.
Pour the onions, garlic, and liquid into a food processor or blender and puree (be careful as the onions will be very hot).
Add the onion puree back to the pan and add 5 tablespoon flour. Stir until a paste is formed.
Cook over medium heat for 2 minutes, stirring constantly.
Slowly add the milk (or cashew milk if dairy free), stirring constantly.
Bring to a simmer until thickened, about 3-5 minutes.
Add HALF of the chicken bone broth, salt, and pepper. Stir well.
Drain the potatoes and then add HALF of the potatoes and the remaining chicken bone broth to a large food processor (if it doesn't all fit just add what you can and add the rest to the soup base).
Puree the potatoes and chicken bone broth until mashed potatoes are formed.
Add the mashed potatoes to the soup base and stir well.
Pour the soup into the large stock pot with the remaining potatoes.
Simmer for 5 minutes then serve with desired toppings.