From: "H. Peter Anvin" <hpa@zytor.com>
To: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
Jesse Barnes <jbarnes@virtuousgeek.org>,
Thomas Gleixner <tglx@linutronix.de>,
Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>, Matthew Garrett <mjg@redhat.com>
Subject: Re: [PATCH] x86/PCI: never allocate PCI space from the last 1M below 4G
Date: Mon, 29 Nov 2010 10:51:27 -0800 [thread overview]
Message-ID: <4CF3F62F.2000508@zytor.com> (raw)
In-Reply-To: <201011291334.52909.bjorn.helgaas@hp.com>
On 11/29/2010 12:34 PM, Bjorn Helgaas wrote:
> On Monday, November 29, 2010 11:30:09 am Bjorn Helgaas wrote:
>>
>> The last 1M before 4G contains the processor restart vector and usually
>> the system ROM. We don't know the actual ROM size; I chose 1M because
>> that's how much Windows 7 appears to avoid.
>>
>> Without this check, we can allocate PCI space that will never work. On
>> Matthew's HP 2530p, we put the Intel GTT "Flush Page" at the very last
>> page, which causes a spontaneous power-off:
>>
>> pci_root PNP0A08:00: host bridge window [mem 0xfee01000-0xffffffff]
>> fffff000-ffffffff : Intel Flush Page (assigned by intel-gtt)
>>
>> Reference: https://bugzilla.kernel.org/show_bug.cgi?id=23542
>> Reported-by: Matthew Garrett <mjg@redhat.com>
>> Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
>> ---
>>
>> arch/x86/include/asm/e820.h | 3 +++
>> arch/x86/pci/i386.c | 10 +++++++++-
>> 2 files changed, 12 insertions(+), 1 deletions(-)
>>
>>
>> diff --git a/arch/x86/include/asm/e820.h b/arch/x86/include/asm/e820.h
>> index 5be1542..c1e908f 100644
>> --- a/arch/x86/include/asm/e820.h
>> +++ b/arch/x86/include/asm/e820.h
>> @@ -72,6 +72,9 @@ struct e820map {
>> #define BIOS_BEGIN 0x000a0000
>> #define BIOS_END 0x00100000
>>
>> +#define BIOS_ROM_BASE 0xfff00000
>> +#define BIOS_ROM_END 0x100000000ULL
>
> I'm really not thrilled about hard-coding these addresses, so I'd
> love it if somebody could suggest a way to discover them from the
> BIOS.
>
> The E820 map doesn't reserve the last page:
>
> BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved)
> BIOS-e820: 00000000fffa0000 - 00000000fffa7000 (reserved)
>
> and I don't think there's any ACPI device that does either.
>
It is certainly reasonable to block off the last chunk of the 32-bit
address space. Some systems double-decode it to avoid issues with
A20M#, so I would argue that we should avoid at least 2 MiB.
As far as discovering them from the BIOS, there is a way to do it --
E820. This is a fallback for the case where the BIOS has plain and
simply failed to provide it, and so a heuristic is probably the best we
can do. Probing is extremely unsafe.
-hpa
next prev parent reply other threads:[~2010-11-29 18:52 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-29 18:30 [PATCH] x86/PCI: never allocate PCI space from the last 1M below 4G Bjorn Helgaas
2010-11-29 18:36 ` Matthew Garrett
2010-11-29 20:34 ` Bjorn Helgaas
2010-11-29 18:51 ` H. Peter Anvin [this message]
2010-11-29 21:32 ` Bjorn Helgaas
2010-11-29 21:35 ` H. Peter Anvin
2010-11-29 22:04 ` Bjorn Helgaas
2010-11-29 22:10 ` H. Peter Anvin
2010-12-03 1:19 ` Linus Torvalds
2010-12-03 15:15 ` Bjorn Helgaas
2010-12-09 16:54 ` 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=4CF3F62F.2000508@zytor.com \
--to=hpa@zytor.com \
--cc=bjorn.helgaas@hp.com \
--cc=jbarnes@virtuousgeek.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mjg@redhat.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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.