add phys_addr_t for holding physical addresses
Subsystems (4)
PATCH 1/3 add phys_addr_t for holding physical addresses
Add a kernel-wide "phys_addr_t" which is guaranteed to be able to hold any physical address. By default it equals the word size of the architecture, but a 32-bit architecture can set ARCH_PHYS_ADDR_T_64BIT if it needs a 64-bit phys_addr_t.
--- arch/powerpc/Kconfig | 3 +++ arch/powerpc/include/asm/types.h | 7 ------- arch/x86/Kconfig | 3 +++ include/asm-x86/page_32.h | 2 -- include/asm-x86/page_64.h | 1 - include/linux/types.h | 6 ++++++ mm/Kconfig | 3 +++ 7 files changed, 15 insertions(+), 10 deletions(-)
===================================================================
arch/powerpc/Kconfig +3 -0
@@ -21,6 +21,9 @@ config PPC_MERGE def_bool y + +config ARCH_PHYS_ADDR_T_64BIT + def_bool PPC64 || PHYS_64BIT config MMU bool
===================================================================
arch/powerpc/include/asm/types.h +0 -7
@@ -48,13 +48,6 @@typedef __vector128 vector128 ; -/* Physical address used by some IO functions */ -#if defined(CONFIG_PPC64 ) || defined(CONFIG_PHYS_64BIT ) -typedef u64 phys_addr_t ; -#else -typedef u32 phys_addr_t ; -#endif -#ifdef __powerpc64__typedef u64 dma_addr_t ;#else
===================================================================
arch/x86/Kconfig +3 -0
@@ -992,6 +992,9 @@ has the cost of more pagetable lookup overhead, and also consumes more pagetable space per process. +config ARCH_PHYS_ADDR_T_64BIT + def_bool X86_64 || X86_PAE + # Common NUMA Features config NUMA bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
===================================================================
include/asm-x86/page_32.h +0 -2
@@ -33,7 +33,6 @@typedef u64 pudval_t ;typedef u64 pgdval_t ;typedef u64 pgprotval_t ; -typedef u64 phys_addr_t ; typedef union { struct {
@@ -54,7 +53,6 @@typedef unsigned long pudval_t ;typedef unsigned long pgdval_t ;typedef unsigned long pgprotval_t ; -typedef unsigned long phys_addr_t ; typedef union { pteval_t pte;
===================================================================
include/asm-x86/page_64.h +0 -1
@@ -79,7 +79,6 @@typedef unsigned long pudval_t ;typedef unsigned long pgdval_t ;typedef unsigned long pgprotval_t ; -typedef unsigned long phys_addr_t ;typedef struct page *pgtable_t ;
===================================================================
include/linux/types.h +6 -0
@@ -197,6 +197,12 @@typedef u32 resource_size_t ;#endif +#ifdef CONFIG_PHYS_ADDR_T_64BIT +typedef u64 phys_addr_t ; +#else +typedef u32 phys_addr_t ; +#endif +struct ustat {__kernel_daddr_t f_tfree;__kernel_ino_t f_tinode;
===================================================================
mm/Kconfig +3 -0
@@ -190,6 +190,9 @@ help This option allows memory and IO resources to be 64 bit. +config PHYS_ADDR_T_64BIT + def_bool 64BIT || ARCH_PHYS_ADDR_T_64BIT + config ZONE_DMA_FLAG int default "0" if !ZONE_DMA