Bienvenido! - Willkommen! - Welcome!

Bitácora Técnica de Tux&Cía., Santa Cruz de la Sierra, BO
Bitácora Central: Tux&Cía.
Bitácora de Información Avanzada: Tux&Cía.-Información
May the source be with you!

Saturday, June 23, 2012

HALs and halmacpi.dll

Error restoring a True image backup to a new hardware:
file halmacpi that is required for installation of device multiprocessor ACPI  id:(standard pc) in windows XP professional  can not be found
SysPrep Guide: Hardware Abstraction Layer (HAL)
Overview
The hardware abstraction layer (HAL) is a kernel level driver that provides an interface between the operating system and the system architecture. There are several HALs that Windows can use and they impact available features and performance depending on which systems they are used on. You can find the list below and some comments about them. Some of the HALs allow Windows to work on very different hardware, but now that x86 is the universal architecture for Windows computers the choice for a HAL is simplified a great deal. I will go into more detail after you browse through the HALs below.
 Available Hardware Abstraction Layers (HALs) 
Standard PC
DLL: hal.dll
Kernel: ntoskrnl.exe
PAE: ntkrnlpa.exe
This is the most primitive HAL and it supports all computers that are compatible with Windows 2000 and Windows XP. It does not support the advanced the programmable interrupt controller (APIC) architectures and does not provide APCI features including the configuration management and the advanced power management. You can use this on any computer, but at the cost of performance and features. More than likely you will never use this HAL.
Standard PC with C-Step i486 This is a primitive HAL that provides support for C-stepping on 486 processors. I am not sure what that is, but I am pretty sure it's old and I severely doubt you will ever use it.
Advanced Configuration and Power Interface (ACPI) PC
DLL: halacpi.dll
Kernel: ntoskrnl.exe
PAE: ntkrnlpa.exe
I find that this HAL is the best selection for an image that you want to be compatible on as many computers as possible. It should be noted that multiprocessor computers can use this HAL, however they will only make use of a single processor. This HAL can also be used with hyperthreading without any problem, but it will effectively disable hyperthreading because it is only designed for a single processor system.
ACPI Uniprocessor PC
DLL: halaacpi.dll
Kernel: ntoskrnl.exe
PAE: ntkrnlpa.exe
This HAL is designed for single processor computers that are not compliant with the multiprocessor system specficiations. This HAL will run on computers that are fairly new systems, such as all Pentium 4 based systems. However, I have found problems with duplicating this HAL onto some older Pentium 3 based systems. You can read about the ACPI standards by reading this and you can read about the core architecture modules here.
ACPI Multiprocessor PC
DLL: halmacpi.dll
Kernel: ntkrnlmp.exe
PAE: ntkrpamp.exe
This HAL is designed for multiprocessor computers that are not compliant with the multiprocessor system specficiations. It is rumored that you will receive about a 15% performance gain from using this HAL over the standard ACPI HAL when you have a hyperthreaded system, but I have not tested this yet. You can read about the ACPI standards by reading this and you can read about the core architecture modules here.
MPS Uniprocessor PC
DLL: halapic.dll
Kernel: ntoskrnl.exe
PAE: ntkrnlpa.exe
This HAL is designed for multiprocessor systems that have a single processor. You can read about the MPS standards by reading this. As far as I know this is only used by older Xeon based systems with a single processor.
MPS Multiprocessor PC
DLL: halmps.dll
Kernel: ntkrnlmp.exe
PAE: ntkrpamp.exe
This HAL is designed for multiprocessor systems that have multiple processors. You can read about the MPS standards by reading this. As far as I know this is only used by older Xeon based systems with multiple processors.
Compaq SystemPro Multiprocessor or 100% Compatible PC Designed for Compaq SystemPro multiprocessor systems. You will most likely never use this HAL.

Choosing a HAL

