Hi, On 3/24/22 23:19, Mark Brown wrote: > On Thu, Mar 24, 2022 at 09:34:30PM +0100, Hans de Goede wrote: > >> Mark, if one of use writes a test patch, can you get that Asus machine to boot a >> kernel build from next + the test patch ? > > I can't directly unfortunately as the board is in Collabora's lab but > Guillaume (who's already CCed) ought to be able to, and I can generally > prod and try to get that done. Ok, Guillaume, can you try a kernel with commit 5949965ec9340cfc0e65f7d8a576b660b26e2535 ("x86/PCI: Preserve host bridge windows completely covered by E820") + the attached patch added on top a try on the asus-C523NA-A20057-coral machine please and see if that makes it boot again ? Regards, Hans
From b8080a6d2d889847900e1408f71d0c01c73f5c94 Mon Sep 17 00:00:00 2001 From: Hans de Goede <hdegoede@xxxxxxxxxx> Date: Mon, 28 Mar 2022 14:47:41 +0200 Subject: [PATCH] x86/PCI: Limit "e820 entry fully covers window" check to non ISA MMIO addresses Commit FIXME ("x86/PCI: Preserve host bridge windows completely covered by E820") added a check to skip e820 table entries which fully cover a PCI bride's memory window when clipping PCI bridge memory windows. This check also caused ISA MMIO windows to not get clipped when fully covered, which is causing some coreboot based Chromebooks to not boot. Modify the fully covered check to not apply to ISA MMIO windows. Fixes: FIXME ("x86/PCI: Preserve host bridge windows completely covered by E820") Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> --- arch/x86/kernel/resource.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/resource.c b/arch/x86/kernel/resource.c index 6be82e16e5f4..d9ec913619c3 100644 --- a/arch/x86/kernel/resource.c +++ b/arch/x86/kernel/resource.c @@ -46,8 +46,12 @@ void remove_e820_regions(struct device *dev, struct resource *avail) * devices. But if it covers the *entire* resource, it's * more likely just telling us that this is MMIO space, and * that doesn't need to be removed. + * Note this *entire* resource covering check is only + * intended for 32 bit memory resources for the 16 bit + * isa window we always apply the e820 entries. */ - if (e820_start <= avail->start && avail->end <= e820_end) { + if (avail->start >= ISA_END_ADDRESS && + e820_start <= avail->start && avail->end <= e820_end) { dev_info(dev, "resource %pR fully covered by e820 entry [mem %#010Lx-%#010Lx]\n", avail, e820_start, e820_end); continue; -- 2.35.1