[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v7 01/22] arm/acpi: Estimate memory required for acpi/efi tables
Hi Shannon, On 25/03/16 13:48, Shannon Zhao wrote: [...] +static int estimate_acpi_efi_size(struct domain *d, struct kernel_info *kinfo) +{ + size_t efi_size, acpi_size, madt_size; + u64 addr; + struct acpi_table_rsdp *rsdp_tbl; + struct acpi_table_header *table; + + efi_size = estimate_efi_size(kinfo->mem.nr_banks); + + acpi_size = ROUNDUP(sizeof(struct acpi_table_fadt), 8); + acpi_size += ROUNDUP(sizeof(struct acpi_table_stao), 8); + + madt_size = sizeof(struct acpi_table_madt) + + sizeof(struct acpi_madt_generic_interrupt) * d->max_vcpus + + sizeof(struct acpi_madt_generic_distributor); + if ( d->arch.vgic.version == GIC_V3 ) + madt_size += sizeof(struct acpi_madt_generic_redistributor) + * d->arch.vgic.nr_regions; + acpi_size += ROUNDUP(madt_size, 8); + + addr = acpi_os_get_root_pointer(); + if ( !addr ) + { + printk("Unable to get acpi root pointer\n"); + return -EINVAL; + } + + rsdp_tbl = acpi_os_map_memory(addr, sizeof(struct acpi_table_rsdp)); + if ( !rsdp_tbl ) + { + printk("Unable to map RSDP table\n"); + return -EINVAL; + } + + table = acpi_os_map_memory(rsdp_tbl->xsdt_physical_address, + sizeof(struct acpi_table_header)); + if ( !table ) rsdp_tbl will be left mapped if Xen fails to map the XSDT.As you don't use rsdp_tbl later, I would move acpi_os_unmap_memory(rsdp_tlb,...) here. With this change: Acked-by: Julien Grall <julien.grall@xxxxxxx> + { + printk("Unable to map XSDT table\n"); + return -EINVAL; + } + + /* Add place for STAO table in XSDT table */ + acpi_size += ROUNDUP(table->length + sizeof(u64), 8); + acpi_os_unmap_memory(table, sizeof(struct acpi_table_header)); + acpi_os_unmap_memory(rsdp_tbl, sizeof(struct acpi_table_rsdp)); + + acpi_size += ROUNDUP(sizeof(struct acpi_table_rsdp), 8); + d->arch.efi_acpi_len = PAGE_ALIGN(ROUNDUP(efi_size, 8) + + ROUNDUP(acpi_size, 8)); + + return 0; +} Regards, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |