Message ID | 1456777749-9336-1-git-send-email-zhaoshenglong@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
>>> On 29.02.16 at 21:29, <zhaoshenglong@huawei.com> wrote: > Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org> > --- > v7: fix coding style Thanks, almost (see below). > --- /dev/null > +++ b/xen/arch/arm/acpi/lib.c > @@ -0,0 +1,53 @@ > +/* > + * lib.c - Architecture-Specific Low-Level ACPI Support > + * > + * Copyright (C) 2015, Shannon Zhao <shannon.zhao@linaro.org> > + * > + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA I'm sorry for noticing only now, but iirc a while ago there was a huge commit removing these addresses from source files. See the x86 counterpart of this file for how the header is expected to look like now. > + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > + */ > + > +#include <xen/acpi.h> > +#include <xen/mm.h> > +#include <asm/config.h> > + > +char *__acpi_map_table(paddr_t phys, unsigned long size) > +{ > + unsigned long base, offset, mapped_size; > + int idx; > + > + offset = phys & (PAGE_SIZE - 1); > + mapped_size = PAGE_SIZE - offset; > + set_fixmap(FIXMAP_ACPI_BEGIN, phys >> PAGE_SHIFT, PAGE_HYPERVISOR); > + base = FIXMAP_ADDR(FIXMAP_ACPI_BEGIN); > + > + /* > + * Most cases can be covered by the below. > + */ According to our style this is to be a single line comment. Also please note that especially for larger series sending individual patch updates is sub-optimal: I'm not going to invest much time to try and track which patch of a series at which version is ready to go in. When a full series is submitted, initial parts that are ready or become ready by receiving the necessary ack-s will get applied. Anything past the first patch in the series that needs an update will get dropped, unless it was clearly and explicitly said that some patch can be applied out of order. Collecting things in a piecemeal manner (like what would result if this patch was now ready to go in) is just too time consuming. Jan
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile index 1783912..6d51094 100644 --- a/xen/arch/arm/Makefile +++ b/xen/arch/arm/Makefile @@ -2,6 +2,7 @@ subdir-$(CONFIG_ARM_32) += arm32 subdir-$(CONFIG_ARM_64) += arm64 subdir-y += platforms subdir-$(CONFIG_ARM_64) += efi +subdir-$(CONFIG_HAS_ACPI) += acpi obj-$(EARLY_PRINTK) += early_printk.o obj-y += cpu.o diff --git a/xen/arch/arm/acpi/Makefile b/xen/arch/arm/acpi/Makefile new file mode 100644 index 0000000..b5be22d --- /dev/null +++ b/xen/arch/arm/acpi/Makefile @@ -0,0 +1 @@ +obj-y += lib.o diff --git a/xen/arch/arm/acpi/lib.c b/xen/arch/arm/acpi/lib.c new file mode 100644 index 0000000..9ff8a9c --- /dev/null +++ b/xen/arch/arm/acpi/lib.c @@ -0,0 +1,53 @@ +/* + * lib.c - Architecture-Specific Low-Level ACPI Support + * + * Copyright (C) 2015, Shannon Zhao <shannon.zhao@linaro.org> + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + +#include <xen/acpi.h> +#include <xen/mm.h> +#include <asm/config.h> + +char *__acpi_map_table(paddr_t phys, unsigned long size) +{ + unsigned long base, offset, mapped_size; + int idx; + + offset = phys & (PAGE_SIZE - 1); + mapped_size = PAGE_SIZE - offset; + set_fixmap(FIXMAP_ACPI_BEGIN, phys >> PAGE_SHIFT, PAGE_HYPERVISOR); + base = FIXMAP_ADDR(FIXMAP_ACPI_BEGIN); + + /* + * Most cases can be covered by the below. + */ + idx = FIXMAP_ACPI_BEGIN; + while ( mapped_size < size ) + { + if ( ++idx > FIXMAP_ACPI_END ) + return NULL; /* cannot handle this */ + phys += PAGE_SIZE; + set_fixmap(idx, phys >> PAGE_SHIFT, PAGE_HYPERVISOR); + mapped_size += PAGE_SIZE; + } + + return ((char *) base + offset); +} diff --git a/xen/include/asm-arm/config.h b/xen/include/asm-arm/config.h index a1b968d..a26cb1a 100644 --- a/xen/include/asm-arm/config.h +++ b/xen/include/asm-arm/config.h @@ -180,6 +180,8 @@ #define FIXMAP_GICC1 4 /* Interrupt controller: CPU registers (first page) */ #define FIXMAP_GICC2 5 /* Interrupt controller: CPU registers (second page) */ #define FIXMAP_GICH 6 /* Interrupt controller: virtual interface control registers */ +#define FIXMAP_ACPI_BEGIN 7 /* Start mappings of ACPI tables */ +#define FIXMAP_ACPI_END (FIXMAP_ACPI_BEGIN + NUM_FIXMAP_ACPI_PAGES - 1) /* End mappings of ACPI tables */ #define PAGE_SHIFT 12 diff --git a/xen/include/asm-x86/acpi.h b/xen/include/asm-x86/acpi.h index d532e3d..49f7e1e 100644 --- a/xen/include/asm-x86/acpi.h +++ b/xen/include/asm-x86/acpi.h @@ -90,9 +90,6 @@ static inline void disable_acpi(void) acpi_noirq = 1; } -/* Fixmap pages to reserve for ACPI boot-time tables (see fixmap.h) */ -#define FIX_ACPI_PAGES 4 - static inline void acpi_noirq_set(void) { acpi_noirq = 1; } /* routines for saving/restoring kernel state */ diff --git a/xen/include/asm-x86/fixmap.h b/xen/include/asm-x86/fixmap.h index 1e24b11..dc0856f 100644 --- a/xen/include/asm-x86/fixmap.h +++ b/xen/include/asm-x86/fixmap.h @@ -19,11 +19,11 @@ #ifndef __ASSEMBLY__ +#include <xen/acpi.h> #include <xen/pfn.h> #include <xen/kexec.h> #include <xen/iommu.h> #include <asm/apicdef.h> -#include <asm/acpi.h> #include <asm/amd-iommu.h> #include <asm/msi.h> #include <acpi/apei.h> @@ -51,7 +51,7 @@ enum fixed_addresses { FIX_IO_APIC_BASE_0, FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS-1, FIX_ACPI_BEGIN, - FIX_ACPI_END = FIX_ACPI_BEGIN + FIX_ACPI_PAGES - 1, + FIX_ACPI_END = FIX_ACPI_BEGIN + NUM_FIXMAP_ACPI_PAGES - 1, FIX_HPET_BASE, FIX_TBOOT_SHARED_BASE, FIX_MSIX_IO_RESERV_BASE, diff --git a/xen/include/xen/acpi.h b/xen/include/xen/acpi.h index 65e53a6..6633414 100644 --- a/xen/include/xen/acpi.h +++ b/xen/include/xen/acpi.h @@ -39,6 +39,12 @@ #define ACPI_MADT_GET_POLARITY(inti) ACPI_MADT_GET_(POLARITY, inti) #define ACPI_MADT_GET_TRIGGER(inti) ACPI_MADT_GET_(TRIGGER, inti) +/* + * Fixmap pages to reserve for ACPI boot-time tables (see asm-x86/fixmap.h or + * asm-arm/config.h) + */ +#define NUM_FIXMAP_ACPI_PAGES 4 + #ifdef CONFIG_ACPI_BOOT enum acpi_interrupt_id {