linux-efi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Matt Fleming <matt-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
To: Borislav Petkov <bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org>
Cc: X86 ML <x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Borislav Petkov <bp-l3A5Bk7waGM@public.gmane.org>,
	Matthew Garrett <mjg59-1xO5oi07KQx4cg9Nei1l7Q@public.gmane.org>,
	"H. Peter Anvin" <hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>,
	James Bottomley
	<James.Bottomley-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org>,
	Vivek Goyal <vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	Dave Young <dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	fwts-devel-nLRlyDuq1AZFpShjVBNYrg@public.gmane.org
Subject: Re: [PATCH 12/12] EFI: Runtime services virtual mapping
Date: Mon, 28 Oct 2013 11:22:46 +0000	[thread overview]
Message-ID: <20131028112246.GK1982@console-pimps.org> (raw)
In-Reply-To: <20131008164831.GD16793-fF5Pk5pvG8Y@public.gmane.org>

On Tue, 08 Oct, at 06:48:31PM, Borislav Petkov wrote:
> From: Borislav Petkov <bp-l3A5Bk7waGM@public.gmane.org>
> 
> We map the EFI regions needed for runtime services contiguously on
> virtual addresses starting from -4G down for a total max space of 64G.
> This way, we provide for stable runtime services addresses across
> kernels so that a kexec'd kernel can still use them.
> 
> This way, they're mapped in a separate pagetable so that we don't
> pollute the kernel namespace (you can see how the whole ioremapping and
> saving and restoring of PGDs is gone now).
> 
> Also, add a chicken bit called "efi=old_map" which can be used as a
> fallback to the old runtime services mapping method in case there's some
> b0rkage with a particular EFI implementation (haha, it is hard to hold
> up the sarcasm here...).
> 
> Add UEFI RT VA space to Documentation/x86/x86_64/mm.txt, while at it.
> 
> Signed-off-by: Borislav Petkov <bp-l3A5Bk7waGM@public.gmane.org>
> ---
>  Documentation/x86/x86_64/mm.txt      |  7 +++
>  arch/x86/include/asm/efi.h           | 47 ++++++++++++-------
>  arch/x86/include/asm/pgtable_types.h |  3 +-
>  arch/x86/platform/efi/efi.c          | 91 ++++++++++++++++++++++++++----------
>  arch/x86/platform/efi/efi_32.c       |  8 +++-
>  arch/x86/platform/efi/efi_64.c       | 83 ++++++++++++++++++++++++++++++++
>  arch/x86/platform/efi/efi_stub_64.S  | 54 +++++++++++++++++++++
>  include/linux/efi.h                  |  1 +
>  8 files changed, 251 insertions(+), 43 deletions(-)

[...]

> @@ -949,8 +978,17 @@ void __init efi_enter_virtual_mode(void)
>  		count++;
>  	}
>  
> +#ifdef CONFIG_X86_64
> +	efi_scratch.efi_pgt = (pgd_t *)(unsigned long)real_mode_header->trampoline_pgd;
> +
> +	if (!test_bit(EFI_OLD_MEMMAP, &x86_efi_facility))
> +		efi_scratch.use_pgd = true;
> +#endif
> +
>  	BUG_ON(!efi.systab);

Could you use the efi_enabled() function to test for EFI_OLD_MEMMAP
instead of test_bit()?

[...]

> diff --git a/include/linux/efi.h b/include/linux/efi.h
> index fa47d80ab4b5..beff433aa8c0 100644
> --- a/include/linux/efi.h
> +++ b/include/linux/efi.h
> @@ -632,6 +632,7 @@ extern int __init efi_setup_pcdp_console(char *);
>  #define EFI_RUNTIME_SERVICES	3	/* Can we use runtime services? */
>  #define EFI_MEMMAP		4	/* Can we use EFI memory map? */
>  #define EFI_64BIT		5	/* Is the firmware 64-bit? */
> +#define EFI_OLD_MEMMAP		6	/* Use old mapping method */

Hmm... I'm wondering whether this should actually be,

#define EFI_ARCH_1		6	/* Architecture-specific option */

and in arch/x86/include/ we could then do,

/*
 * Lots of info about why we need to switch to a new mapping scheme, but
 * also why the old scheme might be desirable....
 */
#define EFI_OLD_MEMMAP		EFI_ARCH_1

This way we won't exhaust the bitspace quite so soon (since ARM/ARM64
can reuse EFI_ARCH_1 if they need it), plus this memory mapping method
is a very architecture-specific thing and so makes sense to hide it in
the bowels of arch/x86. If it turns out that ARM/ARM64 need the exact
same config option we can delete EFI_ARCH_1 and move EFI_OLD_MEMMAP to
include/linux/efi.h just like in your original patch. 

What do you think?

-- 
Matt Fleming, Intel Open Source Technology Center

  parent reply	other threads:[~2013-10-28 11:22 UTC|newest]

