On 11/20/22 7:30 PM, David E. Box wrote: >>> + >>> static int vmd_enable_domain(struct vmd_dev *vmd, unsigned long features) >>> { >>> struct pci_sysdata *sd = &vmd->sysdata; >>> @@ -867,6 +917,8 @@ static int vmd_enable_domain(struct vmd_dev *vmd, >>> unsigned long features) >>> pci_reset_bus(child->self); >>> pci_assign_unassigned_bus_resources(vmd->bus); >>> >>> + pci_walk_bus(vmd->bus, vmd_pm_enable_quirk, &features); >>> + >>> /* >>> * VMD root buses are virtual and don't return true on pci_is_pcie() >>> * and will fail pcie_bus_configure_settings() early. It can instead >>> be >>> @@ -1005,17 +1057,17 @@ static const struct pci_device_id vmd_ids[] = { >>> VMD_FEAT_HAS_BUS_RESTRICTIONS | >>> VMD_FEAT_CAN_BYPASS_MSI_REMAP,}, >>> {PCI_VDEVICE(INTEL, 0x467f), >>> - .driver_data = VMD_FEATS_CLIENT,}, >>> + .driver_data = VMD_FEATS_CLIENT | VMD_FEAT_BIOS_PM_QUIRK,}, >>> {PCI_VDEVICE(INTEL, 0x4c3d), >>> - .driver_data = VMD_FEATS_CLIENT,}, >>> + .driver_data = VMD_FEATS_CLIENT | VMD_FEAT_BIOS_PM_QUIRK,}, >>> {PCI_VDEVICE(INTEL, 0xa77f), >>> - .driver_data = VMD_FEATS_CLIENT,}, >>> + .driver_data = VMD_FEATS_CLIENT | VMD_FEAT_BIOS_PM_QUIRK,}, >>> {PCI_VDEVICE(INTEL, 0x7d0b), >>> - .driver_data = VMD_FEATS_CLIENT,}, >>> + .driver_data = VMD_FEATS_CLIENT | VMD_FEAT_BIOS_PM_QUIRK,}, >>> {PCI_VDEVICE(INTEL, 0xad0b), >>> - .driver_data = VMD_FEATS_CLIENT,}, >>> + .driver_data = VMD_FEATS_CLIENT | VMD_FEAT_BIOS_PM_QUIRK,}, >>> {PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_VMD_9A0B), >>> - .driver_data = VMD_FEATS_CLIENT,}, >>> + .driver_data = VMD_FEATS_CLIENT | VMD_FEAT_BIOS_PM_QUIRK,}, >> Why not add VMD_FEAT_BIOS_PM_QUIRK part of VMD_FEATS_CLIENT? > Because our VMD team is in the middle of removing the need for the current on > next gen. You mean you may not need this quirk support from next gen? It looks like you are adding this quirk to all occurances of VMD_FEATS_CLIENT. So I am still not clear why we can't add it directly to that macro? -- Sathyanarayanan Kuppuswamy Linux Kernel Developer