This article was previously published under Q148501
On your Intel-based (x86-processor-based) computer running Windows NT,after you add another PCI device, the system stops responding (hangs) orthe PCI device may fail to operate.
The Windows NT Hardware Abstraction Layer (HAL) HAL assigned an I/O portaddress or memory resource for the new PCI device that overlaps with anexisting PCI device therefore causing a PCI resource conflict on yoursystem.
Under normal operation, the system BIOS is responsible for setting the PCIdevice resource requirements. When Windows NT loads, the Windows NT HALsometimes moves the PCI device resources. PCI devices are dynamicallyconfigurable. However, the Windows NT HAL sometimes assigns overlapping I/Oport addresses or memory resources for the PCI devices.
To resolve this problem, upgrade to Windows NT 4.0 and follow theinstructions under Windows NT 4.0 Upgrade Information below. To work aroundthis problem use one of the workarounds below.
Windows NT 4.0 Upgrade Information
Under Windows NT 4.0, an option has been added to the BOOT.INI file thatthe x86-based HALs can recognize. Note that only those HALs shipped byMicrosoft will recognize this switch. When a HAL recognizes the /PCILOCKswitch (option), the HAL does not allow the operating system to changethe PCI device resources as long as the system BIOS settings appear tobe correct and complete.
If the adding of a PCI adapter causes a hang during boot, remove theoffending PCI adapter card. Reboot the system and modify the BOOT.INIfile by adding the /PCILOCK option. Shut down the system, add the newadapter card, and reboot the system.
The Windows NT 4.0 HALs that currently have this fix in are: HAL.DLL,HALMPS.DLL, and HALAPIC.DLL.
To work around this problem, do one of the following:
Insert the PCI adapter cards to a different PCI slot. This option does not apply to PCI devices built in to the main system board (motherboard).
Change the driver load order for the conflicting PCI adapters. This is not always possible when the types of drivers loaded have to be in a pre-determined order. Be very careful when modifying the registry as an incorrect setting may cause the system to become unstable or unbootable.
Microsoft has confirmed this to be a problem in Windows NT versions 3.5 and3.51. Microsoft has corrected this problem in Windows NT 4.0 and in thelatest Windows NT 3.51 U.S. Service Pack. For information on obtaining theService Pack, query on the following word in the Microsoft Knowledge Base(without the spaces):
S E R V P A C K
When you write device drivers for Windows NT, remember that the call toHalAssignSlotResources is the API that moves the PCI resources. Somedrivers use IoReportResourceUsage, as a HalAssignSlotResources alternative,with the current resource settings obtained from the configuration space ofthe PCI device. The calls to HalGetBusData and HalGetBusDataByOffset can beused to read the PCI device configuration space. This method should only beused as a last resort as it contradicts the purpose of having a dynamicallyconfigurable bus.