Thread overview: 102+ 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 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 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 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
     [not found]   ` <1379602494-26684-12-git-send-email-bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org>
2013-09-21 11:39     ` [PATCH -v2] " Borislav Petkov
2013-09-23  5:47       ` Dave Young
     [not found]         ` <20130923054741.GC7007-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-09-23  6:29           ` Borislav Petkov
     [not found]             ` <20130923062947.GA2527-fF5Pk5pvG8Y@public.gmane.org>
2013-09-23  7:08               ` Dave Young
     [not found]       ` <20130921113929.GB1587-fF5Pk5pvG8Y@public.gmane.org>
2013-09-22 12:35         ` Dave Young
     [not found]           ` <20130922123515.GA7476-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-09-22 13:37             ` Borislav Petkov
     [not found]               ` <20130922133722.GC28718-fF5Pk5pvG8Y@public.gmane.org>
2013-09-22 14:00                 ` Dave Young
     [not found]                   ` <20130922140038.GB7476-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-09-22 14:31                     ` Dave Young
2013-09-22 15:27                 ` H. Peter Anvin
     [not found]                   ` <1ba7eca6-419c-4181-9927-9ba0927a6abf-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2013-09-22 16:38                     ` Borislav Petkov
2013-09-23  5:45                     ` Dave Young
2013-09-24  2:52                     ` Dave Young
     [not found]                       ` <20130924025209.GA5561-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-09-24  3:06                         ` H. Peter Anvin
     [not found]                           ` <2d27a1bc-eabf-4d45-8303-27ae58511b11-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2013-09-24  4:57                             ` Dave Young
     [not found]                               ` <20130924045705.GB5561-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-09-24  4:58                                 ` Dave Young
     [not found]                                   ` <20130924045818.GC5561-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-09-24  5:23                                     ` Dave Young
2013-09-24  8:57                                       ` Dave Young
2013-09-24  9:43                                 ` Borislav Petkov
     [not found]                                   ` <bd9528a453bce9b52ad4be75dcc0f034.squirrel-Fq0NhQX/+7ild1e1puMNDg@public.gmane.org>
2013-09-24 10:01                                     ` Dave Young
2013-09-24 12:45                                     ` Dave Young
2013-10-02 10:04                             ` Borislav Petkov
     [not found]                               ` <20131002100426.GB20568-fF5Pk5pvG8Y@public.gmane.org>
2013-10-02 15:43                                 ` H. Peter Anvin
     [not found]                                   ` <524C3F38.6050507-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2013-10-02 17:05                                     ` Borislav Petkov
     [not found]                                       ` <20131002170522.GA20647-fF5Pk5pvG8Y@public.gmane.org>
2013-10-02 17:32                                         ` H. Peter Anvin
     [not found]                                           ` <524C58A3.4090704-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2013-10-02 18:42                                             ` Borislav Petkov
     [not found]                                               ` <20131002184229.GE20568-fF5Pk5pvG8Y@public.gmane.org>
2013-10-02 18:46                                                 ` H. Peter Anvin
     [not found]                                                   ` <524C6A14.40905-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2013-10-04  9:42                                                     ` Borislav Petkov
     [not found]                                                       ` <20131004094247.GA6796-K5JNixvcfoxupOikMc4+xw@public.gmane.org>
2013-10-04 14:43                                                         ` H. Peter Anvin
     [not found]                                                           ` <89e0284e-89b5-42ad-8120-128ef1bf0152-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2013-10-04 14:50                                                             ` Borislav Petkov
2013-09-23  8:45         ` Borislav Petkov
2013-09-25  9:24         ` Borislav Petkov
     [not found] ` <1379602494-26684-1-git-send-email-bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org>
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
     [not found]     ` <1379602494-26684-3-git-send-email-bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org>
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
     [not found]                 ` <20130921160121.GI2737-GZEopFhza0F985/tl1ce8aaDwS/vmuI7@public.gmane.org>
2013-09-21 16:03                   ` Borislav Petkov
     [not found]             ` <20130921154143.GC1587-fF5Pk5pvG8Y@public.gmane.org>
2013-09-21 15:59               ` Leif Lindholm
2013-09-19 14:54   ` [PATCH 05/11] x86, pageattr: Add a PUD pagetable populating function Borislav Petkov
2013-09-19 14:54   ` [PATCH 09/11] x86, pageattr: Add last levels of error path Borislav Petkov
2013-09-20  7:29   ` [PATCH 00/11] EFI runtime services virtual mapping Dave Young
     [not found]     ` <20130920072904.GA21922-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-09-20  8:19       ` Dave Young
     [not found]         ` <20130920081940.GC21922-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-09-20  9:33           ` Borislav Petkov
2013-09-20 10:07             ` Dave Young
2013-09-20  9:05       ` Borislav Petkov
     [not found]         ` <20130920090544.GA9574-fF5Pk5pvG8Y@public.gmane.org>
2013-09-20  9:44           ` Matt Fleming
2013-09-20  9:49           ` Matt Fleming
     [not found]             ` <20130920094913.GG4785-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2013-09-20 10:02               ` Borislav Petkov
