[Xen-devel] [PATCH v3 06/62] acpi: Refactor acpi_os_map_memory to be architecturally independent
Stefano Stabellini
stefano.stabellini at eu.citrix.com
Mon Nov 23 03:29:04 PST 2015
On Tue, 17 Nov 2015, shannon.zhao at linaro.org wrote:
> From: Shannon Zhao <shannon.zhao at linaro.org>
> Current acpi_os_map_memory is specific to x86. Refactor it to be
> architecturally independent.
I would say "Move it to an x86-specific location".
> Signed-off-by: Shannon Zhao <shannon.zhao at linaro.org>
Acked-by: Stefano Stabellini <stefano.stabellini at eu.citrix.com>
> xen/arch/x86/acpi/lib.c | 16 ++++++++++++++++
> xen/drivers/acpi/osl.c | 12 +-----------
> xen/include/xen/acpi.h | 2 ++
> 3 files changed, 19 insertions(+), 11 deletions(-)
>
> diff --git a/xen/arch/x86/acpi/lib.c b/xen/arch/x86/acpi/lib.c
> index cc15ea3..1e2e124 100644
> --- a/xen/arch/x86/acpi/lib.c
> +++ b/xen/arch/x86/acpi/lib.c
> @@ -33,6 +33,22 @@ u8 __read_mostly acpi_disable_value;
> u32 __read_mostly x86_acpiid_to_apicid[MAX_MADT_ENTRIES] =
> {[0 ... MAX_MADT_ENTRIES - 1] = BAD_APICID };
>
> +void __iomem *
> +arch_acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
> +{
> + if (system_state >= SYS_STATE_active) {
> + mfn_t mfn = _mfn(PFN_DOWN(phys));
> + unsigned int offs = phys & (PAGE_SIZE - 1);
> +
> + /* The low first Mb is always mapped. */
> + if ( !((phys + size - 1) >> 20) )
> + return __va(phys);
> + return __vmap(&mfn, PFN_UP(offs + size), 1, 1,
> + PAGE_HYPERVISOR_NOCACHE) + offs;
> + }
> + return __acpi_map_table(phys, size);
> +}
> +
> /*
> * Important Safety Note: The fixed ACPI page numbers are *subtracted*
> * from the fixed base. That's why we start at FIX_ACPI_END and
> diff --git a/xen/drivers/acpi/osl.c b/xen/drivers/acpi/osl.c
> index db74a90..54fb0f0 100644
> --- a/xen/drivers/acpi/osl.c
> +++ b/xen/drivers/acpi/osl.c
> @@ -88,17 +88,7 @@ acpi_physical_address __init acpi_os_get_root_pointer(void)
> void __iomem *
> acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
> {
> - if (system_state >= SYS_STATE_active) {
> - mfn_t mfn = _mfn(PFN_DOWN(phys));
> - unsigned int offs = phys & (PAGE_SIZE - 1);
> -
> - /* The low first Mb is always mapped. */
> - if ( !((phys + size - 1) >> 20) )
> - return __va(phys);
> - return __vmap(&mfn, PFN_UP(offs + size), 1, 1,
> - PAGE_HYPERVISOR_NOCACHE) + offs;
> - }
> - return __acpi_map_table(phys, size);
> + return arch_acpi_os_map_memory(phys, size);
> }
>
> void acpi_os_unmap_memory(void __iomem * virt, acpi_size size)
> diff --git a/xen/include/xen/acpi.h b/xen/include/xen/acpi.h
> index 0f1077d..48d7810 100644
> --- a/xen/include/xen/acpi.h
> +++ b/xen/include/xen/acpi.h
> @@ -54,6 +54,8 @@ typedef int (*acpi_table_handler) (struct acpi_table_header *table);
>
> typedef int (*acpi_table_entry_handler) (struct acpi_subtable_header *header, const unsigned long end);
>
> +void __iomem *
> +arch_acpi_os_map_memory(acpi_physical_address phys, acpi_size size);
> unsigned int acpi_get_processor_id (unsigned int cpu);
> char * __acpi_map_table (paddr_t phys_addr, unsigned long size);
> int acpi_boot_init (void);
> --
> 2.1.0
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel at lists.xen.org
> http://lists.xen.org/xen-devel
>
More information about the linux-arm-kernel
mailing list