In a large skillet set over medium heat, cook the diced bacon for 2 minutes, stirring frequently.
Stir in the diced onions and cook for 3 minutes.
Add the chopped mushrooms and continue to cook for 5 more minutes.
Stir in the garlic; cook for 15 seconds.
Add baby spinach, season with salt and pepper, and cook for 2 minutes, or until spinach is wilted.
Remove from heat and set aside.
Butterfly the pork loin: Place the pork roast fat side up, with the short end toward you.Grab a sharp knife and position knife about ¾-inch from the bottom of the roast; cut through the pork loin horizontally, cutting toward the center of the pork, and leaving about 1-inch uncut. Spread the pork open like a book.
Cover pork with plastic wrap and pound with a meat mallet until it is about 1-inch thick.
Season the pork with salt and pepper.
Spread cream cheese all over the top of the pork.
Top with prepared spinach filling.
Roll up pork loin tightly, and secure with kitchen twine in two-inch increments.
Rub the outside of the roast with oil and season with garlic powder, rosemary, and paprika. Sprinkle with salt, if desired.
Transfer pork to a roasting pan.
Place in the oven and reduce temperature to 325˚F.
Roast for about 1 hour and 20 minutes, or until internal temperature of the pork registers at 145˚F. Baste a few times with the pan juices while it cooks. Start checking for doneness at around the 1-hour mark.
Remove from oven and transfer pork to a cutting board.