Page MenuHomeFreeBSD

acpi_pci: Do not match SR-IOV VFs to ACPI devices
ClosedPublic

Authored by kbowling on Fri, Aug 21, 3:35 AM.
Tags
None
Referenced Files
F170797148: D59061.id184624.diff
Sun, Sep 6, 4:47 PM
F170795579: D59061.id185177.diff
Sun, Sep 6, 4:31 PM
F170781137: D59061.diff
Sun, Sep 6, 2:32 PM
F170774254: D59061.diff
Sun, Sep 6, 1:42 PM
F170769655: D59061.id185177.diff
Sun, Sep 6, 1:02 PM
F170766420: D59061.id184624.diff
Sun, Sep 6, 12:34 PM
Unknown Object (File)
Sat, Sep 5, 2:43 PM
Unknown Object (File)
Sat, Sep 5, 12:08 PM
Subscribers

Details

Summary
SR-IOV VFs are instantiated dynamically from their PF rather than
enumerated from ACPI.  A VF's runtime slot and function can match an
unrelated _ADR below the bridge.  acpi_pci_save_handle() stores that
handle in the VF's devinfo before acpi_pci_update_device() runs.

If the handle is already bound to another device_t whose parent is not
acpi0, acpi_pci_update_device() panics under INVARIANTS.  Without
INVARIANTS, the VF retains the unrelated handle, so subsequent ACPI
lookups, including NUMA and power-management operations, can act on the
wrong namespace node.

Skip ACPI namespace matching for VFs.

MFC after:      2 weeks

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

Kind of weird that they would match an _ADR value, but this is correct.

sys/dev/acpica/acpi_pci.c
344
This revision is now accepted and ready to land.Wed, Aug 26, 6:01 PM