2013-09-20 11:51           ` Dave Young
2013-09-20 12:29           ` Matt Fleming
     [not found]             ` <20130920122915.GB21381-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2013-09-20 14:04               ` Dave Young
2013-10-08 16:45 ` Borislav Petkov
     [not found]   ` <20131008164551.GB16793-fF5Pk5pvG8Y@public.gmane.org>
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
     [not found]       ` <20131008164831.GD16793-fF5Pk5pvG8Y@public.gmane.org>
2013-10-10  8:06         ` Dave Young
2013-10-10  8:14           ` Dave Young
     [not found]             ` <20131010081434.GB3692-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-10-10  8:58               ` Borislav Petkov
     [not found]                 ` <20131010085827.GA9929-fF5Pk5pvG8Y@public.gmane.org>
2013-10-10 12:34                   ` Matt Fleming
     [not found]                     ` <20131010123453.GA12321-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2013-10-11  6:24                       ` Dave Young
     [not found]                         ` <20131011062437.GA14115-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-10-11  7:41                           ` Borislav Petkov
     [not found]                             ` <20131011074144.GA18719-fF5Pk5pvG8Y@public.gmane.org>
2013-10-12  7:54                               ` Dave Young
     [not found]                                 ` <20131012075443.GD7550-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-10-12 10:13                                   ` Matt Fleming
     [not found]                                     ` <20131012101308.GI12321-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2013-10-12 10:30                                       ` Borislav Petkov
     [not found]                                         ` <20131012103054.GA13739-fF5Pk5pvG8Y@public.gmane.org>
2013-10-13  3:11                                           ` Dave Young
     [not found]                                             ` <20131013031126.GB1914-4/PLUo9XfK+sDdueE5tM26fLeoKvNuZc@public.gmane.org>
2013-10-13  9:25                                               ` Borislav Petkov
     [not found]                                                 ` <20131013092521.GA22866-fF5Pk5pvG8Y@public.gmane.org>
2013-10-14 15:58                                                   ` Borislav Petkov
     [not found]                                                     ` <20131014155851.GJ4009-fF5Pk5pvG8Y@public.gmane.org>
2013-10-21 12:47                                                       ` Dave Young
     [not found]                                                         ` <20131021124739.GA4515-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-10-21 13:37                                                           ` Borislav Petkov
     [not found]                                                             ` <20131021133741.GA5716-K5JNixvcfoxupOikMc4+xw@public.gmane.org>
2013-10-21 15:04                                                               ` Dave Young
     [not found]                                                                 ` <20131021150426.GB4515-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-10-22 11:18                                                                   ` Borislav Petkov
     [not found]                                                                     ` <20131022111857.GA10660-K5JNixvcfoxupOikMc4+xw@public.gmane.org>
2013-10-23  2:17                                                                       ` Dave Young
     [not found]                                                                         ` <20131023021730.GE4594-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-10-23 12:25                                                                           ` Borislav Petkov
     [not found]                                                                             ` <20131023122531.GA15848-K5JNixvcfoxupOikMc4+xw@public.gmane.org>
2013-10-23 12:37                                                                               ` Matthew Garrett
2013-10-23 12:51                                                                               ` Dave Young
     [not found]                                                                                 ` <20131023125131.GA5552-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
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
     [not found]                             ` <20131011102706.GE12321-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2013-10-11 13:42                               ` Dave Young
     [not found]                                 ` <643121905.4545046.1381498954428.JavaMail.root-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
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 [this message]
     [not found]           ` <20131028112246.GK1982-HNK1S37rvNbeXh+fF434Mdi2O/JbrIOy@public.gmane.org>
2013-10-28 16:00             ` Borislav Petkov
2013-10-29  6:47         ` Dave Young
     [not found]           ` <20131029064720.GA16009-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-10-29  9:40             ` Borislav Petkov
     [not found]               ` <20131029094033.GA10972-fF5Pk5pvG8Y@public.gmane.org>
2013-10-30  9:32                 ` Dave Young
     [not found]                   ` <20131030093227.GA5791-je1gSBvt1TcFLmT5oZ11vB/sF2h8X+2i0E9HWUfgJXw@public.gmane.org>
2013-10-30 10:45                     ` Borislav Petkov
     [not found]                       ` <20131030104526.GA13290-fF5Pk5pvG8Y@public.gmane.org>
2013-10-31  7:07                         ` Dave Young
2013-10-14 13:04     ` [PATCH 00/11] EFI runtime " 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=20131028112246.GK1982@console-pimps.org \
    --to=matt-hnk1s37rvnbexh+ff434mdi2o/jbrioy@public.gmane.org \
    --cc=James.Bottomley-d9PhHud1JfjCXq6kfMZ53/egYHeGw8Jk@public.gmane.org \
    --cc=bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org \
    --cc=bp-l3A5Bk7waGM@public.gmane.org \
    --cc=dyoung-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=fwts-devel-nLRlyDuq1AZFpShjVBNYrg@public.gmane.org \
    --cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
    --cc=linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mjg59-1xO5oi07KQx4cg9Nei1l7Q@public.gmane.org \
    --cc=vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.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).