From: Borislav Petkov <bp@alien8.de>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Dave Young <dyoung@redhat.com>, X86 ML <x86@kernel.org>,
LKML <linux-kernel@vger.kernel.org>, Borislav Petkov <bp@suse.de>,
Matt Fleming <matt@console-pimps.org>,
Matthew Garrett <mjg59@srcf.ucam.org>,
James Bottomley <James.Bottomley@HansenPartnership.com>,
Vivek Goyal <vgoyal@redhat.com>,
linux-efi@vger.kernel.org
Subject: Re: [PATCH -v2] EFI: Runtime services virtual mapping
Date: Wed, 2 Oct 2013 19:05:22 +0200 [thread overview]
Message-ID: <20131002170522.GA20647@pd.tnic> (raw)
In-Reply-To: <524C3F38.6050507@zytor.com>
On Wed, Oct 02, 2013 at 08:43:52AM -0700, H. Peter Anvin wrote:
> On 10/02/2013 03:04 AM, Borislav Petkov wrote:
> > When we start allocating from -4G, i.e. 0xffffffff00000000, I think we
> > want to do it bottom-up so that 0xffffffff00000000 is the *last*, i.e.
> > lowest address. Because we link the kernel text at 0xffffffff81000000 by
> > default, which would mean, if -4G was the first address, we'll have only
> > 2G:
>
> Right.
Btw, Matt just found another issue with the bottom-up approach - due to
different alignment of VA and PA addresses, this messes up the pagetable
in terms of the order in which we're using 4K, 2M, etc pages.
What can happen is that, you can get a non-2M aligned PA mapped with
2M-aligned VA which results in a #PF with PF_RSVD set, which most likely
happens because one or more of the bits in the [12:20] slice of the PMD
are reserved but they get set due to the PA having address bits set in
the aforementioned slice and thus a #PF is raised.
So we changed the mapping method to a more straight-forward one: we map
all EFI regions in the following range:
[ efi_va - -4G ]
and we compute efi_va by subtracting the highest EFI region address from
-4G, i.e. 0xffff_ffff_0000_0000.
Then, each VA is computed by doing efi_va + PA.
Basically, we have a non-contiguous window in the virtual address space
with the highest address of it being -4G. In OVMF, f.e., we get the
following mappings:
VA: 0xfffffffe80800000..0xfffffffe81000000 -> PA: 0x800000..0x1000000
VA: 0xfffffffefc000000..0xfffffffefc020000 -> PA: 0x7c000000..0x7c020000
VA: 0xfffffffefdc5b000..0xfffffffefe146000 -> PA: 0x7dc5b000..0x7e146000
...
VA: 0xfffffffeffa65000..0xfffffffefffe0000 -> PA: 0x7fa65000..0x7ffe0000
VA: 0xfffffffefffe0000..0xffffffff00000000 -> PA: 0x7ffe0000..0x80000000
So, basically, the EFI regions occupy a 2Gish window with holes in the
range:
[ 0xfffffffe80800000 - 0xffffffff00000000 )
and since we said, we want to give the whole EFI memmap 64G max, that
should be ok.
Oh, and the alignment remains compatible this way.
So this mapping scheme - courtesy of Matt - is very straight-forward
and simple and I like simple. This way we won't need the setup_data
games with kexec tools as we'll be simply doing the same mappings in the
kexec'ed kernel.
Anyway, I'll clean up the patch and send it out later.
Thanks.
--
Regards/Gruss,
Boris.
Sent from a fat crate under my desk. Formatting is fine.
--
next prev parent reply other threads:[~2013-10-02 17:05 UTC|newest]
Thread overview: 115+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-19 14:54 [PATCH 00/11] EFI runtime services virtual mapping Borislav Petkov
2013-09-19 14:54 ` [PATCH 01/11] efi: Simplify EFI_DEBUG Borislav Petkov
2013-09-19 14:54 ` [PATCH 02/11] efi: Remove EFI_PAGE_SHIFT and EFI_PAGE_SIZE Borislav Petkov
2013-09-20 10:42 ` Matt Fleming
2013-09-21 15:21 ` Leif Lindholm
2013-09-21 15:41 ` Borislav Petkov
2013-09-21 15:50 ` Borislav Petkov
2013-09-21 16:01 ` Leif Lindholm
2013-09-21 16:03 ` Borislav Petkov
2013-09-21 15:59 ` Leif Lindholm
2013-09-19 14:54 ` [PATCH 03/11] x86, pageattr: Lookup address in an arbitrary PGD Borislav Petkov
2013-09-19 14:54 ` [PATCH 04/11] x86, pageattr: Add a PGD pagetable populating function Borislav Petkov
2013-09-19 14:54 ` [PATCH 05/11] x86, pageattr: Add a PUD " Borislav Petkov
2013-09-19 14:54 ` [PATCH 06/11] x86, pageattr: Add a PMD " Borislav Petkov
2013-09-19 14:54 ` [PATCH 07/11] x86, pageattr: Add a PTE " Borislav Petkov
2013-09-19 14:54 ` [PATCH 08/11] x86, pageattr: Add a PUD error unwinding path Borislav Petkov
2013-09-19 14:54 ` [PATCH 09/11] x86, pageattr: Add last levels of error path Borislav Petkov
2013-09-19 14:54 ` [PATCH 10/11] x86, cpa: Map in an arbitrary pgd Borislav Petkov
2013-09-19 14:54 ` [PATCH 11/11] EFI: Runtime services virtual mapping Borislav Petkov
2013-09-21 11:39 ` [PATCH -v2] " Borislav Petkov
2013-09-22 12:35 ` Dave Young
2013-09-22 13:37 ` Borislav Petkov
2013-09-22 14:00 ` Dave Young
2013-09-22 14:31 ` Dave Young
2013-09-22 15:27 ` H. Peter Anvin
2013-09-22 16:38 ` Borislav Petkov
2013-09-23 5:45 ` Dave Young
2013-09-24 2:52 ` Dave Young
2013-09-24 3:06 ` H. Peter Anvin
2013-09-24 4:57 ` Dave Young
2013-09-24 4:58 ` Dave Young
2013-09-24 5:23 ` Dave Young
2013-09-24 8:57 ` Dave Young
2013-09-24 9:43 ` Borislav Petkov
2013-09-24 10:01 ` Dave Young
2013-09-24 12:45 ` Dave Young
2013-10-02 10:04 ` Borislav Petkov
2013-10-02 15:43 ` H. Peter Anvin
2013-10-02 17:05 ` Borislav Petkov [this message]
2013-10-02 17:32 ` H. Peter Anvin
2013-10-02 18:42 ` Borislav Petkov
2013-10-02 18:46 ` H. Peter Anvin
2013-10-04 9:42 ` Borislav Petkov
2013-10-04 14:43 ` H. Peter Anvin
2013-10-04 14:50 ` Borislav Petkov
2013-09-23 5:47 ` Dave Young
2013-09-23 6:29 ` Borislav Petkov
2013-09-23 7:08 ` Dave Young
2013-09-23 8:45 ` Borislav Petkov
2013-09-25 9:24 ` Borislav Petkov
2013-09-20 7:29 ` [PATCH 00/11] EFI runtime " Dave Young
2013-09-20 8:19 ` Dave Young
2013-09-20 9:33 ` Borislav Petkov
2013-09-20 10:07 ` Dave Young
2013-09-20 9:05 ` Borislav Petkov
2013-09-20 9:44 ` Matt Fleming
2013-09-20 9:49 ` Matt Fleming
2013-09-20 10:02 ` Borislav Petkov
2013-09-20 11:51 ` Dave Young
2013-09-20 12:29 ` Matt Fleming
2013-09-20 14:04 ` Dave Young
2013-10-08 16:45 ` Borislav Petkov
2013-10-08 16:47 ` [PATCH 11/12] efi: Add an efi= kernel command line parameter Borislav Petkov
2013-10-28 11:02 ` Matt Fleming
2013-10-28 11:10 ` Borislav Petkov
2013-10-08 16:48 ` [PATCH 12/12] EFI: Runtime services virtual mapping Borislav Petkov
2013-10-10 8:06 ` Dave Young
2013-10-10 8:14 ` Dave Young
2013-10-10 8:58 ` Borislav Petkov
2013-10-10 12:34 ` Matt Fleming
2013-10-11 6:24 ` Dave Young
2013-10-11 7:41 ` Borislav Petkov
2013-10-12 7:54 ` Dave Young
2013-10-12 10:13 ` Matt Fleming
2013-10-12 10:30 ` Borislav Petkov
2013-10-13 3:11 ` Dave Young
2013-10-13 9:25 ` Borislav Petkov
2013-10-14 15:58 ` Borislav Petkov
2013-10-21 12:47 ` Dave Young
2013-10-21 13:37 ` Borislav Petkov
2013-10-21 15:04 ` Dave Young
2013-10-22 11:18 ` Borislav Petkov
2013-10-23 2:17 ` Dave Young
2013-10-23 12:25 ` Borislav Petkov
2013-10-23 12:37 ` Matthew Garrett
2013-10-23 12:51 ` Dave Young
2013-10-23 13:11 ` Borislav Petkov
2013-10-26 15:50 ` Matt Fleming
2013-10-13 3:06 ` Dave Young
2013-10-11 10:27 ` Matt Fleming
2013-10-11 13:42 ` Dave Young
2013-10-12 2:14 ` Dave Young
2013-10-14 15:57 ` Peter Jones
2013-10-16 6:27 ` Dave Young
2013-10-28 11:22 ` Matt Fleming
2013-10-28 16:00 ` Borislav Petkov
2013-10-29 6:47 ` Dave Young
2013-10-29 9:40 ` Borislav Petkov
2013-10-30 9:32 ` Dave Young
2013-10-30 10:45 ` Borislav Petkov
2013-10-31 7:07 ` Dave Young
2013-10-14 13:04 ` [PATCH 00/11] EFI runtime " Matt Fleming
-- strict thread matches above, loose matches on Subject: below --
2013-09-24 14:56 [PATCH -v2] EFI: Runtime " Borislav Petkov
2013-09-25 0:12 ` H. Peter Anvin
2013-09-25 2:36 ` Dave Young
2013-09-25 5:47 ` Borislav Petkov
2013-09-26 3:12 ` Dave Young
2013-09-30 20:17 ` Borislav Petkov
2013-09-30 20:35 ` Vivek Goyal
2013-09-30 20:41 ` Borislav Petkov
2013-09-30 20:46 ` Vivek Goyal
2013-09-30 21:06 ` Borislav Petkov
2013-09-30 21:09 ` Vivek Goyal
2013-10-08 9:18 ` Dave Young
2013-09-25 2:31 ` Dave Young
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=20131002170522.GA20647@pd.tnic \
--to=bp@alien8.de \
--cc=James.Bottomley@HansenPartnership.com \
--cc=bp@suse.de \
--cc=dyoung@redhat.com \
--cc=hpa@zytor.com \
--cc=linux-efi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matt@console-pimps.org \
--cc=mjg59@srcf.ucam.org \
--cc=vgoyal@redhat.com \
--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).