Commit 600715dcdf567c86f8b2c6173fcfb4b873e25a19

Authored by Jeremy Fitzhardinge
Committed by Ingo Molnar
1 parent 9dfed08eb4

generic: 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.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

Showing 7 changed files with 15 additions and 10 deletions Side-by-side Diff

arch/powerpc/Kconfig
... ... @@ -22,6 +22,9 @@
22 22 config PPC_MERGE
23 23 def_bool y
24 24  
  25 +config ARCH_PHYS_ADDR_T_64BIT
  26 + def_bool PPC64 || PHYS_64BIT
  27 +
25 28 config MMU
26 29 bool
27 30 default y
arch/powerpc/include/asm/types.h
... ... @@ -48,13 +48,6 @@
48 48  
49 49 typedef __vector128 vector128;
50 50  
51   -/* Physical address used by some IO functions */
52   -#if defined(CONFIG_PPC64) || defined(CONFIG_PHYS_64BIT)
53   -typedef u64 phys_addr_t;
54   -#else
55   -typedef u32 phys_addr_t;
56   -#endif
57   -
58 51 #ifdef __powerpc64__
59 52 typedef u64 dma_addr_t;
60 53 #else
... ... @@ -932,6 +932,9 @@
932 932 has the cost of more pagetable lookup overhead, and also
933 933 consumes more pagetable space per process.
934 934  
  935 +config ARCH_PHYS_ADDR_T_64BIT
  936 + def_bool X86_64 || X86_PAE
  937 +
935 938 # Common NUMA Features
936 939 config NUMA
937 940 bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
include/asm-x86/page_32.h
... ... @@ -33,7 +33,6 @@
33 33 typedef u64 pudval_t;
34 34 typedef u64 pgdval_t;
35 35 typedef u64 pgprotval_t;
36   -typedef u64 phys_addr_t;
37 36  
38 37 typedef union {
39 38 struct {
... ... @@ -54,7 +53,6 @@
54 53 typedef unsigned long pudval_t;
55 54 typedef unsigned long pgdval_t;
56 55 typedef unsigned long pgprotval_t;
57   -typedef unsigned long phys_addr_t;
58 56  
59 57 typedef union {
60 58 pteval_t pte;
include/asm-x86/page_64.h
... ... @@ -79,7 +79,6 @@
79 79 typedef unsigned long pudval_t;
80 80 typedef unsigned long pgdval_t;
81 81 typedef unsigned long pgprotval_t;
82   -typedef unsigned long phys_addr_t;
83 82  
84 83 typedef struct page *pgtable_t;
85 84  
include/linux/types.h
... ... @@ -197,6 +197,12 @@
197 197 typedef u32 resource_size_t;
198 198 #endif
199 199  
  200 +#ifdef CONFIG_PHYS_ADDR_T_64BIT
  201 +typedef u64 phys_addr_t;
  202 +#else
  203 +typedef u32 phys_addr_t;
  204 +#endif
  205 +
200 206 struct ustat {
201 207 __kernel_daddr_t f_tfree;
202 208 __kernel_ino_t f_tinode;
... ... @@ -187,6 +187,9 @@
187 187 help
188 188 This option allows memory and IO resources to be 64 bit.
189 189  
  190 +config PHYS_ADDR_T_64BIT
  191 + def_bool 64BIT || ARCH_PHYS_ADDR_T_64BIT
  192 +
190 193 config ZONE_DMA_FLAG
191 194 int
192 195 default "0" if !ZONE_DMA