How to enable multiple processors on XP SP 3?

13

13

I've got a Lenovo n100 laptop that's 3 years old. It dual boots the original Windows XP that came with it and Ubuntu, and I just now noticed that the XP installation, on the Task Manager, only shows 1 CPU.

The device manager does show 2 processors (it's a core duo T2300), but it looks like one of them isn't being used. Googling showed that SP2 needed a specific hot fix to enable this, but nothing shows up on SP3, and when I downloaded the said hot fix it refuses to install, saying I have a newer solution.

(Just to make things clear, I checked and it's not that Task Manager shows all CPUs in the same graph.)

Does anyone know how to fix this?

abyx

Posted 2009-12-18T13:59:40.810

Reputation: 465

Answers

5

Run the msconfig utility, go to the BOOT.INI tab, then click Advanced.

The NUMPROC checkbox should be unchecked to use all processors.
As a test, try to check it and see what does the drop-down list contain.
If it contains only the value 1, then something is really wrong.

image

NOTE : This answer is from 2009, please treat it with respect for its old age.
Especially : No downvotes, please.

harrymc

Posted 2009-12-18T13:59:40.810

Reputation: 306 093

Note that this will not work if the machine had only one CPU at install time, because then Windows activated a different kernel that does not support multiple CPUs. If that's your situation, use dbagshaw's answer instead, which works great. – jlh – 2019-12-07T13:59:00.187

Then the question is why it needs to be explicitly set since it should not need to. Maybe it is a driver issue? Maybe the Computer entry in Device Manager is incorrect? – Synetech – 2011-02-21T18:18:53.413

@Synetech inc.: I don't think you will get more info out of a 2-months old post. – harrymc – 2011-02-21T18:22:45.360

@harrymc, maybe, maybe not; two months is not an eternity. Besides, SE sites can send notifications of updates. Also, the OP is not necessarily the only person in the world who could end up on this page with this issue. – Synetech – 2011-02-21T18:28:24.573

It's unchecked, and checking it does show 2 CPUs. Any other ideas? – abyx – 2009-12-18T15:52:07.013

1@abyx: try checking the /NUMPROC box and specifically selecting the 2 CPU option. reboot. does that allow use of both cores? – quack quixote – 2009-12-18T17:19:10.850

@~quack - that did the trick! – abyx – 2009-12-19T11:22:57.063

I think you need to check @TechMedicNYC response. It might be useful to you – Eugenio Miró – 2014-01-20T20:58:13.217

@EugenioMiró: This is an old thread dating from 2009. – harrymc – 2014-01-21T08:06:13.190

23

This has worked for us (from: http://www.pcreview.co.uk/forums/change-hal-out-reinstall-t2562052.html ):

  1. Disable driver signing (My Computer > Properties > Hardware...)

  2. Run this command line exactly:

    rundll32 syssetup,SetupInfObjectInstallAction ACPIAPIC_MP_HAL 128 %windir%\inf\hal.inf
    

dbagshaw

Posted 2009-12-18T13:59:40.810

Reputation: 331

This worked when I visualized a physical machine from our backups. – Jeff F. – 2015-03-04T18:15:25.367

this worked on an old XP VM, I didn't need to disable driver signing either! – Jeff Atwood – 2015-12-31T09:36:48.140

This is the best answer. – Igor Levicki – 2018-05-22T07:05:06.240

12 restarts required and everything works like a charm - thanks!!! – Matthias Hryniszak – 2012-06-09T22:57:19.007

8

This worked for me (VirtualBox XP Pro)...

1) Go into c:\windows (your install path), search for sp3.cab. Open this cab file with 7-zip (although explorer may be able to natively open the file, if it can't then download 7-zip from sourceforge).

2) a) Extract halmacpi.dll to c:\windows\system32

b) Extract ntkrnlmp.exe to c:\windows\system32

3) Edit c:\boot.ini

Note: You will need to uncheck the Read-only property so you can save your changes. Set back to Read-only once complete.

Copy the line that looks like this:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=OptIn

Make the copied entry look like this:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP MultiCore" /fastdetect /NoExecute=OptIn /kernel=ntkrnlmp.exe /hal=halmacpi.dll

Now you have a dual-boot option to utilize single or multicore (TaskManager will show two CPU graphs if this was successful). If multicore boots and works properly, then you can delete the single core entry from boot.ini.

James

Posted 2009-12-18T13:59:40.810

Reputation: 423

Late to the comment party, but yes, backups are always a good idea! Just copy it to boot.ini.orig or something similar. But yes, if you hose it you'll need some sort of recovery tool. A linux live CD image will work well, just mount it as your CD device in VirtualBox. – James – 2015-02-11T22:41:00.607

If you see the following error message on boot: Windows could not start because the following file is missing or corrupt: <Windows root>\system32\hal.dll. Please re-install a copy of the above file. then... despite the error saying that hal.dll is missing you forgot to copy the halmacpi.dll and ntkrnlmp.exe files to the C:\Windows\System32 folder. These can also be copied from the C:\Windows\ServicePackFiles\i386 folder. – AlwaysLearning – 2016-01-30T00:41:25.287

This hint left me locked out. I had to remove halmacpi.dll and ntkrnlmp.exe from c:\windows\system32 and then restore boot.ini from boot.ini.backup. Fortunately Paragon's NTFS driver for Mac let me mount and change the Windows hard drive. I'm on OS X El Capitan and using VMware 8.1.0. – Foliovision – 2017-07-09T10:40:08.147

I'm curious, how exactly does this work? What does adding /kernel=ntkrnlmp.exe /hal=halmacpi.dll do to force it to show all of the CPU cores? Welcome to Super User, by the way :) – nhinkle – 2013-04-25T05:16:40.330

From what I understand, this forces Windows to use the multi-core kernel: ntkrnlmp.exe and hardware abstraction layer: halmacpi.dll. It's likely the system was installed using single-core kernel and HAL. – James – 2013-07-06T16:43:40.657

+1 for this one! I found this very useful. I just have to mention I made a mistake when editing boot.ini and my VM went unusable (needed to edit boot.ini using the host OS to recover it) so edit carefully! – Eugenio Miró – 2014-01-20T20:56:21.520

4

Here's another possibility.

Do you have installed the uniprocessor or multiprocessor version of XP?

Uniprocessor systems have as kernel ntoskrnl.exe, while multiprocessor systems have ntkrnlmp.exe in C:\WINDOWS\system32.

Also in Device Manager, expand Computer. You should see "ACPI Multiprocessor PC". If you're seeing "Advanced Configuration and Power Interface (ACPI) PC" then this is wrong.

What do you see?
If either of the above two checks are wrong, you'll have to reinstall XP.

harrymc

Posted 2009-12-18T13:59:40.810

Reputation: 306 093