quyq
2010-02-04 20:04:01 UTC
I didn't find much clue from Internet about this error code.
I'm working on a driver for a PCIe device. The driver works fine on our
setup but it does not work on two setup at remote sites. The scenario is:
The host is a HP XW4600 with Windows XP SP3 installed.
The driver is able to be installed without any problem.
However, our test code can only correctly access the device in a very short
period right after the driver installed.
Farther more, I did a test like this: from device manager, disable the PCIe
device, then enable it. For IRP_MN_START_DEVICE, my driver will setup a
complete routine and then invoke IoCallDriver to forward this Irp to bus
driver. But the returned Irp status is 0xC000009E, i.e.
STATUS_DEVICE_POWER_FAILURE. The device will disappear from the control panel
device list right after I enable it. If I do a scan for hardware then it will
show up in the device list again. And this time, there is no power failure
error returned. As I mentioned above, test code can access the device right
at this point but will not work after a short period.
Our PCIe driver is really simple, it does not directly handle any IRP
related to power management. All such IRP will be forward to low level bus.
I'm suspecting this is a hardware defect. Our remote site already tried to
test it with same model PC as we used. They also tried two PCIe device setup
but the result is same.
Any suggestion for what could go wrong? BTW, the PCIe device has it own
power supply, so current should not be a problem. The device is a FPGA with
3rd party's IP.
Thanks in advance.
I'm working on a driver for a PCIe device. The driver works fine on our
setup but it does not work on two setup at remote sites. The scenario is:
The host is a HP XW4600 with Windows XP SP3 installed.
The driver is able to be installed without any problem.
However, our test code can only correctly access the device in a very short
period right after the driver installed.
Farther more, I did a test like this: from device manager, disable the PCIe
device, then enable it. For IRP_MN_START_DEVICE, my driver will setup a
complete routine and then invoke IoCallDriver to forward this Irp to bus
driver. But the returned Irp status is 0xC000009E, i.e.
STATUS_DEVICE_POWER_FAILURE. The device will disappear from the control panel
device list right after I enable it. If I do a scan for hardware then it will
show up in the device list again. And this time, there is no power failure
error returned. As I mentioned above, test code can access the device right
at this point but will not work after a short period.
Our PCIe driver is really simple, it does not directly handle any IRP
related to power management. All such IRP will be forward to low level bus.
I'm suspecting this is a hardware defect. Our remote site already tried to
test it with same model PC as we used. They also tried two PCIe device setup
but the result is same.
Any suggestion for what could go wrong? BTW, the PCIe device has it own
power supply, so current should not be a problem. The device is a FPGA with
3rd party's IP.
Thanks in advance.