hal.dll issue

J

JasonB

When the XP Embedded build I'm using fully boots up, I get a non-modal dialog
window stating:

"The file halaacpi.dll on Windows XP Professional Service Pack 2 CD is
needed. Type the path of the file..."

If I ignore the dialog box or hit cancel on it, the OS works ok. The dialog
only appears once on boot up.

I've tried playing with the BIOS settings. If I turn on hyperthreading, it
requests halmacpi.dll. The device manager correctly shows 2 processors when
hyperthreading is turned on and 1 if its turned off.

The build was done using the ACPI Uniprocessor PC component.

I did try providing the requested dll. After that it failed to boot up and
I had to rebuild on the flash drive.

Any ideas on how to tell if I have the right hal.dll setup and how to
resolve the condition causing the dialog box?
 
J

JasonB

I think so - given that it chose the ACPI Uniprocessor component when I built
the image. Here is the PMQ file that I used:

<HIB>
<TOOLINFO>
<PLATFORM>Microsoft DOS</PLATFORM>
<TOOL>Target Analyzer Probe Version 1.9</TOOL>
<TOOLOPTIONS>/o devices.pmq</TOOLOPTIONS>
<TIMESTAMP>2007-01-26, 11:06:17AM</TIMESTAMP>
</TOOLINFO>
<DEVICES Version="1.0">
<CATEGORY Name="DOS" >
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >ACPI\GenuineIntel_-_x86_Family_15_Model_4</DEVICEID>
<DEVICEID Order="2" >*GenuineIntel_-_x86_Family_15_Model_4</DEVICEID>
<DEVICEID Order="3" >ACPI\GenuineIntel_-_x86_Family_15</DEVICEID>
<DEVICEID Order="4" >*GenuineIntel_-_x86_Family_15</DEVICEID>
<DEVICEID Order="5" >ACPI\GenuineIntel_-_x86</DEVICEID>
<DEVICEID Order="6" >*GenuineIntel_-_x86</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
<DEVICEID Order="1" >ACPI\Processor</DEVICEID>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0A03</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0C01</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0000</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0200</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0100</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0B00</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0303</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0800</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0C04</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0501</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0501</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0401</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0700</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*INT0800</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >*PNP0F13</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
<DEVICE ConfigFlags="0" >
<HARDWAREIDS>
<DEVICEID Order="1" >ACPIAPIC_MP</DEVICEID>
</HARDWAREIDS>
<COMPATIBLEIDS>
</COMPATIBLEIDS>
</DEVICE>
</CATEGORY>
</DEVICES>
</HIB>
 
S

Sean Liming \(MVP\)

Looking at the listing, ACPIAPIC_MP is for ACPI Multiprocessor PC. You might
be using the wrong HAL for the system.

Did you import the PMQ file into Component Designer?
Did you run Target Analyzer in DOS or in Windows XP?

--
Regards,

Sean Liming
www.sjjmicro.com / www.seanliming.com
Book Author - XP Embedded Advanced, XP Embedded Supplemental Toolkit
 
J

JasonB

I imported the PMQ file into Target Designer. Target Analyzer was run in
Windows XP.

If I have hyper-threading turned on, shouldn't I be using the ACPI
Multiprocessor PC HAL?

thanks for your help,
Jason
 
S

Sean Liming \(MVP\)

The answer is yes. Use the same one TAP found.

In your first post you mentioned you had the ACPI Uniprocessor PC, but the
system was asking for the halmacpi.dll file. halmacpi.dll is for the ACPI
Multiprocessor PC, which is a different HAL component. The PMQ file shows
the ACPI Multiprocessor PC is the correct one for the system. You should be
able to use ACPI Multiprocessor PC whether hyperthreading is turned on or
off.

--
Regards,

Sean Liming
www.sjjmicro.com / www.seanliming.com
Book Author - XP Embedded Advanced, XP Embedded Supplemental Toolkit
 
J

JasonB