[...]
============================Source
Control Panel -DEvice Manager -Computer -ACPI Multiprocessor PC -Driver -update driver
Reboot
That should do it to make it a uniprocessor PC again. But I am not sure if that cures the sluggish behavior as it may not be the only cause.
------------------
change the acpi in the bios back to disabled/off?
HAL options after Windows XP or Windows Server 2003 Setup
should tell you how to force a reinstall of windows with a differetn hal.
------------------
Another way that may work is to create another hardware profile and get it to boot to that at the start, it should then auto detect everything and you'll have a backup profile just in case
------------------
by the way, you did try the normal method of going to
Device Manager -> ACPI multiprocessor PC and then using the update feature (tried selecting your own ? Advanced -> let me choose...). Since that way should work.
-------------------
Windows won't start (I think) if you just delete those files. The feature to change the HAL in Device Manager in XP is deliberately disabled by Microsoft - it works for previous versions of Windows but not for XP.
See troubleshoot HAL from Microsoft. Below you'll find the names of the relevant files for easier access.
You need to replace three files in the system32 folder then restart Windows. The best set of files can be found in the cab files from the XP redistributable SP2 (yes I know it's big) found at Microsoft. You can also use the files (already expanded) found in Windows/ServicePackFiles/i386 - this would be best if you have that folder and it contains the proper files.
It is still problematic to change these 3 files because they can have been updated by regular Windows updates. If you get Windows running after you change these 3 files it is best to manually run the Windows update process to see if MS will detect if these 3 files need further updating.
The article refers to Win2000 but it should apply equally to XP.
Folder winnt/system32 is changed to Windows/system32 for XP.
You can change these filenames from the Recovery Console - at the command prompt (at least I think you can). You need to be able to run Recovery Console from a Win install CD or have installed Recovery Console into Windows. Be sure you can successfully run the Recovery Console before you begin. Windows (online) help file has more info on how to run it or install it.
To make this easier you need to find the files with your operating copy of Windows first and put the files in place in the system32 folder with a changed name such as hal.new.dll, you'll be able to find them quicker. Be sure you know how to get the files extracted/expanded out of the .cab first, either with a built-in extractor such as that in the 7-zip app or by using the Windows provided extract/expand utility. I mention this because it is possible to end up with an un-expanded copy of the file. Check the extracted files with File|Properties in Explorer - good files will show the version info.
Just to be safe, copy your existing 3 files and keep them in case this process fails.
An alternative to hunting down the files from the cab files is just to find another running version of Windows with the uniprocessor files and then just copy them (like on a floppy).
The following is extracted from the url above:
 2. After you log on to your computer, from the %SystemRoot%\System32 folder of your original Windows 2000 installation,
use the command console to copy and rename the following files as noted in the following lists.
First determine which HAL and kernel files your computer requires by using the following list of supported computer types:
NOTE: Those marked with an asterisk character are Standard computer types (non-ACPI).
(You need only one of the following!)

i386 source file: i386\driver.cab\halmacpi.dll
Computer type: ACPI Multiprocessor PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

i386 source file: i386\driver.cab\halaacpi.dll
Computer type: ACPI Uniprocessor PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

i386 source file: i386\driver.cab\halacpi.dll
Computer type: Advanced Configuration and Power Interface (ACPI) PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

i386 source file: *i386\driver.cab\halsp.dll
Computer type: Compaq SystemPro Multiprocessor or 100% Compatible
Copy to this folder: winnt\System32
Rename to this file name: hal.dll
 
i386 source file: *i386\driver.cab\halapic.dll
Computer type: MPS Uniprocessor PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll
 
i386 source file: *i386\driver.cab\halmps.dll
Computer type: MPS Multiprocessor PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll
 
i386 source file: *i386\driver.cab\hal.dll
Computer type: Standard PC
Copy to this folder: winnt\System32
Rename to this file name: hal.dll
 
i386 source file: *i386\driver.cab\halborg.dll
Computer type: SGI mp
Copy to this folder: winnt\System32
Rename to this file name: hal.dll

3. As indicated in the following table, copy all the appropriate kernel files common for your system (Uniprocessor vs. Multiprocessor)
and the appropriate HAL file based on your computer supported computer type from the Windows 2000 CD-ROM (i386\driver.cab)
or installed service pack to the corresponding folder listed in the table under your original Windows 2000 installation,
and then rename them (if required) to Ntoskrnl.exe and Hal.dll, respectively.
Common Multiprocessor kernel files Copy to the following directory Rename to the following filename
----
i386\driver.cab\ntkrnlmp.exe winnt\System32 ntoskrnl.exe
i386\driver.cab\ntkrpamp.exe winnt\System32 ntkrnlpa.exe
(following 4 files are the same - don't need to copy )
(i386\driver.cab\kernel32.dll winnt\System32 kernel32.dll )
(i386\driver.cab\ntdll.dll winnt\System32 ntdll.dll )
(i386\driver.cab\win32k.sys winnt\System32\drivers win32k.sys )
(i386\driver.cab\winsrv.dll winnt\System32 winsrv.dll )
Common Uniprocessor kernel files Copy to the following directory Rename to the following filename
---
i386\driver.cab\ntoskrnl.exe winnt\System32 ntoskrnl.exe
i386\driver.cab\ntkrnlpa.exe winnt\System32 ntkrnlpa.exe
(following 4 files are the same - don't need to copy )
(i386\driver.cab\kernel32.dll winnt\System32 kernel32.dll )
(i386\driver.cab\ntdll.dll winnt\System32 ntdll.dll )
(i386\driver.cab\win32k.sys winnt\System32 win32k.sys )
(i386\driver.cab\winsrv.dll )
___________________________
So, for computer type: ACPI Uniprocessor PC
i386\driver.cab\halaacpi.dll -> windows\System32\hal.dll
i386\driver.cab\ntoskrnl.exe -> windows\System32 ntoskrnl.exe
i386\driver.cab\ntkrnlpa.exe -> windows\System32 ntkrnlpa.exe
The additional 4 files may or may not need to match, you may need to extract them also from the SP2 cab file. This is usually unnecessary.
Good luck! 
---------------------------
I think you are suggesting that Windows XP should detect that the CPU is now a single processor and then install and use the proper HAL.
I'll repeat: that function (reinstalling a different HAL) is deliberately disabled in XP. The only way to change the HAL is by manually installing the proper fileset or by wiping the disk and doing a full install. WinXP will never change the currently installed HAL no matter what CPU is detected and no matter what the BIOS says.
The Compaq BIOS may well be dumbed down and may be partly what has led to the current problem. While the motherboard may have been originally intended to support a multiprocessor, Compaq may have deliberately disabled that feature on the board supplied with that particular computer package in order to save costs.
Any XP install CD can be used to install XP. All that changes is the XP key and the key is not recorded on the disk. You can borrow any XP install CD and use it with your genuine XP key. You can use a 'burned' CD copy as well as an original CD. You do not violate your license by using a different XP install CD no matter the source.
------------------------------
Then how come I can select different HAL's if I do it on my Windows XP computer ?
And in the link I gave some posts up http://boinc.bakerlab.org/forum_thread.php?id=2264#26457 it says WindowsXP can (a limited choice in WinXP as opposed to any in Win2K)

You cannot switch between ACPI and non-ACPI in device manager in WinXP.

Extracted from the MS post:
4. On Windows XP and later versions, the ACPI Uniprocessor HAL and the MPS Uniprocessor HAL recognize the existence of more than one processor and report the MP ID. Plug and Play detects that the computer devnode's hardware ID list has changed and moves the devnode back through the "found new hardware" detection process. Therefore, when you add a second processor, the MP files (HAL and kernels) are automatically installed, and you do not have to manually update the driver in Device Manager
This has just not been my experience - XP SP2 will not do what item #4 says that it will. I believe that the article applies to (original release) vanilla XP and that XP SP2 changes this behavior - such that SP2 disables that feature more or less completely. I can testify that when I changed my processor from single to dual, XP SP2 did NOT change the HAL automatically nor was there an option to do so in Device Manager.
References to 'forcing' a particular HAL are only relevant when installing a fresh copy of Windows and possibly relevant when doing a 'repair' install.
There may still exist the ability to change the HAL if you started with a current 'Standard PC' HAL, although I can't verify that.
-----------------
You do need WinXP SP2 for dual core's to work properly.
-----------------
It a very current KB (Jul 2006) and is in refrence to all WinXP and Win2003.
Also I believe Bad Penguins initail try at running the X2 auto changed. It also auto detect for many other people. You do need WinXP SP2 for dual core's to work properly.
Though we are onto single cores now :-)
Bad Penguin, on the off chance you could try (if not already) putting AMD latest Sempron driver on
http://www.amd.com/us-en/assets/content_type/utilities/amdcpusetup.exe from http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_871_11686,00.html
The the other way is to setup boot.ini to load with a different HAL(used for testing normaly) though often used for this purpose:
 http://www.nforcershq.com/forum/1-vt12269.html?postdays=0&postorder=asc&&start=0 
============================
SysPrep Guide: Hardware Abstraction Layer (HAL)
============================
amdcpusetup.exe is known as Microsoft® Windows® Operating System and it is developed by MS .============================
Microsoft Knowledge Base Article - Q309283
http://support.microsoft.com/?kbid=309283
El Administrador de dispositivos de Windows XP y la lista del Administrador de dispositivos de Windows Server 2003 limitaban las opciones para cambiar el tipo de HAL al hacer clic en Actualizar controlador. El Administrador de dispositivos de Microsoft Windows 2000 le permite seleccionar cualquier tipo de HAL. Si selecciona una HAL incorrecta, es posible que no pueda iniciar Windows 2000 o que tenga otros problemas. Aunque las selecciones son limitadas, sólo debe cambiar la HAL si sabe con seguridad que la HAL seleccionada funciona en su sistema. Las opciones que se presentan aquí se sabe que son compatibles con la mayoría de los sistemas. No obstante, algunos sistemas pueden experimentar problemas.

Al instalar las siguientes HAL en un equipo basado en Windows XP o en Windows Server 2003, aparecen las siguientes opciones de HAL del Administrador de dispositivos:

"PC estándar ", HAL PIC no compatible con ACPI (Hal.dll)
PC estándar

"Equipo monoprocesador MPS", HAL UP APIC no compatible con ACPI (Halapic.dll)
PC estándar
Equipo monoprocesador MPS
Multiprocesador MPS

"Equipo multiprocesador MPS", HAL MP APIC no compatible con ACPI (Halmps.dll)
PC estándar
Multiprocesador MPS
"Interfaz avanzada de configuración y energía (ACPI)", HAL PIC ACPI (Halacpi.dll)
PC estándar
Equipo con Interfaz avanzada de configuración y energía (ACPI)

"Monoprocesador ACPI de PC", HAL UP APIC ACPI (Halaacpi.dll)
PC estándar
Equipo con Interfaz avanzada de configuración y energía (ACPI)
Monoprocesador ACPI
Multiprocesador ACPI

"Equipo multiprocesador ACPI", HAL MP APIC ACPI (Halmacpi.dll)
PC estándar
Equipo con Interfaz avanzada de configuración y energía (ACPI)
Multiprocesador ACPI
Multiprocesador MPS

Notas

  1. Un síntoma común al implementar la imagen incorrecta en un equipo es que la imagen de Sysprep deja de responder al reiniciar o informa del mensaje de error siguiente:
    Stop 0x0000007b
  2. Si se fuerza una HAL incorrecta durante la instalación o al utilizar una imagen de preparación del sistema (Sysprep), sólo podrá ver la lista correcta de HAL si realiza una nueva instalación de Windows XP o de Windows Server 2003. No puede cambiar a una HAL que no aparezca en el Administrador de dispositivos.
  3. El Administrador de dispositivos no permite el cambio de una HAL no compatible con ACPI a una HAL ACPI. Debe llevar a cabo una instalación nueva de Windows XP o de Windows Server 2003 para realizar este tipo de cambio. Cambie sólo de una HAL ACPI a una HAL no compatible con ACPI para solucionar problemas.
  4. En Windows XP y en versiones posteriores, la HAL monoprocesador ACPI y la HAL monoprocesador MPS reconocen la existencia de más de un procesador e informan del Id. del MP. Plug and Play detecta que la lista de identificadores de hardware de devnode ha cambiado y mueve el devnode hacia atrás a través del proceso de detección "Nuevo hardware encontrado". Por tanto, al agregar un segundo procesador, los archivos de MP (HAL y núcleos) se instalan automáticamente y no es necesario actualizar el controlador manualmente en el Administrador de dispositivos.
  5. Microsoft no admite la ejecución de una HAL distinta de la que instala normalmente el programa de instalación de Windows en el equipo. Por ejemplo, no se admite la ejecución de una HAL PIC en un equipo APIC. Aunque puede parecer que esta configuración funciona, Microsoft no la ha probado y es posible que tenga problemas de rendimiento e interrupciones. Microsoft tampoco proporciona soporte técnico para intercambiar los archivos que usa la HAL con el fin de cambiar manualmente los tipos de HAL.
  6. Microsoft recomienda que sólo se utilice el intercambio de HAL para solucionar problemas de hardware o de otro tipo.
  7. Al crear una imagen Sysprep, la imagen debe contener el tipo de HAL correcto para el equipo de destino. En la lista siguiente se describen los equipos en los que se puede implementar una imagen Sysprep concreta según el tipo de HAL del equipo de origen:
    • Puede implementar una imagen Sysprep creada en un equipo que utiliza PC estándar, HAL PIC no compatible con ACPI (Hal.dll) en un equipo que utilice los tipos de HAL siguientes:
      • PC estándar, HAL PIC no compatible con ACPI (Hal.dll)
    • Puede implementar una imagen Sysprep creada en un equipo que utiliza Equipo con Interfaz avanzada de configuración y energía (ACPI), HAL PIC ACPI (Halacpi.dll) en un equipo que utilice los tipos de HAL siguientes:
      • Equipo con Interfaz avanzada de configuración y energía (ACPI), HAL PIC ACPI (Halacpi.dll)
    • Puede implementar una imagen Sysprep creada en un equipo que utiliza Equipo monoprocesador MPS, HAL UP APIC no compatible con ACPI (Halapic.dll) en un equipo que utilice los tipos de HAL siguientes:
      • Equipo monoprocesador MPS, HAL UP APIC no compatible con ACPI (Halapic.dll)
      • Equipo multiprocesador MPS, HAL MP APIC no compatible con ACPI (Halmps.dll)
    • Puede implementar una imagen Sysprep creada en un equipo que utiliza Equipo multiprocesador MPS, HAL MP APIC no compatible con ACPI (Halmps.dll) en un equipo que utilice los tipos de HAL siguientes:
      • Equipo multiprocesador MPS, HAL MP APIC no compatible con ACPI (Halmps.dll)
      • Equipo monoprocesador MPS, HAL UP APIC no compatible con ACPI (Halapic.dll)
    • Puede implementar una imagen Sysprep creada en un equipo que utiliza Monoprocesador ACPI de PC, HAL UP APIC ACPI (Halaacpi.dll) en un equipo que utilice los tipos de HAL siguientes:
      • Monoprocesador ACPI de PC, HAL UP APIC ACPI (Halaacpi.dll)
      • Equipo multiprocesador ACPI, HAL MP APIC ACPI (Halmacpi.dll)
    • Puede implementar una imagen Sysprep creada en un equipo que utiliza Equipo multiprocesador ACPI, HAL MP APIC ACPI (Halmacpi.dll) en un equipo que utilice los tipos de HAL siguientes:
      • Equipo multiprocesador ACPI, HAL MP APIC ACPI (Halmacpi.dll)
      • Monoprocesador ACPI de PC, HAL UP APIC ACPI (Halaacpi.dll)
Nota: actualmente, las opciones del Administrador de dispositivos no muestran una versión de APIC de la HAL al cambiar la HAL en un sistema APIC. Aunque la HAL PIC que está instalada puede funcionar, puede seleccionar la versión de APIC preferida después de instalar una revisión para los equipos que ejecuten Windows Server 2003 con el Service Pack 1.

Para obtener más información acerca de la revisión para el Service Pack 1 de Windows Server 2003, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
923425  No puede bajar de nivel a una capa de abstracción de hardware que esté configurada para utilizar una controladora programable avanzada de interrupciones de un solo procesador cuando intenta cambiar el tipo de equipo utilizando el Administrador de dispositivos en Windows Server 2003
299340  Cómo forzar una Capa de abstracción de hardware durante una actualización o una instalación nueva de Windows XP
Source
The article referenced above Q309283 states the following:
HAL Options After Windows XP or Windows Server 2003 Setup
When you install the following HALs on a Windows XP-based or Windows Server
2003-based computer, the following device manager HAL options appear: (List
of 5-6 HAL types including the following:)
"ACPI Multiprocessor PC", ACPI APIC MP HAL (Halmacpi.dll)
Standard PC
Advanced Configuration and Power Interface (ACPI) PC
ACPI Multiprocessor
MPS Multiprocessor
Several choices are listed. The ACPI MP PC HALL noted above is my interest.
EACH HAL type listed has a unique .dll file associated with it.
The ACPI Mulitprocessor PC, ACPI APIC MP HAL above is 'Halmacpi.dll.'
Note: A Standard PC HAL is Hal.dll
Question: After a clean install of XP and forcing the ACPI MP PC HAL type
listed above, the XP Device Manager Driver Information indicates that
Halmacpi.dll is NOT install. Rather Hal.dll is installed. The Hal.dll is
installed when XP, again during a clean install, is allow to read the
system and select the correct HAL.

Concern 1 : IS the KB article incorrect? IF specific .dll files associated
with specific HALs are listed why are they not installed?
BIG Concern : Could it be that the .dll file installed has something to do
with WindowsXP NOT recognizing certain devices associated with the Intel
875P chipset; namely the link between the "Processor and the I/O
Controller" OR the link of "Processor to I/O Memory Interface - 257E"

No comments: