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)