[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] include: don't use asm/page.h from common headers
commit aa4b9d1ee6538b5cbe218d4d3fcdf9548130a063 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Fri Jan 15 16:02:13 2021 +0100 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Fri Jan 15 16:02:13 2021 +0100 include: don't use asm/page.h from common headers Doing so limits what can be done in (in particular included by) this per- arch header. Abstract out page shift/size related #define-s, which is all the respective headers care about. Extend the replacement / removal to some x86 headers as well; some others now need to include page.h (and they really should have before). Arm's VADDR_BITS gets dropped altogether: Its current value is clearly wrong for 64-bit, but the constant also isn't used anywhere right now. While Arm used vaddr_t in PAGE_OFFSET(), this use is compatible with that of unsigned long in the new common implementation. Also drop the dead PAGE_FLAG_MASK at this occasion. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Julien Grall <jgrall@xxxxxxxxxx> --- xen/arch/arm/arm64/lib/clear_page.S | 2 ++ xen/include/asm-arm/config.h | 5 ----- xen/include/asm-arm/current.h | 1 + xen/include/asm-arm/page-bits.h | 12 ++++++++++++ xen/include/asm-arm/page.h | 12 +----------- xen/include/asm-x86/current.h | 2 +- xen/include/asm-x86/desc.h | 2 ++ xen/include/asm-x86/fixmap.h | 2 +- xen/include/asm-x86/guest/hyperv-hcall.h | 2 +- xen/include/asm-x86/guest/hyperv-tlfs.h | 2 +- xen/include/asm-x86/io.h | 1 - xen/include/asm-x86/mm.h | 1 + xen/include/asm-x86/page-bits.h | 26 ++++++++++++++++++++++++++ xen/include/asm-x86/page.h | 10 +--------- xen/include/asm-x86/uaccess.h | 1 - xen/include/asm-x86/x86_64/page.h | 23 ----------------------- xen/include/xen/gdbstub.h | 2 +- xen/include/xen/grant_table.h | 1 - xen/include/xen/page-size.h | 18 ++++++++++++++++++ xen/include/xen/pfn.h | 2 +- xen/include/xen/vmap.h | 2 +- 21 files changed, 71 insertions(+), 58 deletions(-) diff --git a/xen/arch/arm/arm64/lib/clear_page.S b/xen/arch/arm/arm64/lib/clear_page.S index 9f8a680e18..a767e63686 100644 --- a/xen/arch/arm/arm64/lib/clear_page.S +++ b/xen/arch/arm/arm64/lib/clear_page.S @@ -14,6 +14,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <xen/page-size.h> + /* * Clear page @dest * diff --git a/xen/include/asm-arm/config.h b/xen/include/asm-arm/config.h index fbb4b23a69..5c10c755db 100644 --- a/xen/include/asm-arm/config.h +++ b/xen/include/asm-arm/config.h @@ -176,11 +176,6 @@ #define FIXMAP_ACPI_BEGIN 2 /* 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 -#define PAGE_SIZE (_AC(1,L) << PAGE_SHIFT) -#define PAGE_MASK (~(PAGE_SIZE-1)) -#define PAGE_FLAG_MASK (~0) - #define NR_hypercalls 64 #define STACK_ORDER 3 diff --git a/xen/include/asm-arm/current.h b/xen/include/asm-arm/current.h index e7fbf535d2..73e81458e5 100644 --- a/xen/include/asm-arm/current.h +++ b/xen/include/asm-arm/current.h @@ -1,6 +1,7 @@ #ifndef __ARM_CURRENT_H__ #define __ARM_CURRENT_H__ +#include <xen/page-size.h> #include <xen/percpu.h> #include <asm/processor.h> diff --git a/xen/include/asm-arm/page-bits.h b/xen/include/asm-arm/page-bits.h new file mode 100644 index 0000000000..5d6477e599 --- /dev/null +++ b/xen/include/asm-arm/page-bits.h @@ -0,0 +1,12 @@ +#ifndef __ARM_PAGE_SHIFT_H__ +#define __ARM_PAGE_SHIFT_H__ + +#define PAGE_SHIFT 12 + +#ifdef CONFIG_ARM_64 +#define PADDR_BITS 48 +#else +#define PADDR_BITS 40 +#endif + +#endif /* __ARM_PAGE_SHIFT_H__ */ diff --git a/xen/include/asm-arm/page.h b/xen/include/asm-arm/page.h index 4ea8e97247..131507a517 100644 --- a/xen/include/asm-arm/page.h +++ b/xen/include/asm-arm/page.h @@ -2,21 +2,11 @@ #define __ARM_PAGE_H__ #include <public/xen.h> +#include <xen/page-size.h> #include <asm/processor.h> #include <asm/lpae.h> #include <asm/sysregs.h> -#ifdef CONFIG_ARM_64 -#define PADDR_BITS 48 -#else -#define PADDR_BITS 40 -#endif -#define PADDR_MASK ((1ULL << PADDR_BITS)-1) -#define PAGE_OFFSET(ptr) ((vaddr_t)(ptr) & ~PAGE_MASK) - -#define VADDR_BITS 32 -#define VADDR_MASK (~0UL) - /* Shareability values for the LPAE entries */ #define LPAE_SH_NON_SHAREABLE 0x0 #define LPAE_SH_UNPREDICTALE 0x1 diff --git a/xen/include/asm-x86/current.h b/xen/include/asm-x86/current.h index 5d690ce014..a74ad4bc4c 100644 --- a/xen/include/asm-x86/current.h +++ b/xen/include/asm-x86/current.h @@ -8,8 +8,8 @@ #define __X86_CURRENT_H__ #include <xen/percpu.h> +#include <xen/page-size.h> #include <public/xen.h> -#include <asm/page.h> /* * Xen's cpu stacks are 8 pages (8-page aligned), arranged as: diff --git a/xen/include/asm-x86/desc.h b/xen/include/asm-x86/desc.h index dfa643925f..225a864c48 100644 --- a/xen/include/asm-x86/desc.h +++ b/xen/include/asm-x86/desc.h @@ -1,6 +1,8 @@ #ifndef __ARCH_DESC_H #define __ARCH_DESC_H +#include <asm/page.h> + /* * Xen reserves a memory page of GDT entries. * No guest GDT entries exist beyond the Xen reserved area. diff --git a/xen/include/asm-x86/fixmap.h b/xen/include/asm-x86/fixmap.h index 83b2b7634d..0db314baeb 100644 --- a/xen/include/asm-x86/fixmap.h +++ b/xen/include/asm-x86/fixmap.h @@ -12,7 +12,7 @@ #ifndef _ASM_FIXMAP_H #define _ASM_FIXMAP_H -#include <asm/page.h> +#include <xen/page-size.h> #define FIXADDR_TOP (VMAP_VIRT_END - PAGE_SIZE) #define FIXADDR_X_TOP (XEN_VIRT_END - PAGE_SIZE) diff --git a/xen/include/asm-x86/guest/hyperv-hcall.h b/xen/include/asm-x86/guest/hyperv-hcall.h index 4d3b131b3a..423ca0860b 100644 --- a/xen/include/asm-x86/guest/hyperv-hcall.h +++ b/xen/include/asm-x86/guest/hyperv-hcall.h @@ -20,12 +20,12 @@ #define __X86_HYPERV_HCALL_H__ #include <xen/lib.h> +#include <xen/page-size.h> #include <xen/types.h> #include <asm/asm_defns.h> #include <asm/fixmap.h> #include <asm/guest/hyperv-tlfs.h> -#include <asm/page.h> static inline uint64_t hv_do_hypercall(uint64_t control, paddr_t input_addr, paddr_t output_addr) diff --git a/xen/include/asm-x86/guest/hyperv-tlfs.h b/xen/include/asm-x86/guest/hyperv-tlfs.h index 0a0f3398c1..03b71af82f 100644 --- a/xen/include/asm-x86/guest/hyperv-tlfs.h +++ b/xen/include/asm-x86/guest/hyperv-tlfs.h @@ -10,8 +10,8 @@ #define _ASM_X86_HYPERV_TLFS_H #include <xen/bitops.h> +#include <xen/page-size.h> #include <xen/types.h> -#include <asm/page.h> /* * While not explicitly listed in the TLFS, Hyper-V always runs with a page size diff --git a/xen/include/asm-x86/io.h b/xen/include/asm-x86/io.h index 5afe68239d..82ca7d47f4 100644 --- a/xen/include/asm-x86/io.h +++ b/xen/include/asm-x86/io.h @@ -3,7 +3,6 @@ #include <xen/vmap.h> #include <xen/types.h> -#include <asm/page.h> #define readb(x) (*(volatile uint8_t *)(x)) #define readw(x) (*(volatile uint16_t *)(x)) diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h index deeba75a1c..1fdb4eb835 100644 --- a/xen/include/asm-x86/mm.h +++ b/xen/include/asm-x86/mm.h @@ -6,6 +6,7 @@ #include <xen/spinlock.h> #include <xen/rwlock.h> #include <asm/io.h> +#include <asm/page.h> #include <asm/uaccess.h> #include <asm/x86_emulate.h> diff --git a/xen/include/asm-x86/page-bits.h b/xen/include/asm-x86/page-bits.h new file mode 100644 index 0000000000..6f7fc7d035 --- /dev/null +++ b/xen/include/asm-x86/page-bits.h @@ -0,0 +1,26 @@ +#ifndef __X86_PAGE_SHIFT_H__ +#define __X86_PAGE_SHIFT_H__ + +#define L1_PAGETABLE_SHIFT 12 +#define L2_PAGETABLE_SHIFT 21 +#define L3_PAGETABLE_SHIFT 30 +#define L4_PAGETABLE_SHIFT 39 +#define PAGE_SHIFT L1_PAGETABLE_SHIFT +#define SUPERPAGE_SHIFT L2_PAGETABLE_SHIFT +#define ROOT_PAGETABLE_SHIFT L4_PAGETABLE_SHIFT + +#define PAGETABLE_ORDER 9 +#define L1_PAGETABLE_ENTRIES (1 << PAGETABLE_ORDER) +#define L2_PAGETABLE_ENTRIES (1 << PAGETABLE_ORDER) +#define L3_PAGETABLE_ENTRIES (1 << PAGETABLE_ORDER) +#define L4_PAGETABLE_ENTRIES (1 << PAGETABLE_ORDER) +#define ROOT_PAGETABLE_ENTRIES L4_PAGETABLE_ENTRIES + +#define SUPERPAGE_ORDER PAGETABLE_ORDER +#define SUPERPAGE_PAGES (1 << SUPERPAGE_ORDER) + +/* These are architectural limits. */ +#define PADDR_BITS 52 +#define VADDR_BITS 48 + +#endif /* __X86_PAGE_SHIFT_H__ */ diff --git a/xen/include/asm-x86/page.h b/xen/include/asm-x86/page.h index 082c14a662..4c7f2cb70c 100644 --- a/xen/include/asm-x86/page.h +++ b/xen/include/asm-x86/page.h @@ -2,15 +2,7 @@ #define __X86_PAGE_H__ #include <xen/const.h> - -/* - * It is important that the masks are signed quantities. This ensures that - * the compiler sign-extends a 32-bit mask to 64 bits if that is required. - */ -#define PAGE_SIZE (_AC(1,L) << PAGE_SHIFT) -#define PAGE_MASK (~(PAGE_SIZE-1)) -#define PAGE_FLAG_MASK (~0) -#define PAGE_OFFSET(ptr) ((unsigned long)(ptr) & ~PAGE_MASK) +#include <xen/page-size.h> #define PAGE_ORDER_4K 0 #define PAGE_ORDER_2M 9 diff --git a/xen/include/asm-x86/uaccess.h b/xen/include/asm-x86/uaccess.h index 3501038077..8411fb9586 100644 --- a/xen/include/asm-x86/uaccess.h +++ b/xen/include/asm-x86/uaccess.h @@ -6,7 +6,6 @@ #include <xen/errno.h> #include <xen/prefetch.h> #include <asm/asm_defns.h> -#include <asm/page.h> #include <asm/x86_64/uaccess.h> diff --git a/xen/include/asm-x86/x86_64/page.h b/xen/include/asm-x86/x86_64/page.h index 60db28f4e7..f9faf7f383 100644 --- a/xen/include/asm-x86/x86_64/page.h +++ b/xen/include/asm-x86/x86_64/page.h @@ -2,31 +2,8 @@ #ifndef __X86_64_PAGE_H__ #define __X86_64_PAGE_H__ -#define L1_PAGETABLE_SHIFT 12 -#define L2_PAGETABLE_SHIFT 21 -#define L3_PAGETABLE_SHIFT 30 -#define L4_PAGETABLE_SHIFT 39 -#define PAGE_SHIFT L1_PAGETABLE_SHIFT -#define SUPERPAGE_SHIFT L2_PAGETABLE_SHIFT -#define ROOT_PAGETABLE_SHIFT L4_PAGETABLE_SHIFT - -#define PAGETABLE_ORDER 9 -#define L1_PAGETABLE_ENTRIES (1<<PAGETABLE_ORDER) -#define L2_PAGETABLE_ENTRIES (1<<PAGETABLE_ORDER) -#define L3_PAGETABLE_ENTRIES (1<<PAGETABLE_ORDER) -#define L4_PAGETABLE_ENTRIES (1<<PAGETABLE_ORDER) -#define ROOT_PAGETABLE_ENTRIES L4_PAGETABLE_ENTRIES -#define SUPERPAGE_ORDER PAGETABLE_ORDER -#define SUPERPAGE_PAGES (1<<SUPERPAGE_ORDER) - #define __XEN_VIRT_START XEN_VIRT_START -/* These are architectural limits. Current CPUs support only 40-bit phys. */ -#define PADDR_BITS 52 -#define VADDR_BITS 48 -#define PADDR_MASK ((_AC(1,UL) << PADDR_BITS) - 1) -#define VADDR_MASK ((_AC(1,UL) << VADDR_BITS) - 1) - #define VADDR_TOP_BIT (1UL << (VADDR_BITS - 1)) #define CANONICAL_MASK (~0UL & ~VADDR_MASK) diff --git a/xen/include/xen/gdbstub.h b/xen/include/xen/gdbstub.h index a5e6714439..0b2041095d 100644 --- a/xen/include/xen/gdbstub.h +++ b/xen/include/xen/gdbstub.h @@ -20,8 +20,8 @@ #ifndef __XEN_GDBSTUB_H__ #define __XEN_GDBSTUB_H__ +#include <xen/page-size.h> #include <asm/atomic.h> -#include <asm/page.h> #ifdef CONFIG_CRASH_DEBUG diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h index 98603604b8..cb5d325da8 100644 --- a/xen/include/xen/grant_table.h +++ b/xen/include/xen/grant_table.h @@ -26,7 +26,6 @@ #include <xen/mm.h> #include <xen/rwlock.h> #include <public/grant_table.h> -#include <asm/page.h> #include <asm/grant_table.h> #ifdef CONFIG_GRANT_TABLE diff --git a/xen/include/xen/page-size.h b/xen/include/xen/page-size.h new file mode 100644 index 0000000000..dc5ade107b --- /dev/null +++ b/xen/include/xen/page-size.h @@ -0,0 +1,18 @@ +#ifndef __XEN_PAGE_SIZE_H__ +#define __XEN_PAGE_SIZE_H__ + +#include <xen/const.h> +#include <asm/page-bits.h> + +/* + * It is important that the masks are signed quantities. This ensures that + * the compiler sign-extends a 32-bit mask to 64 bits if that is required. + */ +#define PAGE_SIZE (_AC(1,L) << PAGE_SHIFT) +#define PAGE_MASK (~(PAGE_SIZE-1)) +#define PAGE_OFFSET(ptr) ((unsigned long)(ptr) & ~PAGE_MASK) + +#define PADDR_MASK ((_AC(1,ULL) << PADDR_BITS) - 1) +#define VADDR_MASK (~_AC(0,UL) >> (BITS_PER_LONG - VADDR_BITS)) + +#endif /* __XEN_PAGE_SIZE__ */ diff --git a/xen/include/xen/pfn.h b/xen/include/xen/pfn.h index 24a4c2ff7c..1ca9b095e0 100644 --- a/xen/include/xen/pfn.h +++ b/xen/include/xen/pfn.h @@ -1,7 +1,7 @@ #ifndef __XEN_PFN_H__ #define __XEN_PFN_H__ -#include <asm/page.h> +#include <xen/page-size.h> #define PFN_DOWN(x) ((x) >> PAGE_SHIFT) #define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h index 369560e620..eb9eed3ba2 100644 --- a/xen/include/xen/vmap.h +++ b/xen/include/xen/vmap.h @@ -2,7 +2,7 @@ #define __XEN_VMAP_H__ #include <xen/mm.h> -#include <asm/page.h> +#include <xen/page-size.h> enum vmap_region { VMAP_DEFAULT, -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |