aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-01-23 22:11:50 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-23 22:11:50 -0500
commit3aacd625f20129f5a41ea3ff3b5353b0e4dabd01 (patch)
tree7cf4ea65397f80098b30494df31cfc8f5fa26d63 /arch
parent7e21774db5cc9cf8fe93a64a2f0c6cf47db8ab24 (diff)
parent2a1d689c9ba42a6066540fb221b6ecbd6298b728 (diff)
Merge branch 'akpm' (incoming from Andrew)
Merge second patch-bomb from Andrew Morton: - various misc bits - the rest of MM - add generic fixmap.h, use it - backlight updates - dynamic_debug updates - printk() updates - checkpatch updates - binfmt_elf - ramfs - init/ - autofs4 - drivers/rtc - nilfs - hfsplus - Documentation/ - coredump - procfs - fork - exec - kexec - kdump - partitions - rapidio - rbtree - userns - memstick - w1 - decompressors * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (197 commits) lib/decompress_unlz4.c: always set an error return code on failures romfs: fix returm err while getting inode in fill_super drivers/w1/masters/w1-gpio.c: add strong pullup emulation drivers/memstick/host/rtsx_pci_ms.c: fix ms card data transfer bug userns: relax the posix_acl_valid() checks arch/sh/kernel/dwarf.c: use rbtree postorder iteration helper instead of solution using repeated rb_erase() fs-ext3-use-rbtree-postorder-iteration-helper-instead-of-opencoding-fix fs/ext3: use rbtree postorder iteration helper instead of opencoding fs/jffs2: use rbtree postorder iteration helper instead of opencoding fs/ext4: use rbtree postorder iteration helper instead of opencoding fs/ubifs: use rbtree postorder iteration helper instead of opencoding net/netfilter/ipset/ip_set_hash_netiface.c: use rbtree postorder iteration instead of opencoding rbtree/test: test rbtree_postorder_for_each_entry_safe() rbtree/test: move rb_node to the middle of the test struct rapidio: add modular rapidio core build into powerpc and mips branches partitions/efi: complete documentation of gpt kernel param purpose kdump: add /sys/kernel/vmcoreinfo ABI documentation kdump: fix exported size of vmcoreinfo note kexec: add sysctl to disable kexec_load fs/exec.c: call arch_pick_mmap_layout() only once ...
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/Kconfig8
-rw-r--r--arch/arc/Kconfig4
-rw-r--r--arch/arm/Kconfig12
-rw-r--r--arch/cris/include/asm/io.h4
-rw-r--r--arch/hexagon/include/asm/fixmap.h40
-rw-r--r--arch/ia64/Kconfig1
-rw-r--r--arch/ia64/include/asm/dmi.h8
-rw-r--r--arch/ia64/include/asm/processor.h1
-rw-r--r--arch/m32r/Kconfig8
-rw-r--r--arch/metag/include/asm/fixmap.h32
-rw-r--r--arch/microblaze/Kconfig1
-rw-r--r--arch/microblaze/include/asm/fixmap.h44
-rw-r--r--arch/mips/Kconfig10
-rw-r--r--arch/mips/include/asm/fixmap.h33
-rw-r--r--arch/mn10300/Kconfig8
-rw-r--r--arch/parisc/Kconfig8
-rw-r--r--arch/powerpc/Kconfig4
-rw-r--r--arch/powerpc/include/asm/fixmap.h44
-rw-r--r--arch/s390/Kconfig4
-rw-r--r--arch/sh/Kconfig8
-rw-r--r--arch/sh/include/asm/fixmap.h39
-rw-r--r--arch/sh/kernel/dwarf.c18
-rw-r--r--arch/sparc/Kconfig4
-rw-r--r--arch/tile/include/asm/fixmap.h33
-rw-r--r--arch/um/include/asm/fixmap.h40
-rw-r--r--arch/x86/Kconfig9
-rw-r--r--arch/x86/include/asm/dmi.h6
-rw-r--r--arch/x86/include/asm/fixmap.h59
-rw-r--r--arch/x86/mm/gup.c8
29 files changed, 80 insertions, 418 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index d39dc9b95a2c..3ba48fe1c0a5 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -539,13 +539,13 @@ config SMP
539 depends on ALPHA_SABLE || ALPHA_LYNX || ALPHA_RAWHIDE || ALPHA_DP264 || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_GENERIC || ALPHA_SHARK || ALPHA_MARVEL 539 depends on ALPHA_SABLE || ALPHA_LYNX || ALPHA_RAWHIDE || ALPHA_DP264 || ALPHA_WILDFIRE || ALPHA_TITAN || ALPHA_GENERIC || ALPHA_SHARK || ALPHA_MARVEL
540 ---help--- 540 ---help---
541 This enables support for systems with more than one CPU. If you have 541 This enables support for systems with more than one CPU. If you have
542 a system with only one CPU, like most personal computers, say N. If 542 a system with only one CPU, say N. If you have a system with more
543 you have a system with more than one CPU, say Y. 543 than one CPU, say Y.
544 544
545 If you say N here, the kernel will run on single and multiprocessor 545 If you say N here, the kernel will run on uni- and multiprocessor
546 machines, but will use only one CPU of a multiprocessor machine. If 546 machines, but will use only one CPU of a multiprocessor machine. If
547 you say Y here, the kernel will run on many, but not all, 547 you say Y here, the kernel will run on many, but not all,
548 singleprocessor machines. On a singleprocessor machine, the kernel 548 uniprocessor machines. On a uniprocessor machine, the kernel
549 will run faster if you say N here. 549 will run faster if you say N here.
550 550
551 See also the SMP-HOWTO available at 551 See also the SMP-HOWTO available at
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index 9063ae6553cc..5438cabbc45d 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -128,8 +128,8 @@ config SMP
128 default n 128 default n
129 help 129 help
130 This enables support for systems with more than one CPU. If you have 130 This enables support for systems with more than one CPU. If you have
131 a system with only one CPU, like most personal computers, say N. If 131 a system with only one CPU, say N. If you have a system with more
132 you have a system with more than one CPU, say Y. 132 than one CPU, say Y.
133 133
134if SMP 134if SMP
135 135
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index f9b0fd387c6f..dc6ef9a2c649 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1470,14 +1470,14 @@ config SMP
1470 depends on MMU || ARM_MPU 1470 depends on MMU || ARM_MPU
1471 help 1471 help
1472 This enables support for systems with more than one CPU. If you have 1472 This enables support for systems with more than one CPU. If you have
1473 a system with only one CPU, like most personal computers, say N. If 1473 a system with only one CPU, say N. If you have a system with more
1474 you have a system with more than one CPU, say Y. 1474 than one CPU, say Y.
1475 1475
1476 If you say N here, the kernel will run on single and multiprocessor 1476 If you say N here, the kernel will run on uni- and multiprocessor
1477 machines, but will use only one CPU of a multiprocessor machine. If 1477 machines, but will use only one CPU of a multiprocessor machine. If
1478 you say Y here, the kernel will run on many, but not all, single 1478 you say Y here, the kernel will run on many, but not all,
1479 processor machines. On a single processor machine, the kernel will 1479 uniprocessor machines. On a uniprocessor machine, the kernel
1480 run faster if you say N here. 1480 will run faster if you say N here.
1481 1481
1482 See also <file:Documentation/x86/i386/IO-APIC.txt>, 1482 See also <file:Documentation/x86/i386/IO-APIC.txt>,
1483 <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at 1483 <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
diff --git a/arch/cris/include/asm/io.h b/arch/cris/include/asm/io.h
index 4353cf239a13..e59dba12ce94 100644
--- a/arch/cris/include/asm/io.h
+++ b/arch/cris/include/asm/io.h
@@ -169,7 +169,11 @@ static inline void outsl(unsigned int port, const void *addr,
169} 169}
170 170
171#define inb_p(port) inb(port) 171#define inb_p(port) inb(port)
172#define inw_p(port) inw(port)
173#define inl_p(port) inl(port)
172#define outb_p(val, port) outb((val), (port)) 174#define outb_p(val, port) outb((val), (port))
175#define outw_p(val, port) outw((val), (port))
176#define outl_p(val, port) outl((val), (port))
173 177
174/* 178/*
175 * Convert a physical pointer to a virtual kernel pointer for /dev/mem 179 * Convert a physical pointer to a virtual kernel pointer for /dev/mem
diff --git a/arch/hexagon/include/asm/fixmap.h b/arch/hexagon/include/asm/fixmap.h
index b75b6bf4269c..1387f84b42b6 100644
--- a/arch/hexagon/include/asm/fixmap.h
+++ b/arch/hexagon/include/asm/fixmap.h
@@ -26,45 +26,7 @@
26 */ 26 */
27#include <asm/mem-layout.h> 27#include <asm/mem-layout.h>
28 28
29/* 29#include <asm-generic/fixmap.h>
30 * Full fixmap support involves set_fixmap() functions, but
31 * these may not be needed if all we're after is an area for
32 * highmem kernel mappings.
33 */
34#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
35#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
36
37extern void __this_fixmap_does_not_exist(void);
38
39/**
40 * fix_to_virt -- "index to address" translation.
41 *
42 * If anyone tries to use the idx directly without translation,
43 * we catch the bug with a NULL-deference kernel oops. Illegal
44 * ranges of incoming indices are caught too.
45 */
46static inline unsigned long fix_to_virt(const unsigned int idx)
47{
48 /*
49 * This branch gets completely eliminated after inlining,
50 * except when someone tries to use fixaddr indices in an
51 * illegal way. (such as mixing up address types or using
52 * out-of-range indices).
53 *
54 * If it doesn't get removed, the linker will complain
55 * loudly with a reasonably clear error message..
56 */
57 if (idx >= __end_of_fixed_addresses)
58 __this_fixmap_does_not_exist();
59
60 return __fix_to_virt(idx);
61}
62
63static inline unsigned long virt_to_fix(const unsigned long vaddr)
64{
65 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
66 return __virt_to_fix(vaddr);
67}
68 30
69#define kmap_get_fixmap_pte(vaddr) \ 31#define kmap_get_fixmap_pte(vaddr) \
70 pte_offset_kernel(pmd_offset(pud_offset(pgd_offset_k(vaddr), \ 32 pte_offset_kernel(pmd_offset(pud_offset(pgd_offset_k(vaddr), \
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index a8c3a11dc5ab..c063b054294e 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -104,6 +104,7 @@ config HAVE_SETUP_PER_CPU_AREA
104config DMI 104config DMI
105 bool 105 bool
106 default y 106 default y
107 select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
107 108
108config EFI 109config EFI
109 bool 110 bool
diff --git a/arch/ia64/include/asm/dmi.h b/arch/ia64/include/asm/dmi.h
index 185d3d18d0ec..f365a61f5c71 100644
--- a/arch/ia64/include/asm/dmi.h
+++ b/arch/ia64/include/asm/dmi.h
@@ -5,8 +5,10 @@
5#include <asm/io.h> 5#include <asm/io.h>
6 6
7/* Use normal IO mappings for DMI */ 7/* Use normal IO mappings for DMI */
8#define dmi_ioremap ioremap 8#define dmi_early_remap ioremap
9#define dmi_iounmap(x,l) iounmap(x) 9#define dmi_early_unmap(x, l) iounmap(x)
10#define dmi_alloc(l) kzalloc(l, GFP_ATOMIC) 10#define dmi_remap ioremap
11#define dmi_unmap iounmap
12#define dmi_alloc(l) kzalloc(l, GFP_ATOMIC)
11 13
12#endif 14#endif
diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h
index 5a84b3a50741..efd1b927ccb7 100644
--- a/arch/ia64/include/asm/processor.h
+++ b/arch/ia64/include/asm/processor.h
@@ -71,6 +71,7 @@
71#include <linux/compiler.h> 71#include <linux/compiler.h>
72#include <linux/threads.h> 72#include <linux/threads.h>
73#include <linux/types.h> 73#include <linux/types.h>
74#include <linux/bitops.h>
74 75
75#include <asm/fpu.h> 76#include <asm/fpu.h>
76#include <asm/page.h> 77#include <asm/page.h>
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig
index 09ef94a8a7c3..ca4504424dae 100644
--- a/arch/m32r/Kconfig
+++ b/arch/m32r/Kconfig
@@ -277,13 +277,13 @@ config SMP
277 bool "Symmetric multi-processing support" 277 bool "Symmetric multi-processing support"
278 ---help--- 278 ---help---
279 This enables support for systems with more than one CPU. If you have 279 This enables support for systems with more than one CPU. If you have
280 a system with only one CPU, like most personal computers, say N. If 280 a system with only one CPU, say N. If you have a system with more
281 you have a system with more than one CPU, say Y. 281 than one CPU, say Y.
282 282
283 If you say N here, the kernel will run on single and multiprocessor 283 If you say N here, the kernel will run on uni- and multiprocessor
284 machines, but will use only one CPU of a multiprocessor machine. If 284 machines, but will use only one CPU of a multiprocessor machine. If
285 you say Y here, the kernel will run on many, but not all, 285 you say Y here, the kernel will run on many, but not all,
286 singleprocessor machines. On a singleprocessor machine, the kernel 286 uniprocessor machines. On a uniprocessor machine, the kernel
287 will run faster if you say N here. 287 will run faster if you say N here.
288 288
289 People using multiprocessor machines who say Y here should also say 289 People using multiprocessor machines who say Y here should also say
diff --git a/arch/metag/include/asm/fixmap.h b/arch/metag/include/asm/fixmap.h
index 33312751c92b..af621b041739 100644
--- a/arch/metag/include/asm/fixmap.h
+++ b/arch/metag/include/asm/fixmap.h
@@ -51,37 +51,7 @@ enum fixed_addresses {
51#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT) 51#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
52#define FIXADDR_START ((FIXADDR_TOP - FIXADDR_SIZE) & PMD_MASK) 52#define FIXADDR_START ((FIXADDR_TOP - FIXADDR_SIZE) & PMD_MASK)
53 53
54#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) 54#include <asm-generic/fixmap.h>
55#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
56
57extern void __this_fixmap_does_not_exist(void);
58/*
59 * 'index to address' translation. If anyone tries to use the idx
60 * directly without tranlation, we catch the bug with a NULL-deference
61 * kernel oops. Illegal ranges of incoming indices are caught too.
62 */
63static inline unsigned long fix_to_virt(const unsigned int idx)
64{
65 /*
66 * this branch gets completely eliminated after inlining,
67 * except when someone tries to use fixaddr indices in an
68 * illegal way. (such as mixing up address types or using
69 * out-of-range indices).
70 *
71 * If it doesn't get removed, the linker will complain
72 * loudly with a reasonably clear error message..
73 */
74 if (idx >= __end_of_fixed_addresses)
75 __this_fixmap_does_not_exist();
76
77 return __fix_to_virt(idx);
78}
79
80static inline unsigned long virt_to_fix(const unsigned long vaddr)
81{
82 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
83 return __virt_to_fix(vaddr);
84}
85 55
86#define kmap_get_fixmap_pte(vaddr) \ 56#define kmap_get_fixmap_pte(vaddr) \
87 pte_offset_kernel( \ 57 pte_offset_kernel( \
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig
index e23cccde9c27..8d581ab06c5d 100644
--- a/arch/microblaze/Kconfig
+++ b/arch/microblaze/Kconfig
@@ -30,6 +30,7 @@ config MICROBLAZE
30 select MODULES_USE_ELF_RELA 30 select MODULES_USE_ELF_RELA
31 select CLONE_BACKWARDS3 31 select CLONE_BACKWARDS3
32 select CLKSRC_OF 32 select CLKSRC_OF
33 select BUILDTIME_EXTABLE_SORT
33 34
34config SWAP 35config SWAP
35 def_bool n 36 def_bool n
diff --git a/arch/microblaze/include/asm/fixmap.h b/arch/microblaze/include/asm/fixmap.h
index f2b312e10b10..06c0e2b1883f 100644
--- a/arch/microblaze/include/asm/fixmap.h
+++ b/arch/microblaze/include/asm/fixmap.h
@@ -58,52 +58,12 @@ enum fixed_addresses {
58extern void __set_fixmap(enum fixed_addresses idx, 58extern void __set_fixmap(enum fixed_addresses idx,
59 phys_addr_t phys, pgprot_t flags); 59 phys_addr_t phys, pgprot_t flags);
60 60
61#define set_fixmap(idx, phys) \
62 __set_fixmap(idx, phys, PAGE_KERNEL)
63/*
64 * Some hardware wants to get fixmapped without caching.
65 */
66#define set_fixmap_nocache(idx, phys) \
67 __set_fixmap(idx, phys, PAGE_KERNEL_CI)
68
69#define clear_fixmap(idx) \
70 __set_fixmap(idx, 0, __pgprot(0))
71
72#define __FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT) 61#define __FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
73#define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE) 62#define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)
74 63
75#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) 64#define FIXMAP_PAGE_NOCACHE PAGE_KERNEL_CI
76#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
77
78extern void __this_fixmap_does_not_exist(void);
79
80/*
81 * 'index to address' translation. If anyone tries to use the idx
82 * directly without tranlation, we catch the bug with a NULL-deference
83 * kernel oops. Illegal ranges of incoming indices are caught too.
84 */
85static __always_inline unsigned long fix_to_virt(const unsigned int idx)
86{
87 /*
88 * this branch gets completely eliminated after inlining,
89 * except when someone tries to use fixaddr indices in an
90 * illegal way. (such as mixing up address types or using
91 * out-of-range indices).
92 *
93 * If it doesn't get removed, the linker will complain
94 * loudly with a reasonably clear error message..
95 */
96 if (idx >= __end_of_fixed_addresses)
97 __this_fixmap_does_not_exist();
98
99 return __fix_to_virt(idx);
100}
101 65
102static inline unsigned long virt_to_fix(const unsigned long vaddr) 66#include <asm-generic/fixmap.h>
103{
104 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
105 return __virt_to_fix(vaddr);
106}
107 67
108#endif /* !__ASSEMBLY__ */ 68#endif /* !__ASSEMBLY__ */
109#endif 69#endif
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index c93d92beb3d6..52dac06ea6b4 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2129,13 +2129,13 @@ config SMP
2129 depends on SYS_SUPPORTS_SMP 2129 depends on SYS_SUPPORTS_SMP
2130 help 2130 help
2131 This enables support for systems with more than one CPU. If you have 2131 This enables support for systems with more than one CPU. If you have
2132 a system with only one CPU, like most personal computers, say N. If 2132 a system with only one CPU, say N. If you have a system with more
2133 you have a system with more than one CPU, say Y. 2133 than one CPU, say Y.
2134 2134
2135 If you say N here, the kernel will run on single and multiprocessor 2135 If you say N here, the kernel will run on uni- and multiprocessor
2136 machines, but will use only one CPU of a multiprocessor machine. If 2136 machines, but will use only one CPU of a multiprocessor machine. If
2137 you say Y here, the kernel will run on many, but not all, 2137 you say Y here, the kernel will run on many, but not all,
2138 singleprocessor machines. On a singleprocessor machine, the kernel 2138 uniprocessor machines. On a uniprocessor machine, the kernel
2139 will run faster if you say N here. 2139 will run faster if you say N here.
2140 2140
2141 People using multiprocessor machines who say Y here should also say 2141 People using multiprocessor machines who say Y here should also say
@@ -2430,7 +2430,7 @@ source "drivers/pcmcia/Kconfig"
2430source "drivers/pci/hotplug/Kconfig" 2430source "drivers/pci/hotplug/Kconfig"
2431 2431
2432config RAPIDIO 2432config RAPIDIO
2433 bool "RapidIO support" 2433 tristate "RapidIO support"
2434 depends on PCI 2434 depends on PCI
2435 default n 2435 default n
2436 help 2436 help
diff --git a/arch/mips/include/asm/fixmap.h b/arch/mips/include/asm/fixmap.h
index dfaaf493e9d4..8c012af2f451 100644
--- a/arch/mips/include/asm/fixmap.h
+++ b/arch/mips/include/asm/fixmap.h
@@ -71,38 +71,7 @@ enum fixed_addresses {
71#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT) 71#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
72#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) 72#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
73 73
74#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) 74#include <asm-generic/fixmap.h>
75#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
76
77extern void __this_fixmap_does_not_exist(void);
78
79/*
80 * 'index to address' translation. If anyone tries to use the idx
81 * directly without tranlation, we catch the bug with a NULL-deference
82 * kernel oops. Illegal ranges of incoming indices are caught too.
83 */
84static inline unsigned long fix_to_virt(const unsigned int idx)
85{
86 /*
87 * this branch gets completely eliminated after inlining,
88 * except when someone tries to use fixaddr indices in an
89 * illegal way. (such as mixing up address types or using
90 * out-of-range indices).
91 *
92 * If it doesn't get removed, the linker will complain
93 * loudly with a reasonably clear error message..
94 */
95 if (idx >= __end_of_fixed_addresses)
96 __this_fixmap_does_not_exist();
97
98 return __fix_to_virt(idx);
99}
100
101static inline unsigned long virt_to_fix(const unsigned long vaddr)
102{
103 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
104 return __virt_to_fix(vaddr);
105}
106 75
107#define kmap_get_fixmap_pte(vaddr) \ 76#define kmap_get_fixmap_pte(vaddr) \
108 pte_offset_kernel(pmd_offset(pud_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)), (vaddr)) 77 pte_offset_kernel(pmd_offset(pud_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr)), (vaddr))
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig
index 8bde9237d13b..a648de1b1096 100644
--- a/arch/mn10300/Kconfig
+++ b/arch/mn10300/Kconfig
@@ -184,13 +184,13 @@ config SMP
184 depends on MN10300_PROC_MN2WS0038 || MN10300_PROC_MN2WS0050 184 depends on MN10300_PROC_MN2WS0038 || MN10300_PROC_MN2WS0050
185 ---help--- 185 ---help---
186 This enables support for systems with more than one CPU. If you have 186 This enables support for systems with more than one CPU. If you have
187 a system with only one CPU, like most personal computers, say N. If 187 a system with only one CPU, say N. If you have a system with more
188 you have a system with more than one CPU, say Y. 188 than one CPU, say Y.
189 189
190 If you say N here, the kernel will run on single and multiprocessor 190 If you say N here, the kernel will run on uni- and multiprocessor
191 machines, but will use only one CPU of a multiprocessor machine. If 191 machines, but will use only one CPU of a multiprocessor machine. If
192 you say Y here, the kernel will run on many, but not all, 192 you say Y here, the kernel will run on many, but not all,
193 singleprocessor machines. On a singleprocessor machine, the kernel 193 uniprocessor machines. On a uniprocessor machine, the kernel
194 will run faster if you say N here. 194 will run faster if you say N here.
195 195
196 See also <file:Documentation/x86/i386/IO-APIC.txt>, 196 See also <file:Documentation/x86/i386/IO-APIC.txt>,
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index b5f1858baf33..bb2a8ec440e7 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -229,13 +229,13 @@ config SMP
229 bool "Symmetric multi-processing support" 229 bool "Symmetric multi-processing support"
230 ---help--- 230 ---help---
231 This enables support for systems with more than one CPU. If you have 231 This enables support for systems with more than one CPU. If you have
232 a system with only one CPU, like most personal computers, say N. If 232 a system with only one CPU, say N. If you have a system with more
233 you have a system with more than one CPU, say Y. 233 than one CPU, say Y.
234 234
235 If you say N here, the kernel will run on single and multiprocessor 235 If you say N here, the kernel will run on uni- and multiprocessor
236 machines, but will use only one CPU of a multiprocessor machine. If 236 machines, but will use only one CPU of a multiprocessor machine. If
237 you say Y here, the kernel will run on many, but not all, 237 you say Y here, the kernel will run on many, but not all,
238 singleprocessor machines. On a singleprocessor machine, the kernel 238 uniprocessor machines. On a uniprocessor machine, the kernel
239 will run faster if you say N here. 239 will run faster if you say N here.
240 240
241 See also <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO 241 See also <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index b2be8e8cb5c7..bedc62b44aa6 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -794,7 +794,7 @@ config HAS_RAPIDIO
794 default n 794 default n
795 795
796config RAPIDIO 796config RAPIDIO
797 bool "RapidIO support" 797 tristate "RapidIO support"
798 depends on HAS_RAPIDIO || PCI 798 depends on HAS_RAPIDIO || PCI
799 help 799 help
800 If you say Y here, the kernel will include drivers and 800 If you say Y here, the kernel will include drivers and
@@ -802,7 +802,7 @@ config RAPIDIO
802 802
803config FSL_RIO 803config FSL_RIO
804 bool "Freescale Embedded SRIO Controller support" 804 bool "Freescale Embedded SRIO Controller support"
805 depends on RAPIDIO && HAS_RAPIDIO 805 depends on RAPIDIO = y && HAS_RAPIDIO
806 default "n" 806 default "n"
807 ---help--- 807 ---help---
808 Include support for RapidIO controller on Freescale embedded 808 Include support for RapidIO controller on Freescale embedded
diff --git a/arch/powerpc/include/asm/fixmap.h b/arch/powerpc/include/asm/fixmap.h
index 5c2c0233175e..90f604bbcd19 100644
--- a/arch/powerpc/include/asm/fixmap.h
+++ b/arch/powerpc/include/asm/fixmap.h
@@ -58,52 +58,12 @@ enum fixed_addresses {
58extern void __set_fixmap (enum fixed_addresses idx, 58extern void __set_fixmap (enum fixed_addresses idx,
59 phys_addr_t phys, pgprot_t flags); 59 phys_addr_t phys, pgprot_t flags);
60 60
61#define set_fixmap(idx, phys) \
62 __set_fixmap(idx, phys, PAGE_KERNEL)
63/*
64 * Some hardware wants to get fixmapped without caching.
65 */
66#define set_fixmap_nocache(idx, phys) \
67 __set_fixmap(idx, phys, PAGE_KERNEL_NCG)
68
69#define clear_fixmap(idx) \
70 __set_fixmap(idx, 0, __pgprot(0))
71
72#define __FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT) 61#define __FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
73#define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE) 62#define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)
74 63
75#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) 64#define FIXMAP_PAGE_NOCACHE PAGE_KERNEL_NCG
76#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
77
78extern void __this_fixmap_does_not_exist(void);
79
80/*
81 * 'index to address' translation. If anyone tries to use the idx
82 * directly without tranlation, we catch the bug with a NULL-deference
83 * kernel oops. Illegal ranges of incoming indices are caught too.
84 */
85static __always_inline unsigned long fix_to_virt(const unsigned int idx)
86{
87 /*
88 * this branch gets completely eliminated after inlining,
89 * except when someone tries to use fixaddr indices in an
90 * illegal way. (such as mixing up address types or using
91 * out-of-range indices).
92 *
93 * If it doesn't get removed, the linker will complain
94 * loudly with a reasonably clear error message..
95 */
96 if (idx >= __end_of_fixed_addresses)
97 __this_fixmap_does_not_exist();
98
99 return __fix_to_virt(idx);
100}
101 65
102static inline unsigned long virt_to_fix(const unsigned long vaddr) 66#include <asm-generic/fixmap.h>
103{
104 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
105 return __virt_to_fix(vaddr);
106}
107 67
108#endif /* !__ASSEMBLY__ */ 68#endif /* !__ASSEMBLY__ */
109#endif 69#endif
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index e9f312532526..4f858f77d870 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -334,10 +334,10 @@ config SMP
334 a system with only one CPU, like most personal computers, say N. If 334 a system with only one CPU, like most personal computers, say N. If
335 you have a system with more than one CPU, say Y. 335 you have a system with more than one CPU, say Y.
336 336
337 If you say N here, the kernel will run on single and multiprocessor 337 If you say N here, the kernel will run on uni- and multiprocessor
338 machines, but will use only one CPU of a multiprocessor machine. If 338 machines, but will use only one CPU of a multiprocessor machine. If
339 you say Y here, the kernel will run on many, but not all, 339 you say Y here, the kernel will run on many, but not all,
340 singleprocessor machines. On a singleprocessor machine, the kernel 340 uniprocessor machines. On a uniprocessor machine, the kernel
341 will run faster if you say N here. 341 will run faster if you say N here.
342 342
343 See also the SMP-HOWTO available at 343 See also the SMP-HOWTO available at
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index ce298317a73e..6357710753d5 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -701,13 +701,13 @@ config SMP
701 depends on SYS_SUPPORTS_SMP 701 depends on SYS_SUPPORTS_SMP
702 ---help--- 702 ---help---
703 This enables support for systems with more than one CPU. If you have 703 This enables support for systems with more than one CPU. If you have
704 a system with only one CPU, like most personal computers, say N. If 704 a system with only one CPU, say N. If you have a system with more
705 you have a system with more than one CPU, say Y. 705 than one CPU, say Y.
706 706
707 If you say N here, the kernel will run on single and multiprocessor 707 If you say N here, the kernel will run on uni- and multiprocessor
708 machines, but will use only one CPU of a multiprocessor machine. If 708 machines, but will use only one CPU of a multiprocessor machine. If
709 you say Y here, the kernel will run on many, but not all, 709 you say Y here, the kernel will run on many, but not all,
710 singleprocessor machines. On a singleprocessor machine, the kernel 710 uniprocessor machines. On a uniprocessor machine, the kernel
711 will run faster if you say N here. 711 will run faster if you say N here.
712 712
713 People using multiprocessor machines who say Y here should also say 713 People using multiprocessor machines who say Y here should also say
diff --git a/arch/sh/include/asm/fixmap.h b/arch/sh/include/asm/fixmap.h
index cbe0186b6794..4daf91c3b725 100644
--- a/arch/sh/include/asm/fixmap.h
+++ b/arch/sh/include/asm/fixmap.h
@@ -79,13 +79,6 @@ extern void __set_fixmap(enum fixed_addresses idx,
79 unsigned long phys, pgprot_t flags); 79 unsigned long phys, pgprot_t flags);
80extern void __clear_fixmap(enum fixed_addresses idx, pgprot_t flags); 80extern void __clear_fixmap(enum fixed_addresses idx, pgprot_t flags);
81 81
82#define set_fixmap(idx, phys) \
83 __set_fixmap(idx, phys, PAGE_KERNEL)
84/*
85 * Some hardware wants to get fixmapped without caching.
86 */
87#define set_fixmap_nocache(idx, phys) \
88 __set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)
89/* 82/*
90 * used by vmalloc.c. 83 * used by vmalloc.c.
91 * 84 *
@@ -101,36 +94,8 @@ extern void __clear_fixmap(enum fixed_addresses idx, pgprot_t flags);
101#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT) 94#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
102#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) 95#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
103 96
104#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) 97#define FIXMAP_PAGE_NOCACHE PAGE_KERNEL_NOCACHE
105#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
106
107extern void __this_fixmap_does_not_exist(void);
108
109/*
110 * 'index to address' translation. If anyone tries to use the idx
111 * directly without tranlation, we catch the bug with a NULL-deference
112 * kernel oops. Illegal ranges of incoming indices are caught too.
113 */
114static inline unsigned long fix_to_virt(const unsigned int idx)
115{
116 /*
117 * this branch gets completely eliminated after inlining,
118 * except when someone tries to use fixaddr indices in an
119 * illegal way. (such as mixing up address types or using
120 * out-of-range indices).
121 *
122 * If it doesn't get removed, the linker will complain
123 * loudly with a reasonably clear error message..
124 */
125 if (idx >= __end_of_fixed_addresses)
126 __this_fixmap_does_not_exist();
127 98
128 return __fix_to_virt(idx); 99#include <asm-generic/fixmap.h>
129}
130 100
131static inline unsigned long virt_to_fix(const unsigned long vaddr)
132{
133 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
134 return __virt_to_fix(vaddr);
135}
136#endif 101#endif
diff --git a/arch/sh/kernel/dwarf.c b/arch/sh/kernel/dwarf.c
index 49c09c7d5b77..67a049e75ec1 100644
--- a/arch/sh/kernel/dwarf.c
+++ b/arch/sh/kernel/dwarf.c
@@ -995,29 +995,19 @@ static struct unwinder dwarf_unwinder = {
995 995
996static void dwarf_unwinder_cleanup(void) 996static void dwarf_unwinder_cleanup(void)
997{ 997{
998 struct rb_node **fde_rb_node = &fde_root.rb_node; 998 struct dwarf_fde *fde, *next_fde;
999 struct rb_node **cie_rb_node = &cie_root.rb_node; 999 struct dwarf_cie *cie, *next_cie;
1000 1000
1001 /* 1001 /*
1002 * Deallocate all the memory allocated for the DWARF unwinder. 1002 * Deallocate all the memory allocated for the DWARF unwinder.
1003 * Traverse all the FDE/CIE lists and remove and free all the 1003 * Traverse all the FDE/CIE lists and remove and free all the
1004 * memory associated with those data structures. 1004 * memory associated with those data structures.
1005 */ 1005 */
1006 while (*fde_rb_node) { 1006 rbtree_postorder_for_each_entry_safe(fde, next_fde, &fde_root, node)
1007 struct dwarf_fde *fde;
1008
1009 fde = rb_entry(*fde_rb_node, struct dwarf_fde, node);
1010 rb_erase(*fde_rb_node, &fde_root);
1011 kfree(fde); 1007 kfree(fde);
1012 }
1013 1008
1014 while (*cie_rb_node) { 1009 rbtree_postorder_for_each_entry_safe(cie, next_cie, &cie_root, node)
1015 struct dwarf_cie *cie;
1016
1017 cie = rb_entry(*cie_rb_node, struct dwarf_cie, node);
1018 rb_erase(*cie_rb_node, &cie_root);
1019 kfree(cie); 1010 kfree(cie);
1020 }
1021 1011
1022 kmem_cache_destroy(dwarf_reg_cachep); 1012 kmem_cache_destroy(dwarf_reg_cachep);
1023 kmem_cache_destroy(dwarf_frame_cachep); 1013 kmem_cache_destroy(dwarf_frame_cachep);
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index d4f7a6a163dc..63dfe68f4af8 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -152,10 +152,10 @@ config SMP
152 a system with only one CPU, say N. If you have a system with more 152 a system with only one CPU, say N. If you have a system with more
153 than one CPU, say Y. 153 than one CPU, say Y.
154 154
155 If you say N here, the kernel will run on single and multiprocessor 155 If you say N here, the kernel will run on uni- and multiprocessor
156 machines, but will use only one CPU of a multiprocessor machine. If 156 machines, but will use only one CPU of a multiprocessor machine. If
157 you say Y here, the kernel will run on many, but not all, 157 you say Y here, the kernel will run on many, but not all,
158 singleprocessor machines. On a singleprocessor machine, the kernel 158 uniprocessor machines. On a uniprocessor machine, the kernel
159 will run faster if you say N here. 159 will run faster if you say N here.
160 160
161 People using multiprocessor machines who say Y here should also say 161 People using multiprocessor machines who say Y here should also say
diff --git a/arch/tile/include/asm/fixmap.h b/arch/tile/include/asm/fixmap.h
index c6b9c1b38fd1..ffe2637aeb31 100644
--- a/arch/tile/include/asm/fixmap.h
+++ b/arch/tile/include/asm/fixmap.h
@@ -25,9 +25,6 @@
25#include <asm/kmap_types.h> 25#include <asm/kmap_types.h>
26#endif 26#endif
27 27
28#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
29#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
30
31/* 28/*
32 * Here we define all the compile-time 'special' virtual 29 * Here we define all the compile-time 'special' virtual
33 * addresses. The point is to have a constant address at 30 * addresses. The point is to have a constant address at
@@ -83,35 +80,7 @@ enum fixed_addresses {
83#define FIXADDR_START (FIXADDR_TOP + PAGE_SIZE - __FIXADDR_SIZE) 80#define FIXADDR_START (FIXADDR_TOP + PAGE_SIZE - __FIXADDR_SIZE)
84#define FIXADDR_BOOT_START (FIXADDR_TOP + PAGE_SIZE - __FIXADDR_BOOT_SIZE) 81#define FIXADDR_BOOT_START (FIXADDR_TOP + PAGE_SIZE - __FIXADDR_BOOT_SIZE)
85 82
86extern void __this_fixmap_does_not_exist(void); 83#include <asm-generic/fixmap.h>
87
88/*
89 * 'index to address' translation. If anyone tries to use the idx
90 * directly without tranlation, we catch the bug with a NULL-deference
91 * kernel oops. Illegal ranges of incoming indices are caught too.
92 */
93static __always_inline unsigned long fix_to_virt(const unsigned int idx)
94{
95 /*
96 * this branch gets completely eliminated after inlining,
97 * except when someone tries to use fixaddr indices in an
98 * illegal way. (such as mixing up address types or using
99 * out-of-range indices).
100 *
101 * If it doesn't get removed, the linker will complain
102 * loudly with a reasonably clear error message..
103 */
104 if (idx >= __end_of_fixed_addresses)
105 __this_fixmap_does_not_exist();
106
107 return __fix_to_virt(idx);
108}
109
110static inline unsigned long virt_to_fix(const unsigned long vaddr)
111{
112 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
113 return __virt_to_fix(vaddr);
114}
115 84
116#endif /* !__ASSEMBLY__ */ 85#endif /* !__ASSEMBLY__ */
117 86
diff --git a/arch/um/include/asm/fixmap.h b/arch/um/include/asm/fixmap.h
index 21a423bae5e8..3094ea3c73b0 100644
--- a/arch/um/include/asm/fixmap.h
+++ b/arch/um/include/asm/fixmap.h
@@ -43,13 +43,6 @@ enum fixed_addresses {
43extern void __set_fixmap (enum fixed_addresses idx, 43extern void __set_fixmap (enum fixed_addresses idx,
44 unsigned long phys, pgprot_t flags); 44 unsigned long phys, pgprot_t flags);
45 45
46#define set_fixmap(idx, phys) \
47 __set_fixmap(idx, phys, PAGE_KERNEL)
48/*
49 * Some hardware wants to get fixmapped without caching.
50 */
51#define set_fixmap_nocache(idx, phys) \
52 __set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)
53/* 46/*
54 * used by vmalloc.c. 47 * used by vmalloc.c.
55 * 48 *
@@ -62,37 +55,6 @@ extern void __set_fixmap (enum fixed_addresses idx,
62#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT) 55#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
63#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE) 56#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
64 57
65#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT)) 58#include <asm-generic/fixmap.h>
66#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
67
68extern void __this_fixmap_does_not_exist(void);
69
70/*
71 * 'index to address' translation. If anyone tries to use the idx
72 * directly without tranlation, we catch the bug with a NULL-deference
73 * kernel oops. Illegal ranges of incoming indices are caught too.
74 */
75static inline unsigned long fix_to_virt(const unsigned int idx)
76{
77 /*
78 * this branch gets completely eliminated after inlining,
79 * except when someone tries to use fixaddr indices in an
80 * illegal way. (such as mixing up address types or using
81 * out-of-range indices).
82 *
83 * If it doesn't get removed, the linker will complain
84 * loudly with a reasonably clear error message..
85 */
86 if (idx >= __end_of_fixed_addresses)
87 __this_fixmap_does_not_exist();
88
89 return __fix_to_virt(idx);
90}
91
92static inline unsigned long virt_to_fix(const unsigned long vaddr)
93{
94 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
95 return __virt_to_fix(vaddr);
96}
97 59
98#endif 60#endif
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index d3b9186e4c23..3e97a3dd4129 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -279,13 +279,13 @@ config SMP
279 bool "Symmetric multi-processing support" 279 bool "Symmetric multi-processing support"
280 ---help--- 280 ---help---
281 This enables support for systems with more than one CPU. If you have 281 This enables support for systems with more than one CPU. If you have
282 a system with only one CPU, like most personal computers, say N. If 282 a system with only one CPU, say N. If you have a system with more
283 you have a system with more than one CPU, say Y. 283 than one CPU, say Y.
284 284
285 If you say N here, the kernel will run on single and multiprocessor 285 If you say N here, the kernel will run on uni- and multiprocessor
286 machines, but will use only one CPU of a multiprocessor machine. If 286 machines, but will use only one CPU of a multiprocessor machine. If
287 you say Y here, the kernel will run on many, but not all, 287 you say Y here, the kernel will run on many, but not all,
288 singleprocessor machines. On a singleprocessor machine, the kernel 288 uniprocessor machines. On a uniprocessor machine, the kernel
289 will run faster if you say N here. 289 will run faster if you say N here.
290 290
291 Note that if you say Y here and choose architecture "586" or 291 Note that if you say Y here and choose architecture "586" or
@@ -731,6 +731,7 @@ config APB_TIMER
731# The code disables itself when not needed. 731# The code disables itself when not needed.
732config DMI 732config DMI
733 default y 733 default y
734 select DMI_SCAN_MACHINE_NON_EFI_FALLBACK
734 bool "Enable DMI scanning" if EXPERT 735 bool "Enable DMI scanning" if EXPERT
735 ---help--- 736 ---help---
736 Enabled scanning of DMI to identify machine quirks. Say Y 737 Enabled scanning of DMI to identify machine quirks. Say Y
diff --git a/arch/x86/include/asm/dmi.h b/arch/x86/include/asm/dmi.h
index fd8f9e2ca35f..535192f6bfad 100644
--- a/arch/x86/include/asm/dmi.h
+++ b/arch/x86/include/asm/dmi.h
@@ -13,7 +13,9 @@ static __always_inline __init void *dmi_alloc(unsigned len)
13} 13}
14 14
15/* Use early IO mappings for DMI because it's initialized early */ 15/* Use early IO mappings for DMI because it's initialized early */
16#define dmi_ioremap early_ioremap 16#define dmi_early_remap early_ioremap
17#define dmi_iounmap early_iounmap 17#define dmi_early_unmap early_iounmap
18#define dmi_remap ioremap
19#define dmi_unmap iounmap
18 20
19#endif /* _ASM_X86_DMI_H */ 21#endif /* _ASM_X86_DMI_H */
diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
index e846225265ed..7252cd339175 100644
--- a/arch/x86/include/asm/fixmap.h
+++ b/arch/x86/include/asm/fixmap.h
@@ -175,64 +175,7 @@ static inline void __set_fixmap(enum fixed_addresses idx,
175} 175}
176#endif 176#endif
177 177
178#define set_fixmap(idx, phys) \ 178#include <asm-generic/fixmap.h>
179 __set_fixmap(idx, phys, PAGE_KERNEL)
180
181/*
182 * Some hardware wants to get fixmapped without caching.
183 */
184#define set_fixmap_nocache(idx, phys) \
185 __set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)
186
187#define clear_fixmap(idx) \
188 __set_fixmap(idx, 0, __pgprot(0))
189
190#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
191#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
192
193extern void __this_fixmap_does_not_exist(void);
194
195/*
196 * 'index to address' translation. If anyone tries to use the idx
197 * directly without translation, we catch the bug with a NULL-deference
198 * kernel oops. Illegal ranges of incoming indices are caught too.
199 */
200static __always_inline unsigned long fix_to_virt(const unsigned int idx)
201{
202 /*
203 * this branch gets completely eliminated after inlining,
204 * except when someone tries to use fixaddr indices in an
205 * illegal way. (such as mixing up address types or using
206 * out-of-range indices).
207 *
208 * If it doesn't get removed, the linker will complain
209 * loudly with a reasonably clear error message..
210 */
211 if (idx >= __end_of_fixed_addresses)
212 __this_fixmap_does_not_exist();
213
214 return __fix_to_virt(idx);
215}
216
217static inline unsigned long virt_to_fix(const unsigned long vaddr)
218{
219 BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START);
220 return __virt_to_fix(vaddr);
221}
222
223/* Return an pointer with offset calculated */
224static __always_inline unsigned long
225__set_fixmap_offset(enum fixed_addresses idx, phys_addr_t phys, pgprot_t flags)
226{
227 __set_fixmap(idx, phys, flags);
228 return fix_to_virt(idx) + (phys & (PAGE_SIZE - 1));
229}
230
231#define set_fixmap_offset(idx, phys) \
232 __set_fixmap_offset(idx, phys, PAGE_KERNEL)
233
234#define set_fixmap_offset_nocache(idx, phys) \
235 __set_fixmap_offset(idx, phys, PAGE_KERNEL_NOCACHE)
236 179
237#endif /* !__ASSEMBLY__ */ 180#endif /* !__ASSEMBLY__ */
238#endif /* _ASM_X86_FIXMAP_H */ 181#endif /* _ASM_X86_FIXMAP_H */
diff --git a/arch/x86/mm/gup.c b/arch/x86/mm/gup.c
index 0596e8e0cc19..207d9aef662d 100644
--- a/arch/x86/mm/gup.c
+++ b/arch/x86/mm/gup.c
@@ -108,8 +108,8 @@ static noinline int gup_pte_range(pmd_t pmd, unsigned long addr,
108 108
109static inline void get_head_page_multiple(struct page *page, int nr) 109static inline void get_head_page_multiple(struct page *page, int nr)
110{ 110{
111 VM_BUG_ON(page != compound_head(page)); 111 VM_BUG_ON_PAGE(page != compound_head(page), page);
112 VM_BUG_ON(page_count(page) == 0); 112 VM_BUG_ON_PAGE(page_count(page) == 0, page);
113 atomic_add(nr, &page->_count); 113 atomic_add(nr, &page->_count);
114 SetPageReferenced(page); 114 SetPageReferenced(page);
115} 115}
@@ -135,7 +135,7 @@ static noinline int gup_huge_pmd(pmd_t pmd, unsigned long addr,
135 head = pte_page(pte); 135 head = pte_page(pte);
136 page = head + ((addr & ~PMD_MASK) >> PAGE_SHIFT); 136 page = head + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
137 do { 137 do {
138 VM_BUG_ON(compound_head(page) != head); 138 VM_BUG_ON_PAGE(compound_head(page) != head, page);
139 pages[*nr] = page; 139 pages[*nr] = page;
140 if (PageTail(page)) 140 if (PageTail(page))
141 get_huge_page_tail(page); 141 get_huge_page_tail(page);
@@ -212,7 +212,7 @@ static noinline int gup_huge_pud(pud_t pud, unsigned long addr,
212 head = pte_page(pte); 212 head = pte_page(pte);
213 page = head + ((addr & ~PUD_MASK) >> PAGE_SHIFT); 213 page = head + ((addr & ~PUD_MASK) >> PAGE_SHIFT);
214 do { 214 do {
215 VM_BUG_ON(compound_head(page) != head); 215 VM_BUG_ON_PAGE(compound_head(page) != head, page);
216 pages[*nr] = page; 216 pages[*nr] = page;
217 if (PageTail(page)) 217 if (PageTail(page))
218 get_huge_page_tail(page); 218 get_huge_page_tail(page);