Re: [PATCH 2/2] x86/pci: Treat EfiMemoryMappedIO as reservation of ECAM space

From: Tomasz Pala
Date: Sat Nov 18 2023 - 09:21:56 EST


On Thu, Nov 09, 2023 at 12:44:05 -0600, Bjorn Helgaas wrote:

>> https://bugzilla.kernel.org/show_bug.cgi?id=218050
>>
>> I think the problem is that the MMCONFIG region is at
>> [mem 0x80000000-0x8fffffff], and that is *also* included in one of the
>> host bridge windows reported via _CRS:
>>
>> PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0x80000000-0x8fffffff] (base 0x80000000)
>> pci_bus 0000:00: root bus resource [mem 0x80000000-0xfbffffff window]
>>
>> I'll try to figure out how to deal with that. In the meantime, would
>> you mind attaching the contents of /proc/iomem to the bugzilla? I
>
> I attached a debug patch to both bugzilla entries. If you could
> attach the "acpidump" output and (if practical) boot a kernel with the
> debug patch and attach the dmesg logs, that would be great.

I've posted the files. There are signs of buggy BIOS, but I don't expect
any firmware update to be released for this hw anymore.

DMI: Supermicro X9DRi-LN4+/X9DR3-LN4+/X9DRi-LN4+/X9DR3-LN4+, BIOS 3.4 11/20/2019

.text .data .bss are not marked as E820_TYPE_RAM!
tboot: non-0 tboot_addr but it is not of type E820_TYPE_RESERVED

DMAR: [Firmware Bug]: No firmware reserved region can cover this RMRR [0x00000000df243000-0x00000000df251fff], contact BIOS vendor for fixes
DMAR: [Firmware Bug]: Your BIOS is broken; bad RMRR [0x00000000df243000-0x00000000df251fff]



BTW is there a reason for this logging discrepancy?

efi: Remove mem173: MMIO range=[0xe0000000-0xefffffff] (256MB) from e820 map
efi: Not removing mem71: MMIO range=[0xe0000000-0xefffffff] (262144KB) from e820 map

efi: Not removing mem74: MMIO range=[0xff000000-0xffffffff] (16384KB) from e820 map
efi: Remove mem176: MMIO range=[0xff000000-0xffffffff] (16MB) from e820 map

This is arch/x86/platform/efi/efi.c:
static void __init efi_remove_e820_mmio(void)

Remove mem%02u: MMIO range=[0x%08llx-0x%08llx] (%lluMB) ... size >> 20
Not removing mem%02u: MMIO range=[0x%08llx-0x%08llx] (%lluKB) ... size >> 10

--
Tomasz Pala <gotar@xxxxxxxxxxxxx>