linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ardb@kernel.org>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	Borislav Petkov <bp@alien8.de>,
	 Andy Lutomirski <luto@kernel.org>,
	Dave Hansen <dave.hansen@intel.com>,
	 Sean Christopherson <seanjc@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	 Joerg Roedel <jroedel@suse.de>, Andi Kleen <ak@linux.intel.com>,
	 Kuppuswamy Sathyanarayanan
	<sathyanarayanan.kuppuswamy@linux.intel.com>,
	 David Rientjes <rientjes@google.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	 Tom Lendacky <thomas.lendacky@amd.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	 Peter Zijlstra <peterz@infradead.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	 Ingo Molnar <mingo@redhat.com>,
	Dario Faggioli <dfaggioli@suse.com>,
	Mike Rapoport <rppt@kernel.org>,
	 David Hildenbrand <david@redhat.com>,
	Mel Gorman <mgorman@techsingularity.net>,
	 marcelo.cerri@canonical.com, tim.gardner@canonical.com,
	 khalid.elmously@canonical.com, philip.cox@canonical.com,
	aarcange@redhat.com,  peterx@redhat.com, x86@kernel.org,
	linux-mm@kvack.org,  linux-coco@lists.linux.dev,
	linux-efi@vger.kernel.org,  linux-kernel@vger.kernel.org
Subject: Re: [PATCHv10 04/11] efi/x86: Implement support for unaccepted memory
Date: Tue, 9 May 2023 08:47:38 +0200	[thread overview]
Message-ID: <CAMj1kXGZ4j7nShGPoJzTZNa4NDvHnj_arY8XDXzW8cd6G==8Jg@mail.gmail.com> (raw)
In-Reply-To: <20230509005634.qtuiodpirexbxu2k@box.shutemov.name>

On Tue, 9 May 2023 at 02:56, Kirill A. Shutemov <kirill@shutemov.name> wrote:
>
> On Tue, May 09, 2023 at 12:11:41AM +0200, Ard Biesheuvel wrote:
> > > @@ -1324,13 +1325,15 @@ void __init e820__memblock_setup(void)
> > >          * e820_table is not finalized and e820__end_of_ram_pfn() cannot be
> > >          * used to get correct RAM size.
> > >          */
> > > -       if (boot_params.unaccepted_memory) {
> > > +       if (efi.unaccepted != EFI_INVALID_TABLE_ADDR) {
> > > +               struct efi_unaccepted_memory *unaccepted;
> > >                 unsigned long size;
> > >
> > > -               /* One bit per 2MB */
> > > -               size = DIV_ROUND_UP(e820__end_of_ram_pfn() * PAGE_SIZE,
> > > -                                   PMD_SIZE * BITS_PER_BYTE);
> > > -               memblock_reserve(boot_params.unaccepted_memory, size);
> > > +               unaccepted = __va(efi.unaccepted);
> > > +
> > > +               size = sizeof(struct efi_unaccepted_memory);
> > > +               size += unaccepted->size;
> > > +               memblock_reserve(efi.unaccepted, size);
> > >         }
> > >
> >
> > This could be moved to generic code (but we'll need to use early_memremap())
>
> I don't understand why early_memremap() is needed. EFI_LOADER_DATA already
> mapped into direct mapping. We only need to reserve the memory so it
> could not be reallocated for other things. Hm?
>

*If* we move this to generic code, we have to ensure that we don't
rely on x86 specific semantics. When parsing the EFI configuration
tables, other architectures don't have a complete direct map yet, as
they receive the memory description from EFI not from a translated
E820 map.

Note that this is only for getting the size of the reservation. Later
on, when we actually consume the contents of the bitmap, generic or
non-x86 code will need to use the ordinary memremap() API to map this
memory, and this amounts to a __va() call when the memory is already
mapped. But I am not suggesting changing that part for this series.
And even the hunk above can remain as you suggest - we can revisit it
once other architectures gain support for this.

The main thing I would like to avoid at this point in time is to add
new fields to struct bootparams that loaders such as GRUB may start to
populate as well - I don't think there is a very strong case for
pseudo-EFI boot [where GRUB calls ExitBootServices()] on confidential
VMs (as it prevents the EFI stub and the kernel from accessing the
measurement and attestation APIs), but let's not create more struct
bootparams based API if we can avoid it.


  reply	other threads:[~2023-05-09  6:47 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-07 23:46 [PATCHv10 00/11] mm, x86/cc: " Kirill A. Shutemov
2023-05-07 23:46 ` [PATCHv10 01/11] mm: Add " Kirill A. Shutemov
2023-05-07 23:46 ` [PATCHv10 02/11] efi/x86: Get full memory map in allocate_e820() Kirill A. Shutemov
2023-05-08  7:19   ` Ard Biesheuvel
2023-05-07 23:46 ` [PATCHv10 03/11] x86/boot: Add infrastructure required for unaccepted memory support Kirill A. Shutemov
2023-05-07 23:46 ` [PATCHv10 04/11] efi/x86: Implement support for unaccepted memory Kirill A. Shutemov
2023-05-08  7:30   ` Ard Biesheuvel
2023-05-08 19:00     ` Kirill A. Shutemov
2023-05-08 22:11       ` Ard Biesheuvel
2023-05-09  0:56         ` Kirill A. Shutemov
2023-05-09  6:47           ` Ard Biesheuvel [this message]
2023-05-12  1:59             ` Kirill A. Shutemov
2023-05-12  7:39               ` Ard Biesheuvel
2023-05-12 10:59                 ` Kirill A. Shutemov
2023-05-12 11:01                   ` Ard Biesheuvel
2023-05-07 23:46 ` [PATCHv10 05/11] x86/boot/compressed: Handle " Kirill A. Shutemov
2023-05-08  7:31   ` Ard Biesheuvel
2023-05-07 23:46 ` [PATCHv10 06/11] x86/mm: Reserve unaccepted memory bitmap Kirill A. Shutemov
2023-05-07 23:46 ` [PATCHv10 07/11] x86/mm: Provide helpers for unaccepted memory Kirill A. Shutemov
2023-05-07 23:46 ` [PATCHv10 08/11] x86/mm: Avoid load_unaligned_zeropad() stepping into " Kirill A. Shutemov
2023-05-07 23:46 ` [PATCHv10 09/11] x86/tdx: Make _tdx_hypercall() and __tdx_module_call() available in boot stub Kirill A. Shutemov
2023-05-07 23:46 ` [PATCHv10 10/11] x86/tdx: Refactor try_accept_one() Kirill A. Shutemov
2023-05-07 23:46 ` [PATCHv10 11/11] x86/tdx: Add unaccepted memory support Kirill A. Shutemov

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='CAMj1kXGZ4j7nShGPoJzTZNa4NDvHnj_arY8XDXzW8cd6G==8Jg@mail.gmail.com' \
    --to=ardb@kernel.org \
    --cc=aarcange@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=dave.hansen@intel.com \
    --cc=david@redhat.com \
    --cc=dfaggioli@suse.com \
    --cc=jroedel@suse.de \
    --cc=khalid.elmously@canonical.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kirill@shutemov.name \
    --cc=linux-coco@lists.linux.dev \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=marcelo.cerri@canonical.com \
    --cc=mgorman@techsingularity.net \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=peterz@infradead.org \
    --cc=philip.cox@canonical.com \
    --cc=rientjes@google.com \
    --cc=rppt@kernel.org \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=seanjc@google.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    --cc=tim.gardner@canonical.com \
    --cc=vbabka@suse.cz \
    --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