From: Andy Lutomirski <luto@kernel.org>
To: "H. Peter Anvin" <hpa@zytor.com>, x86@kernel.org
Cc: Mario Limonciello <mario_limonciello@dell.com>,
Matthew Garrett <mjg59@srcf.ucam.org>,
Borislav Petkov <bp@alien8.de>, Matt Fleming <mfleming@suse.de>,
linux-kernel@vger.kernel.org, Andy Lutomirski <luto@kernel.org>
Subject: [PATCH 4.8? 0/4] Allow the trampoline to use EFI boot services RAM
Date: Tue, 26 Jul 2016 15:55:24 -0700 [thread overview]
Message-ID: <cover.1469573005.git.luto@kernel.org> (raw)
As currently configured, my laptop cannot boot any existing kernel
because the real mode trampoline can't be reserved. The ranges in
which it could live are rejected by the kernel: one is EFI boot
services data and the other is above the EBDA.
Allowing use of RAM between the EBDA and 640k is scary: there are
probably many quirky BIOSes out there, and, as currently structured,
it would be awkward to allow it just on EFI boots because we
currently reserve that range before we figure out whether we're
using EFI.
This series fixes it the other way: it allow the trampoline to live
in boot services memory. It achieves this by deferring the panic
due to failure to reserve a trampoline until early_initcall time
and then adjusting the EFI boot services quirk to reserve space
for the trampoline if we haven't already found it a home.
I'm hoping this is okay for 4.8 even though it's late: it fixes
a boot failure and it's fairly conservative -- the only significant
changes in behavior should be on systems that currently fail to boot.
I'm not currently proposing it for stable because AFAIK I'm the
only person to have seen this issue. If it survives in Linus'
tree for a while, though, I might propose it for -stable later
on.
Andy Lutomirski (4):
x86/boot: Synchronize trampoline_cr4_features and mmu_cr4_features
directly
x86/boot: Defer setup_real_mode() to early_initcall time
x86/boot: Rework reserve_real_mode() to allow multiple tries
x86/efi: Allocate a trampoline if needed in efi_free_boot_services()
arch/x86/include/asm/realmode.h | 10 ++++++++-
arch/x86/kernel/setup.c | 17 ++++++++-------
arch/x86/platform/efi/quirks.c | 21 ++++++++++++++++++
arch/x86/realmode/init.c | 47 ++++++++++++++++++++++++++++++-----------
4 files changed, 74 insertions(+), 21 deletions(-)
--
2.7.4
next reply other threads:[~2016-07-26 22:55 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-26 22:55 Andy Lutomirski [this message]
2016-07-26 22:55 ` [PATCH 1/4] x86/boot: Synchronize trampoline_cr4_features and mmu_cr4_features directly Andy Lutomirski
2016-07-26 22:55 ` [PATCH 2/4] x86/boot: Defer setup_real_mode() to early_initcall time Andy Lutomirski
2016-07-26 22:55 ` [PATCH 3/4] x86/boot: Rework reserve_real_mode() to allow multiple tries Andy Lutomirski
2016-07-26 22:55 ` [PATCH 4/4] x86/efi: Allocate a trampoline if needed in efi_free_boot_services() Andy Lutomirski
2016-08-01 5:07 ` H. Peter Anvin
2016-08-02 18:21 ` Andy Lutomirski
2016-07-31 21:38 ` [PATCH 4.8? 0/4] Allow the trampoline to use EFI boot services RAM Matt Fleming
2016-08-04 9:26 ` Matt Fleming
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=cover.1469573005.git.luto@kernel.org \
--to=luto@kernel.org \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mario_limonciello@dell.com \
--cc=mfleming@suse.de \
--cc=mjg59@srcf.ucam.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).