mbox series

[0/2] PCI: Fix extended config space regression

Message ID 20230110180243.1590045-1-helgaas@kernel.org (mailing list archive)
Headers show
Series PCI: Fix extended config space regression | expand

Message

Bjorn Helgaas Jan. 10, 2023, 6:02 p.m. UTC
From: Bjorn Helgaas <bhelgaas@google.com>

07eab0901ede ("efi/x86: Remove EfiMemoryMappedIO from E820 map") appeared
in v6.2-rc1 and broke extended config space on several machines.

This broke drivers that use things in extended config space, e.g., perf,
VSEC telemetry, EDAC, QAT, etc.

This happened because mmconfig-shared.c checks to see that ECAM space is
reserved in E820 or ACPI motherboard resources.  If it's not, it assumes
ECAM doesn't work.  07eab0901ede removed some E820 entries, so it looked
like ECAM was no longer reserved, so we stopped using it.

The machines where this broke don't reserve the ECAM in ACPI PNP0C02
devices (which seems to be what the PCI Firmware spec requires), but they
do mention it in the EFI memory map as EfiMemoryMappedIO.

Bjorn Helgaas (2):
  x86/pci: Simplify is_mmconf_reserved() messages
  x86/pci: Treat EfiMemoryMappedIO as reservation of ECAM space

 arch/x86/pci/mmconfig-shared.c | 44 +++++++++++++++++++++++++++++-----
 1 file changed, 38 insertions(+), 6 deletions(-)

Comments

Liang, Kan Jan. 10, 2023, 8:38 p.m. UTC | #1
On 2023-01-10 1:02 p.m., Bjorn Helgaas wrote:
> From: Bjorn Helgaas <bhelgaas@google.com>
> 
> 07eab0901ede ("efi/x86: Remove EfiMemoryMappedIO from E820 map") appeared
> in v6.2-rc1 and broke extended config space on several machines.
> 
> This broke drivers that use things in extended config space, e.g., perf,
> VSEC telemetry, EDAC, QAT, etc.
> 
> This happened because mmconfig-shared.c checks to see that ECAM space is
> reserved in E820 or ACPI motherboard resources.  If it's not, it assumes
> ECAM doesn't work.  07eab0901ede removed some E820 entries, so it looked
> like ECAM was no longer reserved, so we stopped using it.
> 
> The machines where this broke don't reserve the ECAM in ACPI PNP0C02
> devices (which seems to be what the PCI Firmware spec requires), but they
> do mention it in the EFI memory map as EfiMemoryMappedIO.
> 
> Bjorn Helgaas (2):
>   x86/pci: Simplify is_mmconf_reserved() messages
>   x86/pci: Treat EfiMemoryMappedIO as reservation of ECAM space
>

This patch series fixes the issue on my machine.

Tested-by: Kan Liang <kan.liang@linux.intel.com>

Thanks,
Kan

>  arch/x86/pci/mmconfig-shared.c | 44 +++++++++++++++++++++++++++++-----
>  1 file changed, 38 insertions(+), 6 deletions(-)
>
Tony Luck Jan. 10, 2023, 10:57 p.m. UTC | #2
> This broke drivers that use things in extended config space, e.g., perf,
> VSEC telemetry, EDAC, QAT, etc.

For the EDAC on Broadwell case I reported:

Tested-by: Tony Luck <tony.luck@intel.com>
Cabiddu, Giovanni Jan. 11, 2023, 12:10 p.m. UTC | #3
On Tue, Jan 10, 2023 at 12:02:41PM -0600, Bjorn Helgaas wrote:
> From: Bjorn Helgaas <bhelgaas@google.com>
> 
> 07eab0901ede ("efi/x86: Remove EfiMemoryMappedIO from E820 map") appeared
> in v6.2-rc1 and broke extended config space on several machines.
> 
> This broke drivers that use things in extended config space, e.g., perf,
> VSEC telemetry, EDAC, QAT, etc.
For QAT:

