All of lore.kernel.org
 help / color / mirror / Atom feed
From: Randy Dunlap <rdunlap@infradead.org>
To: Hans de Goede <hdegoede@redhat.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	"H . Peter Anvin" <hpa@zytor.com>
Cc: linux-pci@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] x86/PCI: Add pci=no_e820 cmdline option to ignore E820 reservations for bridge windows
Date: Tue, 5 Oct 2021 13:56:13 -0700	[thread overview]
Message-ID: <0320b854-327b-397f-ba26-e69ea321dd1b@infradead.org> (raw)
In-Reply-To: <20211005150956.303707-1-hdegoede@redhat.com>

On 10/5/21 8:09 AM, Hans de Goede wrote:
> Some BIOS-es contain a bug where they add addresses which map to system RAM
> in the PCI bridge memory window returned by the ACPI _CRS method, see
> commit 4dc2287c1805 ("x86: avoid E820 regions when allocating address
> space").
> 
> To avoid this Linux by default excludes E820 reservations when allocating
> addresses since 2010. Windows however ignores E820 reserved regions for PCI
> mem allocations, instead it avoids these BIOS bugs by allocates addresses
> top-down.
> 
> Recently (2020) some systems have shown-up with E820 reservations which
> cover the entire _CRS returned PCI bridge memory window, causing all
> attempts to assign memory to PCI bars which have not been setup by the BIOS
> to fail. For example here are the relevant dmesg bits from a
> Lenovo IdeaPad 3 15IIL 81WE:
> 
> [    0.000000] BIOS-e820: [mem 0x000000004bc50000-0x00000000cfffffff] reserved
> [    0.557473] pci_bus 0000:00: root bus resource [mem 0x65400000-0xbfffffff window]
> 
> Add a pci=no_e820 option which allows disabling the E820 reservations
> check, while still honoring the _CRS provided resources.
> 
> And automatically enable this on the "Lenovo IdeaPad 3 15IIL05" to fix
> the touchpad not working on this laptop.
> 
> Also add a pci=use_e820 option to allow overruling the results of
> DMI quirks defaulting to no_e820 on some systems.
> 
> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1868899
> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1871793
> BugLink: https://bugs.launchpad.net/ubuntu/+source/linux-signed-hwe/+bug/1878279
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Hi Hans,

Please update Documentation/admin-guide/kernel-parameters.txt also.

> ---
>   arch/x86/include/asm/pci_x86.h | 10 ++++++++++
>   arch/x86/kernel/resource.c     | 17 +++++++++++++++++
>   arch/x86/pci/acpi.c            | 26 ++++++++++++++++++++++++++
>   arch/x86/pci/common.c          |  6 ++++++
>   4 files changed, 59 insertions(+)
> 

> diff --git a/arch/x86/kernel/resource.c b/arch/x86/kernel/resource.c
> index 9b9fb7882c20..6069d86021f0 100644
> --- a/arch/x86/kernel/resource.c
> +++ b/arch/x86/kernel/resource.c

> @@ -23,11 +24,27 @@ static void resource_clip(struct resource *res, resource_size_t start,
>   		res->start = end + 1;
>   }
>   
> +/*
> + * Some BIOS-es contain a bug where they add addresses which map to system RAM
> + * in the PCI bridge memory window returned by the ACPI _CRS method, see
> + * commit 4dc2287c1805 ("x86: avoid E820 regions when allocating address space").
> + * To avoid this Linux by default excludes E820 reservations when allocating
> + * addresses since 2010. Windows however ignores E820 reserved regions for PCI
> + * mem allocations, instead it avoids these BIOS bugs by allocates addresses
> + * top-down.
> + * Recently (2020) some systems have shown-up with E820 reservations which
> + * cover the entire _CRS returned PCI bridge memory window, causing all
> + * attempts to assign memory to PCI bars which have not been setup by the BIOS

                     preferably:        BARs

> + * to fail. The pci_use_e820 check is there as a workaround for these systems.
> + */



thanks.
-- 
~Randy

  reply	other threads:[~2021-10-05 20:56 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-05 15:09 [PATCH] x86/PCI: Add pci=no_e820 cmdline option to ignore E820 reservations for bridge windows Hans de Goede
2021-10-05 20:56 ` Randy Dunlap [this message]
2021-10-07 16:55 ` Bjorn Helgaas
2021-10-07 18:36   ` Hans de Goede
2021-10-08 11:01   ` Bjorn Helgaas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0320b854-327b-397f-ba26-e69ea321dd1b@infradead.org \
    --to=rdunlap@infradead.org \
    --cc=bhelgaas@google.com \
    --cc=bp@alien8.de \
    --cc=hdegoede@redhat.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.