[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v3 06/62] acpi: Refactor acpi_os_map_memory to be architecturally independent



On Tue, 17 Nov 2015, shannon.zhao@xxxxxxxxxx wrote:
> From: Shannon Zhao <shannon.zhao@xxxxxxxxxx>
> 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@xxxxxxxxxx>

Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>


>  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@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.