|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] 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#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |