+ mroth - brijesh On Thu, May 12, 2022 at 10:34:02PM -0700, Dionna Amalie Glaze wrote: > Kirill, I've been tracking these changes to see if we can handle the > unaccepted memory type for SEV-SNP, but testing has been an issue. The > proposed patch in Ovmf to introduce unaccepted memory seems to have > stalled out last September > (https://www.mail-archive.com/devel@xxxxxxxxxxxxxx/msg35842.html) and > is particularly difficult to adapt to SEV-SNP since it doesn't follow > the TDVF way of initializing all memory. Is there a different > development I might have missed so that we might test these cases? > Without the UEFI introducing EFI_UNACCEPTED_MEMORY type, any kernel > uses are essentially dead code. > > Thanks, > -Dionna > > (apologies for repost in text mode) > > On Tue, May 10, 2022 at 4:04 AM Borislav Petkov <bp@xxxxxxxxx> wrote: > > > > On Fri, May 06, 2022 at 06:30:13PM +0300, Kirill A. Shutemov wrote: > > > I find it harder to follow. > > > > If in doubt, always consider using a helper function: > > > > --- > > > > diff --git a/arch/x86/boot/compressed/efi.h b/arch/x86/boot/compressed/efi.h > > index 7db2f41b54cd..cf475243b6d5 100644 > > --- a/arch/x86/boot/compressed/efi.h > > +++ b/arch/x86/boot/compressed/efi.h > > @@ -32,6 +32,7 @@ typedef struct { > > } efi_table_hdr_t; > > > > #define EFI_CONVENTIONAL_MEMORY 7 > > +#define EFI_UNACCEPTED_MEMORY 15 > > > > #define EFI_MEMORY_MORE_RELIABLE \ > > ((u64)0x0000000000010000ULL) /* higher reliability */ > > diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c > > index 28b91df9d31e..39bb4c319dfc 100644 > > --- a/arch/x86/boot/compressed/kaslr.c > > +++ b/arch/x86/boot/compressed/kaslr.c > > @@ -671,6 +671,23 @@ static bool process_mem_region(struct mem_vector *region, > > } > > > > #ifdef CONFIG_EFI > > + > > +/* > > + * Only EFI_CONVENTIONAL_MEMORY and EFI_UNACCEPTED_MEMORY (if supported) are guaranteed > > + * to be free. > > + */ > > +static inline bool memory_type_is_free(efi_memory_desc_t *md) > > +{ > > + if (md->type == EFI_CONVENTIONAL_MEMORY) > > + return true; > > + > > + if (IS_ENABLED(CONFIG_UNACCEPTED_MEMORY)) > > + if (md->type == EFI_UNACCEPTED_MEMORY) > > + return true; > > + > > + return false; > > +} > > + > > /* > > * Returns true if we processed the EFI memmap, which we prefer over the E820 > > * table if it is available. > > @@ -723,21 +740,9 @@ process_efi_entries(unsigned long minimum, unsigned long image_size) > > * free memory and thus available to place the kernel image into, > > * but in practice there's firmware where using that memory leads > > * to crashes. > > - * > > - * Only EFI_CONVENTIONAL_MEMORY and EFI_UNACCEPTED_MEMORY (if > > - * supported) are guaranteed to be free. > > */ > > - > > - switch (md->type) { > > - case EFI_CONVENTIONAL_MEMORY: > > - break; > > - case EFI_UNACCEPTED_MEMORY: > > - if (IS_ENABLED(CONFIG_UNACCEPTED_MEMORY)) > > - break; > > + if (!memory_type_is_free(md)) > > continue; > > - default: > > - continue; > > - } > > > > if (efi_soft_reserve_enabled() && > > (md->attribute & EFI_MEMORY_SP)) > > -- > > Regards/Gruss, > > Boris. > > > > https://people.kernel.org/tglx/notes-about-netiquette > > > > -- > -Dionna Glaze, PhD (she/her) > -- Regards/Gruss, Boris. SUSE Software Solutions Germany GmbH, GF: Ivo Totev, HRB 36809, AG Nürnberg