QXL PCI multifunction device fails to start (code 10)


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:

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




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

Any idea how I can debug it?

>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