17

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?

4 Answers 4

7

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.

9
  • It's unchecked, and checking it does show 2 CPUs. Any other ideas?
    – abyx
    Dec 18, 2009 at 15:52
  • 1
    @abyx: try checking the /NUMPROC box and specifically selecting the 2 CPU option. reboot. does that allow use of both cores? Dec 18, 2009 at 17:19
  • @~quack - that did the trick!
    – abyx
    Dec 19, 2009 at 11:22
  • 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
    Feb 21, 2011 at 18:18
  • 1
    @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
    Feb 21, 2011 at 18:28
27

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
    
5
  • 3
    2 restarts required and everything works like a charm - thanks!!! Jun 9, 2012 at 22:57
  • This worked when I visualized a physical machine from our backups.
    – Jeff F.
    Mar 4, 2015 at 18:15
  • 2
    this worked on an old XP VM, I didn't need to disable driver signing either! Dec 31, 2015 at 9:36
  • 1
    This is the best answer. May 22, 2018 at 7:05
  • This may work for virtual machines, but I'd advice caution for physical machines. My computer wouldn't boot in any mode after doing this, and there's no obvious way to undo whatever it did.
    – spacer GIF
    May 29, 2021 at 3:58
9

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.

6
  • 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
    Apr 25, 2013 at 5:16
  • 1
    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
    Jul 6, 2013 at 16:43
  • +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! Jan 20, 2014 at 20:56
  • 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
    Feb 11, 2015 at 22:41
  • 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. Jan 30, 2016 at 0:41
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.

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .