+ /* Enforce Device blacklist by vendor and device */
+ for (i = 0; i < vec_len (conf->blacklist_by_pci_vendor_and_device); i++)
+ {
+ u16 vendor, device;
+ vendor = (u16)(conf->blacklist_by_pci_vendor_and_device[i] >> 16);
+ device = (u16)(conf->blacklist_by_pci_vendor_and_device[i] & 0xFFFF);
+ if (d->vendor_id == vendor && d->device_id == device)
+ {
+ /*
+ * Expected case: device isn't whitelisted,
+ * so blacklist it...
+ */
+ if (devconf == 0)
+ {
+ /* Device is blacklisted */
+ pool_get (conf->dev_confs, devconf);
+ hash_set (conf->device_config_index_by_pci_addr, addr->as_u32,
+ devconf - conf->dev_confs);
+ devconf->pci_addr.as_u32 = addr->as_u32;
+ devconf->is_blacklisted = 1;
+ goto skipped;
+ }
+ else /* explicitly whitelisted, ignore the device blacklist */
+ break;
+ }
+ }
+