Meanwhile, melt the butter in a large ovenproof skillet over medium-high heat. Add the ham, onion, garlic and 1/2 teaspoon each salt and pepper. Cook, stirring occasionally, until the onion is translucent, about 4 minutes. Add the mushrooms; cook until tender, about 5 minutes. Add the flour and cook, stirring, until incorporated, 1 minute.
Gradually add the milk to the skillet, stirring until smooth. Bring to a simmer and cook, stirring, until thick and creamy, about 3 minutes; remove from the heat.
Add the pasta to the boiling water and cook until al dente, about 4 minutes. Reserve 1/2 cup of the cooking water, then drain the pasta and add to the skillet with the sauce.
Add the havarti, parsley and 3 tablespoons parmesan to the skillet and toss using tongs. If the sauce seems thick, gradually add the reserved cooking water to loosen. Sprinkle with the remaining 3 tablespoons parmesan. Broil until bubbly, about 4 minutes.