I have a PCie device and I am trying to get my KMDF driver loaded and running on this PCIe device.
The KMDF driver's DriverEntry, Add() gets called but PrepareHardware() never gets called. Instead DeviceCleanup() followed by DriverCleanup() gets invoked and then that results in a yellow bang
I have provided the !pci dump (2 different executions of the same command). It is a x1 PCie device. I have replaced the Vendor Id and Device ID and subsysvendor ID with invalid values but the rest of it stays the same (Upon request of the vendor).
a) The command register has Bus master , Memory space enable and IO space enable cleared so any host specific MMIO accesses will result in master abort. This just means Windows has disabled the device but why?
b) Is it because the device is requesting a 32-bit BAR (BAR0 is 32-bit prefetchable).
c) If I write all 0xf into BAR0 and BAR1, the length comes back as 0x2000 which is the correct size per the device vendor.
I was thinking Windows does not like the class code (This translates into a processor controller). They are claiming their driver for Linux loads on it just fine
At the bottom I have another example of the same device where !pci shows the BAR as MPF for BAR0. What exactly does this mean?.
Any ideas on how to enable PCI bus driver tracing so I can figure out what is going on?
I have provided the pci dump (both commands) as the attached file because of character count limitations
Any help is much appreciated. I am just developing the driver for them. I do not have any PCI express protocol analyzer tools.
It looks like you're new here. If you want to get involved, click one of these buttons!
|Upcoming OSR Seminars|
|Writing WDF Drivers||21 Oct 2019||OSR Seminar Space & ONLINE|
|Internals & Software Drivers||18 Nov 2019||Dulles, VA|
|Kernel Debugging||30 Mar 2020||OSR Seminar Space|
|Developing Minifilters||27 Apr 2020||OSR Seminar Space & ONLINE|