The basic question: How is a vendor of PCI devices supposed to make multiple DEXTs that control subsets of PCI device IDs?
If one has a PCI vendor ID of 0xCDEF and two devices with device IDs of 0x1234 and 0x5678 that need two separate drivers, how are the DEXTs constructed to match accordingly? If each driver specifies an explicit IOPCIPrimaryMatch of 0x1234CDEF and 0x5678CDEF, then it seems the vendor would have to request special entitlements for each driver (and maintain them through Apple if additional models are added). Ugh. On the other hand, the dev portal now has some level of ability to build entitlements combinations during App ID creation via check boxes in the "Additional Capabilities" tab. Great, but selecting PCI Primary Match puts in a wildcard match of 0x0000CDEF&0x0000FFFF for the vendor ID. Thus the DEXT must be signed this way in order to load and will load against any of the vendor's devices. This would work if there was an IOService::Probe() method to filter out unwanted devices in each driver, but there isn't.
How is this supposed to work?