From: quyq on 4 Feb 2010 15:04 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.
From: Maxim S. Shatskih on 4 Feb 2010 15:15 > 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. Is it a KMDF driver? -- Maxim S. Shatskih Windows DDK MVP maxim(a)storagecraft.com http://www.storagecraft.com
From: quyq on 5 Feb 2010 16:04 No, it's not. The driver is updated from an old WDM driver that we developed about five years ago. The driver basically just provide user space application to access resource on the PCIe device. Here is psedu log when the device is enabled: DriverEntry -begin DriverEntry -end AddDevice -begin AddDevice -end DispatchPnp begin, MinorFunction IRP_MN_QUERYLEGACY_BUS_INFORMATION DispatchPnp end with STATUS_NOT_SUPPORTED DispatchPnp begin, MinorFunction IRP_MN_FILTER_RESOURCE_REQUIREMENTS: DispatchPnp end with STATUS_SUCCESS DispatchPnp begin, MinorFunction IRP_MN_START_DEVICE IrpCompleteRoutine return Return status is 0xc000009e: STATUS_DEVICE_POWER_FAILURE With good setup, the last line of above log should be STATUS_SUCCESS. Note, for above IRP, our driver only handle the START_DEVICE one. So I don't think the STATUS_NOT_SUPPORTED for the query IRP is a problem. Thanks. "Maxim S. Shatskih" wrote: > > 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. > > Is it a KMDF driver? > > -- > Maxim S. Shatskih > Windows DDK MVP > maxim(a)storagecraft.com > http://www.storagecraft.com > > . >
From: Pavel A. on 6 Feb 2010 16:16 Do you get this status from some driver below yours, after passing the IRP_MN_START_DEVICE down the stack? WinXP does not know what is PCIe, so it should not be something specific to PCIe. Except if this indeed is a hardware failure, which the pci bus driver detects in a generic way. For example, _if_ it tries to set the power state register in the config space to D0, but the read-back value is unexpected. --pa "quyq" <quyq(a)discussions.microsoft.com> wrote in message news:76D21A5E-0F9A-43F8-B346-B2E183EF4E74(a)microsoft.com... > No, it's not. The driver is updated from an old WDM driver that we > developed > about five years ago. The driver basically just provide user space > application to access resource on the PCIe device. Here is psedu log when > the > device is enabled: > DriverEntry -begin > DriverEntry -end > AddDevice -begin > AddDevice -end > DispatchPnp begin, MinorFunction IRP_MN_QUERYLEGACY_BUS_INFORMATION > DispatchPnp end with STATUS_NOT_SUPPORTED > DispatchPnp begin, MinorFunction IRP_MN_FILTER_RESOURCE_REQUIREMENTS: > DispatchPnp end with STATUS_SUCCESS > DispatchPnp begin, MinorFunction IRP_MN_START_DEVICE > IrpCompleteRoutine return > Return status is 0xc000009e: STATUS_DEVICE_POWER_FAILURE > > With good setup, the last line of above log should be STATUS_SUCCESS. > Note, for above IRP, our driver only handle the START_DEVICE one. So I > don't > think the STATUS_NOT_SUPPORTED for the query IRP is a problem. > Thanks. > > "Maxim S. Shatskih" wrote: > >> > 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. >> >> Is it a KMDF driver? >> >> -- >> Maxim S. Shatskih >> Windows DDK MVP >> maxim(a)storagecraft.com >> http://www.storagecraft.com >> >> . >>
From: quyq on 8 Feb 2010 15:06 Yes, the status is returned from driver below ours. I guess it is Microsoft's PCI bus driver. I also studied some Microsoft document(white paper) that claimed windows XP will treat PCIe device same way as PCI. AFAIK, our PCIe device does not need any special configuration for power state. The weird thing is sometimes the windows XP bus driver can successfully start the device without any error returned, but after several seconds our application will lost the accessibility to the device. We are also suspecting some float hardware pin is causing problem. I'm trying to get the h/w from our remote site. "Pavel A." wrote: > Do you get this status from some driver below yours, after passing the > IRP_MN_START_DEVICE down the stack? > WinXP does not know what is PCIe, so it should not be something specific to > PCIe. > Except if this indeed is a hardware failure, which the pci bus driver > detects in a generic way. > For example, _if_ it tries to set the power state register in the config > space to D0, > but the read-back value is unexpected. > --pa > > > "quyq" <quyq(a)discussions.microsoft.com> wrote in message > news:76D21A5E-0F9A-43F8-B346-B2E183EF4E74(a)microsoft.com... > > No, it's not. The driver is updated from an old WDM driver that we > > developed > > about five years ago. The driver basically just provide user space > > application to access resource on the PCIe device. Here is psedu log when > > the > > device is enabled: > > DriverEntry -begin > > DriverEntry -end > > AddDevice -begin > > AddDevice -end > > DispatchPnp begin, MinorFunction IRP_MN_QUERYLEGACY_BUS_INFORMATION > > DispatchPnp end with STATUS_NOT_SUPPORTED > > DispatchPnp begin, MinorFunction IRP_MN_FILTER_RESOURCE_REQUIREMENTS: > > DispatchPnp end with STATUS_SUCCESS > > DispatchPnp begin, MinorFunction IRP_MN_START_DEVICE > > IrpCompleteRoutine return > > Return status is 0xc000009e: STATUS_DEVICE_POWER_FAILURE > > > > With good setup, the last line of above log should be STATUS_SUCCESS. > > Note, for above IRP, our driver only handle the START_DEVICE one. So I > > don't > > think the STATUS_NOT_SUPPORTED for the query IRP is a problem. > > Thanks. > > > > "Maxim S. Shatskih" wrote: > > > >> > 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. > >> > >> Is it a KMDF driver? > >> > >> -- > >> Maxim S. Shatskih > >> Windows DDK MVP > >> maxim(a)storagecraft.com > >> http://www.storagecraft.com > >> > >> . > >>
|
Pages: 1 Prev: Check if a PnP driver is already installed Next: Prioritized RAW Ethernet |