Re: Bug report: the extended PCI config space is missed with 6.2-rc2

From: Bjorn Helgaas
Date: Thu Jan 05 2023 - 15:38:28 EST


On Thu, Jan 05, 2023 at 07:58:47PM +0000, Luck, Tony wrote:
> > Definitely an ambiguity / conflict, but not sure it is a bug when you
> > look at from the perspective of how would an EFI runtime service use
> > ECAM/MMCONFIG space?
> >
> > Would it be enough to add this clarification in "EFI 2.9 Table 7-6
> > Memory Type Usage after ExitBootServices()"?
> >
> > s/This memory is not used by the OS./This memory is not used by the OS,
> > unless ACPI declares it for another purpose./
>
> In the case of the EDAC driver there isn't any ACPI declaration. It just does
> pci_get_device() to find the devices it needs to use with a lookup based on
> vendor-id and device-id.

The EDAC driver wouldn't have any ACPI stuff in it; it's just that
Linux is looking for ACPI info about the ECAM area.

I think the problem here is that the ECAM/MMCONFIG code checks to make
sure the ECAM space is reserved somewhere. If it doesn't find a
reservation either in E820 [1] or by PNP0C01/PNP0C02 _CRS methods [2],
it decides it's not safe to use ECAM, which means we may only have the
old accessors that can only reach 256 bytes of config space.

Bjorn

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/pci/mmconfig-shared.c?id=v6.1#n447
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/pci/mmconfig-shared.c?id=v6.1#n428