[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 29/41] arm : acpi read acpi memory info from uefi
ACPI memory is seperate from conventional memory and should be marked as reserved while passing to DOM0. Create a new meminfo structure to store all the acpi tables listed in uefi. Signed-off-by: Parth Dixit <parth.dixit@xxxxxxxxxx> --- xen/arch/arm/domain_build.c | 2 ++ xen/arch/arm/efi/efi-boot.h | 20 +++++++++++++++++--- xen/include/asm-arm/setup.h | 1 + 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 865b81a..9d98f64 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -42,6 +42,8 @@ static void __init parse_dom0_mem(const char *s) } custom_param("dom0_mem", parse_dom0_mem); +struct meminfo __initdata acpi_mem; + //#define DEBUG_DT #ifdef DEBUG_DT diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h index b02cc02..d21cba5 100644 --- a/xen/arch/arm/efi/efi-boot.h +++ b/xen/arch/arm/efi/efi-boot.h @@ -127,14 +127,16 @@ static EFI_STATUS __init efi_process_memory_map_bootinfo(EFI_MEMORY_DESCRIPTOR * { int Index; int i = 0; + int j = 0; EFI_MEMORY_DESCRIPTOR *desc_ptr = map; for ( Index = 0; Index < (mmap_size / desc_size); Index++ ) { - if ( desc_ptr->Type == EfiConventionalMemory - || desc_ptr->Type == EfiBootServicesCode - || desc_ptr->Type == EfiBootServicesData ) + switch( desc_ptr->Type ) { + case EfiConventionalMemory: + case EfiBootServicesCode: + case EfiBootServicesData: if ( i >= NR_MEM_BANKS ) { PrintStr(L"Warning: All " __stringify(NR_MEM_BANKS) @@ -144,11 +146,23 @@ static EFI_STATUS __init efi_process_memory_map_bootinfo(EFI_MEMORY_DESCRIPTOR * bootinfo.mem.bank[i].start = desc_ptr->PhysicalStart; bootinfo.mem.bank[i].size = desc_ptr->NumberOfPages * EFI_PAGE_SIZE; ++i; + break; + case EfiACPIReclaimMemory: + if ( j >= NR_MEM_BANKS ) + { + PrintStr(L"Warning: All " __stringify(NR_MEM_BANKS) + " acpi meminfo mem banks exhausted.\r\n"); + break; + } + acpi_mem.bank[j].start = desc_ptr->PhysicalStart; + acpi_mem.bank[j].size = desc_ptr->NumberOfPages * EFI_PAGE_SIZE; + ++j; } desc_ptr = NextMemoryDescriptor(desc_ptr, desc_size); } bootinfo.mem.nr_banks = i; + acpi_mem.nr_banks = j; return EFI_SUCCESS; } diff --git a/xen/include/asm-arm/setup.h b/xen/include/asm-arm/setup.h index ba5a67d..1865b72 100644 --- a/xen/include/asm-arm/setup.h +++ b/xen/include/asm-arm/setup.h @@ -46,6 +46,7 @@ struct bootinfo { }; extern struct bootinfo bootinfo; +extern struct meminfo acpi_mem; void arch_init_memory(void); -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |