|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 29/41] arm : acpi read acpi memory info from uefi
+shannon
On 8 June 2015 at 21:39, Julien Grall <julien.grall@xxxxxxxxxx> wrote:
> Hi Parth,
>
> On 17/05/2015 21:03, Parth Dixit wrote:
>>
>> ACPI memory is seperate from conventional memory and should
>
>
> s/seperate/separate/
>
>> 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;
>> +
>
>
> Please protect it with an CONFIG_ACPI and please keep all the ACPI variable
> in the same place within this file.
>
>
>> //#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;
>
>
> #ifdef CONFIG_ACPI
>
>> + case EfiACPIReclaimMemory:
>> + if ( j >= NR_MEM_BANKS )
>> + {
>> + PrintStr(L"Warning: All " __stringify(NR_MEM_BANKS)
>> + " acpi meminfo mem banks exhausted.\r\n");
>
>
> DOM0 will likely fail to boot if one of the ACPI region is not present
> because there is not enough place in the array.
>
> Either you allocate dynamically the array or you stop booting on the
> platform. But a warning is not enough...
>
>> + 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;
>
>
> #ifdef CONFIG_ACPI
> ...
> #endif
>
>>
>> void arch_init_memory(void);
>>
>>
>
> --
> Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |