UpToMP upgrades NT for multi-processor mode

by Wayne Maples [Published on 20 April 2004 / Last Updated on 20 April 2004]

If your Windows NT was installed with a single processor, the appropriate single processor HAL and registry setting were used. You now want to add the 2nd processor. If you have Compaq hardware, you can run the Server support software, which you find in the NTSSD folder of your Compaq Smartstart CD. It will give you a list of hardware omponents, select the uniprocessor HAL and click the upgrade button. That's all there is to it. If you have Compaq hardware. If you don't have Compaq hardware, there are three methods to accomplish this (in order of preference):

  • Use Microsoft's uptomp.exe from the Microsoft Windows NT Server 4.0 Resource Kit. The UpToMP utility will insure that NT is updated with the correct kernel and SMP compatible HAL. Since the service packs include updated HALs, extract the latest applied service pack into a folder. When UpToMP askes for the location of your HAL, don't point it to the original NT installation disk but rather to where you extracted the latest SP.
  • Upgrading to Dual Processor NT 4.0/3.5x/TSE on i386.com has a manual upgrade process documented which takes advantage of %SYSTEMROOT%\repair\setup.log. When a service pack upgrade occurs, it uses the file listing here to determine which system files are present needing upgrading (at least in part). If you change the information in the setup.log to reflect the files found in the MP version of NT and re-apply your service pack, it will upgrade from uni-processor to dual processor mode for you. There are only 6 files different. The lines needing to change are: Note: there are many files in the [Files.WinNt] section - only the 6 critical files are listed]

    
    [Files.WinNt]
    \WINNT\system32\hal.dll = "halapic.dll","1e1bd"
    \WINNT\system32\kernel32.dll = "kernel32.dll","5f6d7"
    \WINNT\system32\ntdll.dll = "ntdll.dll","63a98"
    \WINNT\system32\win32k.sys = "win32k.sys","13c422"
    \WINNT\system32\winsrv.dll = "winsrv.dll","37b4e"
    \WINNT\system32\ntoskrnl.exe = "ntoskrnl.exe","e197b"
    
    Those six lines need to be changed to:
    
    [Files.WinNt]
    \WINNT\system32\hal.dll = "halmps.dll","1a01c"
    \WINNT\system32\kernel32.dll = "kernel32.dll","5f345"
    \WINNT\system32\ntdll.dll = "ntdll.dll","59c19"
    \WINNT\system32\win32k.sys = "win32k.sys","5f60a"
    \WINNT\system32\winsrv.dll = "winsrv.dll","301b3"
    \WINNT\system32\ntoskrnl.exe = "ntkrnlmp.exe","f52df"
    
    When you compare the list, you see that the CRC numbers for all the files changed. In fact, the CRC numbers above are for SP6a. If you are not upgrading to SP6a, you will have to check the setup.log on an MP box with the correct SP to get the proper CRC numbers. The CRCs change in each SP. Additionally you can see by comparing the before and after list, that the hal.dll used in uni-processor NT was halapic.dll and changed to halmps.dll and that the ntoskrnl.exe used changed from ntoskrnl.exe to ntkrnlmp.exe (that is single processor to mp versions).

    Make these changes. Set the attributes back to SHR, apply the SP, and reboot. Voila! your box is running MP. Note: If you compare my instructions to those at mpseasy.htm, there is an extra file listed, the winsrv.dll. Not sure why. Mine work on both workstation and server. Again, let me emphasize, the CRC values listed are for SP6a. I now prefer this method. Its definitely NOT recommended by Microsoft. Its the fastest. This method has a BIG advantage if you need to upgrade a bunch of servers or workstations quickly. If you are not sure of everything in this tip, stick to the uptomp method.

  • Perform an installation update - I have seen reports of this not working correctly. I suspect its related to using the original Windows NT installation disks with the rather old HALs found there.
  • Manually replace the HAL and update the appropriate registry entries. The process is documented in this kb article.

See Also

Featured Links