Every decade or so, give or take a decade, our ACPI overlords realize that the table they so generously gifted us is not really that useful. Not to be outdone, they make a betterer version of it, which seems like a good idea at the time. This is the story of the _HPX3 (well, most of ACPI really). Previous _HPX versions had a fixed number of fields, and could only describe a very narrow set of useless register settings. _HPX3 extends that to an arbitrary number of entries, that can cover the entire PCI config space, and will be The Last _HPX Table Ever (TM). For the sadomasochistic, the new ACPI 6.3 spec is here [1]. For our purposes, we had to re-organize code a bit, and the first two patches in the series do this, albeit with minimal noise. The last patch is the actual HPX3 stuff. In case you wonder why the ACPI enums don't match the PCI device types... nobody really thought of it or caught it at the spec writing stage. In _HPX3 there's also the notion of vendor-specific extensions, and VSEC/DVSEC. They are not implemented here because there's no hardware to test that code path. [1] https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf RESEND because the first time 'git send-email' experienced an ID:10T error originating between my keyboard and my chair. As a result of that error, it did not send the cover letter to public mailing lists. Alexandru Gagniuc (3): PCI / ACPI: Do not export pci_get_hp_params() PCI / ACPI: Remove the need for 'struct hotplug_params' PCI / ACPI: Implement Type 3 _HPX record drivers/pci/pci-acpi.c | 172 +++++++++++++++++++++++++----------- drivers/pci/probe.c | 130 ++++++++++++++++++++++++--- include/linux/pci_hotplug.h | 74 +++++++++++++--- 3 files changed, 305 insertions(+), 71 deletions(-) -- 2.19.2