I’m working with a device that has a 128MB address window and only supports
32-bit addressing. The device itself is PCI-based, but it has been packaged
as an PCI express card with a PEX 8111 bridge chip handling the PCI to PCIe
conversion. Under Windows XP, if the device is plugged in when the system
boots the 128MB address window will be properly mapped (on some systems; on
others it fails regardless of whether the device is present at boot time or
not). If I plug it in after the computer has booted, however, the device
fails to start because of insufficient resources. I’m assuming that the
problem is that Windows is unable to reallocate resources to accommodate
such a large window after boot.
Under Vista, however, hot-plugging the device works fine.
I found a whitepaper from Microsoft, “Firmware Allocation of PCI Device
Resources in Windows”, which seems to explain most of this behavior. What
I’m wondering, though, is whether there is any way to make the device behave
better under Windows XP.
Has anyone ever had any success with this?
Thanks.
-John