The confusing part is if I turn hyperthreading off in the BIOS, it asks to
install halaacpi.dll. So its either asking for halaacpi.dll or halmacpi.dll
depending on hyperthreading being disabled/enabled.

I would think that I would have one of the two installed.

I'll try rebuilding the image the the ACPI Multiprocessor PC component and
see if that resolves the issue.

thanks,
Jason
 
W

Warren

JasonB said:
When the XP Embedded build I'm using fully boots up, I get a non-modal dialog
window stating:

"The file halaacpi.dll on Windows XP Professional Service Pack 2 CD is
needed. Type the path of the file..."

If I ignore the dialog box or hit cancel on it, the OS works ok. The dialog
only appears once on boot up.

I've tried playing with the BIOS settings. If I turn on hyperthreading, it
requests halmacpi.dll. The device manager correctly shows 2 processors when
hyperthreading is turned on and 1 if its turned off.

The build was done using the ACPI Uniprocessor PC component.

I did try providing the requested dll. After that it failed to boot up and
I had to rebuild on the flash drive.

Any ideas on how to tell if I have the right hal.dll setup and how to
resolve the condition causing the dialog box?
 
W

Warren

Hyperthreading Problems in Windows NT 2000 XP after processor upgrade
________________________________________
If you installed Windows NT with a single processor, and are upgrading to a
HT (hyper threading), dual-core or quad-core processor, you are in trouble.
Both Intel and Microsoft are very un-informative of this problem, which is
strange as I'll later explain has a very simple solution. It could be that
they aren't aware of it, but this has to have a high instance of occurrence
and is very apparent (it can cause up to an 80% performance hit). Anyway, if
you install NT (pretty much any flavor), it installs either a single or
multiprocessor kernel and HAL driver as to what it sees. Now, if you upgrade
this processor for speed or cache, this is "plug-n-play" within this class of
processor, but will not change from single to multi on it's own.

The problem is that if you upgrade to an HT (Hyper-threading) or a dual or
quad (multi) core processor, the kernel and HAL can't deal with them. I
believe it screws them up enough that they put the processor into 386 mode.
The correct files were not loaded in the initial NT install, the problem is
not reported in any way, and if you go into Device Manager, it shows 2
processors (if it only shows one, but you know your multi, check that HT or
multi is enabled in BIOS Setup) . The evidence that this is occurring is to
CTL-ALT-DEL to Task Manager, then tab Performance, if you see only one CPU
graph, you have this problem.

The solution is to get these files from your last service pack (Very
important that the files match you present Service Pack Level), by
downloading the entire file (choose to install to multiple computers, {link
to
XPsp2}http://www.microsoft.com/downloads/...BE-3B8E-4F30-8245-9E368D3CDB5A&displaylang=en
), save it to a Dummy location, use WinZip or equivalent to unzip it, and
find halmacpi.dll, copy it to you desktop, and rename it hal.dll. Then go
back to your dummy, and find ntkrnlmp.exe, copy it to your desktop, and
rename it to ntoskrnl.exe (Do not use the files halnacpi.dl_ or
ntkrnlmp.ex_). Then copy both files to your c:\{windows}\system32 folder,
choosing yes for overwrite. Reboot, once in Windows it will find new devices
and want to reboot, do so. This next boot should be staggeringly faster than
before.

That’s it.

REMEMBER: Very important to do this exactly as described or you'll be
reinstalling, which by the way, will also correct the problem.

Results: Performed on 12 units of four different flavors, all successful.
Some were HT, some were Dual Core.

Note for IT Types: This problem will also happen if you use an NT image from
a single processor unit to populate a drive on a multi-processor unit. That's
how I stumbled on this problem in the first place.
 
I

Itziar Balenciaga

I've tried downloading from that link but I can just find a .exe file(WindowsXP-KB835935-SP2-ENU.exe). When I look inside it there are just halnacpi.dl_ and ntkrnlmp.ex_ but no halnacpi.dll and ntkrnlmp.exe. Is the link OK or can I use those files?
Thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top