[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v1 2/3] EFI/early: Add /map to map EfiBootServicesData and Code
>>> Konrad Rzeszutek Wilk <konrad@xxxxxxxxxx> 04/24/15 10:48 PM >>> >--- a/xen/arch/x86/efi/efi-boot.h >+++ b/xen/arch/x86/efi/efi-boot.h >@@ -133,7 +133,8 @@ static void __init >efi_arch_process_memory_map(EFI_SYSTEM_TABLE *SystemTable, >void *map, >UINTN map_size, >UINTN desc_size, >- UINT32 desc_ver) >+ UINT32 desc_ver, >+ UINT32 map_bootservices) There's no reason I can see for this not to be bool_t. >@@ -151,9 +152,14 @@ static void __init >efi_arch_process_memory_map(EFI_SYSTEM_TABLE *SystemTable, >default: >type = E820_RESERVED; >break; >- case EfiConventionalMemory: >case EfiBootServicesCode: >case EfiBootServicesData: >+ if ( map_bootservices ) >+ { >+ type = E820_RESERVED; >+ break; >+ } >+ case EfiConventionalMemory: For Coverity's sake please add a fall-through comment here. >@@ -755,6 +756,8 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE >*SystemTable) >base_video = 1; >else if ( wstrcmp(ptr + 1, L"noexit") == 0 ) >exit_boot_services = 0; >+ else if ( wstrcmp(ptr + 1, L"map") == 0 ) >+ map_bs = 1; "map" is surely ambiguous - please make this at least "mapbs". >for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size ) >{ >EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i; >u64 len = desc->NumberOfPages << EFI_PAGE_SHIFT; >unsigned long smfn, emfn; >unsigned int prot = PAGE_HYPERVISOR; >+ unsigned int skip = 1; bool_t. >- if ( !efi_rs_enable || !(desc->Attribute & EFI_MEMORY_RUNTIME) ) >+ if ( desc->Attribute & EFI_MEMORY_RUNTIME ) >+ skip = 0; >+ >+ if ( desc->Type == 4 && desc->Attribute != 0 && efi_map ) >+ skip = 0; >+ >+ if ( desc->Type == 3 && desc->Attribute != 0 && efi_map ) >+ skip = 0; Please don't use 3 and 4 here, but the proper EFI #define-s. Or if there is any reason preventing their use, please at least at these as comments. Also what's the reason the the ->Attribute != 0 check? (Perhaps worth adding a comment if this is really needed.) >--- a/xen/common/efi/efi.h >+++ b/xen/common/efi/efi.h >@@ -20,7 +20,7 @@ struct efi_pci_rom { >extern unsigned int efi_num_ct; >extern const EFI_CONFIGURATION_TABLE *efi_ct; > >-extern unsigned int efi_version, efi_fw_revision; >+extern unsigned int efi_version, efi_fw_revision, efi_map; Does this really need to be extern (rather than static __initdata)? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |