A couple of weeks ago I did a design review. During this review we discussed the process of reverting your “HAL”, on a Microsoft machine, from multi cpu to single cpu. The customer just emailed me a script that can automate this for you. After some googling I noticed that Mike Laverick already wrote an article on this well over two years ago, which also contains this script. (more or less the same) Still I would like to share this with you guys:

@echo off

:D RIVER_HAL_UPDATE
SET HAL=

IF %NUMBER_OF_PROCESSORS%==1 (
devcon.exe /find @ROOT\ACPI_HAL\0000 | find /i “Multiprocessor” > NUL && SET HAL=ACPIAPIC_UP
devcon.exe /find @ROOT\PCI_HAL\0000 | find /i “Multiprocessor” > NUL && SET HAL=MPS_UP
) ELSE (
devcon.exe /find @ROOT\ACPI_HAL\0000 | find /i “Uniprocessor” > NUL && SET HAL=ACPIAPIC_MP
devcon.exe /find @ROOT\PCI_HAL\0000 | find /i “Uniprocessor” > NUL && SET HAL=MPS_MP
)

IF NOT “%HAL%”==”" (
ECHO.
ECHO —————————————-
ECHO Installing %HAL% HAL
ECHO —————————————-
ECHO.

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

ECHO.
ECHO —————————————-
ECHO Rebooting
ECHO —————————————-
ECHO.
devcon.exe Reboot
) ELSE (
ECHO.
ECHO —————————————-
ECHO Correct HAL Detected
ECHO —————————————-
ECHO.
)
GOTO :EOF

There’s a topic on VMTN about this, read it. You need the Microsoft DevCon util, which is part of the support tools, for more info on devcon click here. Mike Laverick’s paper can be found here. Thanks for pointing this out Xing.