Heat the butter and olive oil in a large frying pan over medium low heat. Add the onions. Slowly caramelize the onions, stirring occasionally, for about an hour. Low and slow is the best way to get a nice caramelization. Turn the heat to medium and add the garlic and mushrooms and ½ teaspoon salt and cover the pan. Cook for an additional 5 minutes to soften the mushrooms.
Meanwhile, butterfly the pork roast (***see my photos and instructions below). Sprinkle with ½ teaspoon salt. Spread the cooked filling over the pork and roll it up. Tie with cooking twine. Put onto a rimmed baking sheet and bake at 350 for 75-90 minutes or until the roast is 155 degrees when checked with a meat thermometer. Remove from the oven and cover with foil. It will come up to temp while resting.
While the pork is resting make the gravy. Melt the butter in a small saucepan over medium heat. Cook the garlic for 2 minutes. Add the chicken stock, marsala wine, and any drippings from the pork. Simmer for 5 minutes. Reduce heat to low and sprinkle the xanthan gum on top. Whisk well. At this point I like to use an immersion blender to help the gravy thicken and keep it from separating.
Slice the pork and serve with the gravy.
***Butterflying a roast is very easy. You are basically cutting a C shape into it. For the first cut you cut it horizontally starting ⅓ of the way down and cut it ¾ of the way through. Then you fold that flap over. For the next cut you cut into it from the other direction. Again you just cut ¾ of the way through it. What you end up with is a large flat piece of meat about ¾-1 inch thick.