Re: [PATCH 3/3] x86/PCI: Preserve host bridge windows completely covered by E820

From: Bjorn Helgaas
Date: Fri Mar 11 2022 - 11:25:58 EST


[+cc Matt]

On Fri, Mar 11, 2022 at 08:52:31AM +0100, Hans de Goede wrote:
> On 3/10/22 13:28, Hans de Goede wrote:
> > On 3/9/22 19:15, Bjorn Helgaas wrote:
> >> On Sat, Mar 05, 2022 at 11:37:23AM +0100, Hans de Goede wrote:
> >>> On 3/4/22 16:46, Hans de Goede wrote:
> >>>> On 3/4/22 16:32, Bjorn Helgaas wrote:
> >>>>> On Fri, Mar 04, 2022 at 03:16:42PM +0100, Hans de Goede wrote:
> >>>>>> On 3/4/22 04:51, Bjorn Helgaas wrote:
> >>>>>>> From: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
> >>>>>>>
> >>>>>>> Many folks have reported PCI devices not working. It could affect any
> >>>>>>> device, but most reports are for Thunderbolt controllers on Lenovo Yoga and
> >>>>>>> Clevo Barebone laptops and the touchpad on Lenovo IdeaPads.
> >>>>>>> ...
> >>
> >>>>>>> diff --git a/arch/x86/kernel/resource.c b/arch/x86/kernel/resource.c
> >>>>>>> index 7378ea146976..405f0af53e3d 100644
> >>>>>>> --- a/arch/x86/kernel/resource.c
> >>>>>>> +++ b/arch/x86/kernel/resource.c
> >>>>>>> @@ -39,6 +39,17 @@ void remove_e820_regions(struct device *dev, struct resource *avail)
> >>>>>>> e820_start = entry->addr;
> >>>>>>> e820_end = entry->addr + entry->size - 1;
> >>>>>>>
> >>>>>>> + /*
> >>>>>>> + * If an E820 entry covers just part of the resource, we
> >>>>>>> + * assume E820 is telling us about something like host
> >>>>>>> + * bridge register space that is unavailable for PCI
> >>>>>>> + * 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.
> >>>>>>> + */
> >>>>>>> + if (e820_start <= avail->start && avail->end <= e820_end)
> >>>>>>> + continue;
> >>>>>>> +
> >>>>>>
> >>>>>> IMHO it would be good to add some logging here, since hitting this is
> >>>>>> somewhat of a special case. For the Fedora test kernels I did I changed
> >>>>>> this to:
> >>>>>>
> >>>>>> if (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;
> >>>>>> }
> >>>>>>
> >>>>>> And I expect/hope to see this new info message on the ideapad with the
> >>>>>> touchpad issue.
> >>
> >> I added this logging.
> >>
> >>> So I just got the first report back from the Fedora test 5.16.12 kernel
> >>> with this series added. Good news on the ideapad this wotks fine to
> >>> fix the touchpad issue (as expected).
> >>
> >> Any "Tested-by" I could add? If we can, I'd really like to give some
> >> credit to the folks who suffered through this and helped resolve it.
> >
> > Good point, the reporter of:
> > https://bugzilla.redhat.com/show_bug.cgi?id=1868899
> >
> > has done most of the ideapad with touchpad issues testing for me
> > and has been very helpful. I agree he deserves credit for this.
> >
> > I've asked him if he is ok with adding a Tested-by tag and if yes,
> > which email we should use.
>
> If you can add the following tag that would be great:
>
> Tested-by: Matt Hansen <2lprbe78@xxxxxxxx>

Done, thank you very much, Matt! Many people will benefit from your
work.