QXL PCI multifunction device fails to start (code 10)

Hi,

The QXL driver used by SPICE (an open-source VDI project based on QEMU) fails to start when the associated PCI device is set as multifunction (code 10 in device properties dialog). It’s a traditional WDM/NT driver.

If you have some time to spare here are the relevant source files:
http://cgit.freedesktop.org/spice/win32/qxl/tree/miniport/qxl.c
http://cgit.freedesktop.org/spice/win32/qxl/tree/miniport/qxl.inf

Being new to windows & driver development, but interested to learn, I took the opportunity to look at this issue.

With windbg (and debugviewer), I noticed the DriverEntry() is called, and doesn’t return error. But no other function from the miniport driver gets called.

I managed to get checked build running with symbols, and could set various debug masks: IHVVIDEO, IHVDRIVER, PCI, NTOSPNP, PNPMGR. However, my not exercised eyes fails to find something useful. Should I use other debug masks, look at some files, other windbg commands? (I don’t know how to read Cmd and Sts from !pci output)

I thought about setting up an inf with a “system multifunction bus driver”, but I don’t think it’s necessary for pci devices, since other devices load correctly without it.

thanks for your help!

>PCI device is set as multifunction (code 10 in device properties dialog).

Code 10 is one of the CM_PROB_ constants.


Maxim S. Shatskih
Windows DDK MVP

xxxxx@storagecraft.com

http://www.storagecraft.com

Hi,

The only error I could find is:
“VIDEOPRT: Multifunction board not allowed to start”

Any idea how I can debug it?
thanks

>Any idea how I can debug it?
Do you install the driver on 32bits or 64-bits OS? 64-bits Windows could install only signed driver.
I would suggest to look at setupapi.* files. These files keeps installs information.

Igor Sharovar

For development, the driver is self signed and Windows checks are set with: bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS & bcdedit.exe -set TESTSIGNING ON