Changing Windows 2003 from uniprocessor to multiprocessor on a virtual machine

Had a situation where a Windows 2003 virtual machine was installed with a single vCPU and I needed to add another vCPU to test a loading issue. Shutting the machine down and adding the second vCPU as normal I noticed that the virtual machine again restarted with task manager only showing 1 processor. Using Google didn’t help very much as the multi processor drivers are meant to be easy to select when needed(using device manager and the item under computer).

Eventually I foundĀ  this site http://theether.net/kb/100092 and this helped.

Basically download the devcon.exe application from http://support.microsoft.com/?id=311272

Then run the following commands from the folder that the devcon.exe application is.

SET HAL=ACPIAPIC_MP
devcon.exe sethwid @ROOT\PCI_HAL\0000 := !E_ISA_UP !ACPIPIC_UP !ACPIAPIC_UP !ACPIAPIC_MP !MPS_UP !MPS_MP !SGI_MPS_MP !SYSPRO_MP !SGI_MPS_MP
devcon.exe sethwid @ROOT\ACPI_HAL\0000 := !E_ISA_UP !ACPIPIC_UP !ACPIAPIC_UP !ACPIAPIC_MP !MPS_UP !MPS_MP !SGI_MPS_MP !SYSPRO_MP !SGI_MPS_MP
devcon.exe sethwid @ROOT\PCI_HAL\0000 := +%HAL%
devcon.exe sethwid @ROOT\ACPI_HAL\0000 := +%HAL%
devcon.exe update %windir%\inf\hal.inf %HAL%
devcon.exe ReScan

Shutdown and restart the virtual machine and the second processor will show up in task manager.