PSeries Diagnostics Utility
Some early Pentium/486 based PC with PCI slots may not meet the minimum hardware requirements for a CardBus Adapter, this diagnostics utility allows you to test you PC for correct BIOS support. It also provides diagnostics for debugging installation problems. If you require technical support from Elan, please use it to gather information to send to our support team.
How To Run The Diagnostics Utility
From a DOS command line run the
pdiag.exe utility. It will generate large amounts of data on the screen, so the best way to view it
all is to pipe the output to a file using the command :
pdiag.exe > pdiag.txt
You can then view this file with any text editor like Notepad. If you need support with a problem, please be sure to send us this
pdiag.txt text file.
This utility is NOT compatible with Windows NT4/2000/XP/Linux. If you are using one of these operating systems, create a DOS bootable disk on a Windows 9x machine and copy the pdiag.exe program to this disk. Using this floppy disk, reboot the machine you wish to test. You will then be able to run the pdiag.exe program as described above.
You can create a DOS bootable floppy disk on a Windows 9x/Me or XP machine;
Open Windows Explorer, right click the mouse on the "A:" drive and select "Format...". Then, in Windows 9x&Me select
"Copy system files", or in Windows XP, select "Create an MS-DOS
startup disk" and click "Start".
Interpreting the Diagnostics Output
You will find that there is a large amount of information dumped from the PC into the
pdiag.txt text file, this may be useful to us here
at Elan for diagnosing problem PC's. The following extracts are some of the key points you can look out for...
The BIOS version of the PC is reported in the file like this:
Testing for "Real Mode" PCI BIOS support...
"Real Mode" PCI Bios version 2.10 detected.
The example above shows BIOS version 2.10, which should not give any problems, version 2.10 and later support all types of PCMCIA and CardBus
controllers (like our current range).
BIOS versions earlier than this (like 2.00), do not support CardBus controllers, but 16-bit PCMCIA controllers like the CL6729 (See our Legacy Models) should be OK.
BIOS IRQ Allocation During Boot
Problems can occur if no IRQ is allocated to the CardBus controller. If you have a CardBus adapter installed, looking further down the file, you should find and entry that looks like:
Bus 01 Device 05 Function 00 DeviceHandle: 0128
BaseClass: 06 SubClass: 07 Interface: 00 CardBus Bridge, PCIC Id: 0x84
Interrupt Line: FF Interrupt pin: A (No IRQ Allocated to device!)
You will notice that in this example, the BIOS has not allocated an IRQ to the device during boot. This means that the PSeries driver will have to fix this bug in the BIOS when it loads up with Windows during boot time.
BIOS IRQ Steering Function Support
Elsewhere in the file, the results of a test call to the BIOS is displayed. This will indicate if the BIOS supports steering of the IRQ (so the PSeries driver can rectify the problem above), you should see something like the following lines:
Testing PCI BIOS support for "Real Mode" calls to BIOS routine "Set PCI Hardware Interrupt"...
Testing Bus 1 Device 28 IntPin A...No IRQ allocated, trying routing table IRQ 3...Success: BIOS call supported
Notice the DeviceHandle is 128 which corresponds in the test for the device on PCI bus 1 Device 28 (the TI1420 CardBus controller). The results of the IRQ test indicates that it worked in this situation, this is no guarantee that the same code will work when Windows loads, as the PSeries driver requires that the BIOS interface is 32 bit and this test was done from 16 bit code, but at least the BIOS code to perform this function exists, so it's likely to work if a 32bit entry point can be found.
32 Bit BIOS Entry Point
The next requirement is the "BIOS32 Service Directory" entry point. This is required so that the PSeries device driver can call the BIOS to fix IRQ steering problems. Hopefully you should see this in the file:
Searching for "PCI BIOS32 Service Directory"...
PCI BIOS32 Directory found at F000:AE20
PCI BIOS32 Service Entry Point at F000:B290
PCI BIOS32 Revision 0x00
The numbers will be different, the important thing is that it exists! If there is no BIOS32 Directory entry point and you see the following result...
Testing Bus 1 Device 28 IntPin A...No IRQ allocated, trying routing table IRQ 3...BIOS call failed: 0x88
...for the IRQ steering test for the CardBus controller and all subsequent tests for the same device failed, then there could be problems! Some versions of Windows support hardware IRQ routing without calling the BIOS, so it may not necessarily cause a problem, but it's then down to if this OS support exists for the chipset on your motherboard.
PCI-to-PCI Bridge Problems
In the example above, the CardBus controller has been identified on the PCI bus, and the diagnostics program was able to read it's device identification number
PCIC Id: 0x84). If instead you see the value "0xFF" (
PCIC Id: 0xFF), then there likely to be a problem with a "Positive Decode" PCI-to-PCI
bridge. By default Windows operating systems do not support these types of PCI-to-PCI bridges, for more information see PCi-to-PCI Bridges.
Multiprocessor machines impose a different set of problems on IRQ steering. The IRQ routing controlled by a device called an IOAPIC, and Windows assigns the routing through this device based on the setup of the PC during boot time. As the PSeries driver loads after Windows switches into multiprossor mode it is not able to alter this routing in any way. So it is most important that the BIOS allocates the IRQ to the CardBus adapter during boot time. If the BIOS fails to allocate an IRQ, then there is nothing the PSeries driver can do to fix the problem. If you see the same result for a CardBus adapter as above (specifically the words "No IRQ Allocated to device") under "BIOS IRQ Allocation During Boot" for your Multiprocessor PC, then you're going to have problems with your adapter. For more information see Multiprocessor Machines.