Tested-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Bjorn Helgaas Jan. 11, 2023, 10:30 p.m. UTC | #4
On Tue, Jan 10, 2023 at 12:02:41PM -0600, Bjorn Helgaas wrote:
> From: Bjorn Helgaas <bhelgaas@google.com>
> 
> 07eab0901ede ("efi/x86: Remove EfiMemoryMappedIO from E820 map") appeared
> in v6.2-rc1 and broke extended config space on several machines.
> 
> This broke drivers that use things in extended config space, e.g., perf,
> VSEC telemetry, EDAC, QAT, etc.
> 
> This happened because mmconfig-shared.c checks to see that ECAM space is
> reserved in E820 or ACPI motherboard resources.  If it's not, it assumes
> ECAM doesn't work.  07eab0901ede removed some E820 entries, so it looked
> like ECAM was no longer reserved, so we stopped using it.
> 
> The machines where this broke don't reserve the ECAM in ACPI PNP0C02
> devices (which seems to be what the PCI Firmware spec requires), but they
> do mention it in the EFI memory map as EfiMemoryMappedIO.
> 
> Bjorn Helgaas (2):
>   x86/pci: Simplify is_mmconf_reserved() messages
>   x86/pci: Treat EfiMemoryMappedIO as reservation of ECAM space
> 
>  arch/x86/pci/mmconfig-shared.c | 44 +++++++++++++++++++++++++++++-----
>  1 file changed, 38 insertions(+), 6 deletions(-)

Applied to for-linus for v6.2.  Sorry for the breakage and thank you
very much for the debugging and testing help!
Sun, Yunying Jan. 12, 2023, 5:50 a.m. UTC | #5
With this updated patches, perf uncore works fine on SPR(tested on both DNP and MCC).

Tested-by: Yunying Sun <yunying.sun@intel.com>

-----Original Message-----
From: Bjorn Helgaas <helgaas@kernel.org> 
Sent: Wednesday, 11 January, 2023 02:03
To: linux-pci@vger.kernel.org
Cc: Williams, Dan J <dan.j.williams@intel.com>; Kan Liang <kan.liang@linux.intel.com>; Luck, Tony <tony.luck@intel.com>; Box, David E <david.e.box@intel.com>; Sun, Yunying <yunying.sun@intel.com>; Jiang, Dave <dave.jiang@intel.com>; Mika Westerberg <mika.westerberg@linux.intel.com>; Cabiddu, Giovanni <giovanni.cabiddu@intel.com>; Herbert Xu <herbert@gondor.apana.org.au>; Hans de Goede <hdegoede@redhat.com>; Florent DELAHAYE <linuxkernelml@undead.fr>; Konrad J Hambrick <kjhambrick@gmail.com>; Matt Hansen <2lprbe78@duck.com>; Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au>; Benoit Grégoire <benoitg@coeus.ca>; Werner Sembach <wse@tuxedocomputers.com>; mumblingdrunkard@protonmail.com; linux-kernel@vger.kernel.org; Bjorn Helgaas <bhelgaas@google.com>
Subject: [PATCH 0/2] PCI: Fix extended config space regression

From: Bjorn Helgaas <bhelgaas@google.com>

07eab0901ede ("efi/x86: Remove EfiMemoryMappedIO from E820 map") appeared in v6.2-rc1 and broke extended config space on several machines.

This broke drivers that use things in extended config space, e.g., perf, VSEC telemetry, EDAC, QAT, etc.

This happened because mmconfig-shared.c checks to see that ECAM space is reserved in E820 or ACPI motherboard resources.  If it's not, it assumes ECAM doesn't work.  07eab0901ede removed some E820 entries, so it looked like ECAM was no longer reserved, so we stopped using it.

The machines where this broke don't reserve the ECAM in ACPI PNP0C02 devices (which seems to be what the PCI Firmware spec requires), but they do mention it in the EFI memory map as EfiMemoryMappedIO.

Bjorn Helgaas (2):
  x86/pci: Simplify is_mmconf_reserved() messages
  x86/pci: Treat EfiMemoryMappedIO as reservation of ECAM space

 arch/x86/pci/mmconfig-shared.c | 44 +++++++++++++++++++++++++++++-----
 1 file changed, 38 insertions(+), 6 deletions(-)

--
2.25.1