On Sat, Oct 30, 2021, Zixuan Wang wrote: > +efi_status_t setup_efi(efi_bootinfo_t *efi_bootinfo) > { > + efi_status_t status; > + > + status = setup_memory_allocator(efi_bootinfo); > + if (status != EFI_SUCCESS) { > + printf("Failed to set up memory allocator: "); > + switch (status) { > + case EFI_OUT_OF_RESOURCES: > + printf("No free memory region\n"); > + break; > + default: > + printf("Unknown error\n"); > + break; > + } > + return status; > + } > + > + status = setup_rsdp(efi_bootinfo); > + if (status != EFI_SUCCESS) { > + printf("Cannot find RSDP in EFI system table\n"); > + return status; > + } > + > + status = setup_amd_sev(); > + if (status != EFI_SUCCESS) { > + switch (status) { > + case EFI_UNSUPPORTED: > + /* Continue if AMD SEV is not supported */ > + break; > + default: > + printf("Set up AMD SEV failed\n"); > + return status; > + } > + } Looks like this is pre-existing behavior, but the switch is quite gratuituous, and arguably does the wrong thing for EFI_UNSUPPORTED here as attempting to setup SEV-ES without SEV is guaranteed to fail. And it'd be really nice if the printf() actually provided the error (below might be wrong, I don't know the type of efi_status-t). status = setup_amd_sev(); /* Continue on if AMD SEV isn't supported, but skip SEV-ES setup. */ if (status == EFI_UNSUPPORTED) goto continue_setup; if (status != EFI_SUCCESS) { printf("AMD SEV setup failed, error = %d\n", status); return status; } /* Same as above, lack of SEV-ES is not a fatal error. */ status = setup_amd_sev_es(); if (status != EFI_SUCCESS && status != EFI_UNSUPPORTED) { printf("AMD SEV-ES setup failed, error = %d\n", status); return status; } continue_setup: > + > + status = setup_amd_sev_es(); > + if (status != EFI_SUCCESS) { > + switch (status) { > + case EFI_UNSUPPORTED: > + /* Continue if AMD SEV-ES is not supported */ > + break; > + default: > + printf("Set up AMD SEV-ES failed\n"); > + return status; > + } > + } > + > reset_apic(); > setup_gdt_tss(); > setup_idt(); > @@ -343,9 +334,9 @@ void setup_efi(efi_bootinfo_t *efi_bootinfo) > enable_apic(); > enable_x2apic(); > smp_init(); > - phys_alloc_init(efi_bootinfo->free_mem_start, efi_bootinfo->free_mem_size); > - setup_efi_rsdp(efi_bootinfo->rsdp); > setup_page_table(); > + > + return EFI_SUCCESS; > } > > #endif /* TARGET_EFI */ > -- > 2.33.0 >