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
Details
Details
- Reviewers
jhb markj - Commits
- rG8b74806161a1: acpi_pci: Do not match SR-IOV VFs to ACPI devices
Diff Detail
Diff Detail
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
Comment Actions
Kind of weird that they would match an _ADR value, but this is correct.
| sys/dev/acpica/acpi_pci.c | ||
|---|---|---|
| 344 | ||