diff options
Diffstat (limited to 'arch/powerpc')
67 files changed, 722 insertions, 684 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 8300e6a3d52c..5624fb060d9d 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -295,6 +295,7 @@ config ARCH_FLATMEM_ENABLE | |||
295 | config ARCH_SPARSEMEM_ENABLE | 295 | config ARCH_SPARSEMEM_ENABLE |
296 | def_bool y | 296 | def_bool y |
297 | depends on PPC64 | 297 | depends on PPC64 |
298 | select SPARSEMEM_VMEMMAP_ENABLE | ||
298 | 299 | ||
299 | config ARCH_SPARSEMEM_DEFAULT | 300 | config ARCH_SPARSEMEM_DEFAULT |
300 | def_bool y | 301 | def_bool y |
diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug index 464f9b4b3169..c939fe86a9e0 100644 --- a/arch/powerpc/Kconfig.debug +++ b/arch/powerpc/Kconfig.debug | |||
@@ -144,7 +144,7 @@ config BDI_SWITCH | |||
144 | 144 | ||
145 | config BOOTX_TEXT | 145 | config BOOTX_TEXT |
146 | bool "Support for early boot text console (BootX or OpenFirmware only)" | 146 | bool "Support for early boot text console (BootX or OpenFirmware only)" |
147 | depends PPC_OF && PPC_MULTIPLATFORM | 147 | depends on PPC_OF && PPC_MULTIPLATFORM |
148 | help | 148 | help |
149 | Say Y here to see progress messages from the boot firmware in text | 149 | Say Y here to see progress messages from the boot firmware in text |
150 | mode. Requires either BootX or Open Firmware. | 150 | mode. Requires either BootX or Open Firmware. |
@@ -234,12 +234,12 @@ endchoice | |||
234 | 234 | ||
235 | config PPC_EARLY_DEBUG_44x_PHYSLOW | 235 | config PPC_EARLY_DEBUG_44x_PHYSLOW |
236 | hex "Low 32 bits of early debug UART physical address" | 236 | hex "Low 32 bits of early debug UART physical address" |
237 | depends PPC_EARLY_DEBUG_44x | 237 | depends on PPC_EARLY_DEBUG_44x |
238 | default "0x40000200" | 238 | default "0x40000200" |
239 | 239 | ||
240 | config PPC_EARLY_DEBUG_44x_PHYSHIGH | 240 | config PPC_EARLY_DEBUG_44x_PHYSHIGH |
241 | hex "EPRN of early debug UART physical address" | 241 | hex "EPRN of early debug UART physical address" |
242 | depends PPC_EARLY_DEBUG_44x | 242 | depends on PPC_EARLY_DEBUG_44x |
243 | default "0x1" | 243 | default "0x1" |
244 | 244 | ||
245 | config PPC_EARLY_DEBUG_CPM_ADDR | 245 | config PPC_EARLY_DEBUG_CPM_ADDR |
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 643839a3f5d8..4e165342210a 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile | |||
@@ -75,10 +75,10 @@ CPPFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) | |||
75 | AFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) | 75 | AFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) |
76 | CFLAGS-$(CONFIG_PPC64) := -mminimal-toc -mtraceback=none -mcall-aixdesc | 76 | CFLAGS-$(CONFIG_PPC64) := -mminimal-toc -mtraceback=none -mcall-aixdesc |
77 | CFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) -ffixed-r2 -mmultiple | 77 | CFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) -ffixed-r2 -mmultiple |
78 | CPPFLAGS += $(CPPFLAGS-y) | 78 | KBUILD_CPPFLAGS += $(CPPFLAGS-y) |
79 | AFLAGS += $(AFLAGS-y) | 79 | KBUILD_AFLAGS += $(AFLAGS-y) |
80 | CFLAGS += -msoft-float -pipe $(CFLAGS-y) | 80 | KBUILD_CFLAGS += -msoft-float -pipe $(CFLAGS-y) |
81 | CPP = $(CC) -E $(CFLAGS) | 81 | CPP = $(CC) -E $(KBUILD_CFLAGS) |
82 | 82 | ||
83 | CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__ | 83 | CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__ |
84 | 84 | ||
@@ -88,35 +88,35 @@ GCC_BROKEN_VEC := $(shell if [ $(call cc-version) -lt 0400 ] ; then echo "y"; fi | |||
88 | ifeq ($(CONFIG_POWER4_ONLY),y) | 88 | ifeq ($(CONFIG_POWER4_ONLY),y) |
89 | ifeq ($(CONFIG_ALTIVEC),y) | 89 | ifeq ($(CONFIG_ALTIVEC),y) |
90 | ifeq ($(GCC_BROKEN_VEC),y) | 90 | ifeq ($(GCC_BROKEN_VEC),y) |
91 | CFLAGS += $(call cc-option,-mcpu=970) | 91 | KBUILD_CFLAGS += $(call cc-option,-mcpu=970) |
92 | else | 92 | else |
93 | CFLAGS += $(call cc-option,-mcpu=power4) | 93 | KBUILD_CFLAGS += $(call cc-option,-mcpu=power4) |
94 | endif | 94 | endif |
95 | else | 95 | else |
96 | CFLAGS += $(call cc-option,-mcpu=power4) | 96 | KBUILD_CFLAGS += $(call cc-option,-mcpu=power4) |
97 | endif | 97 | endif |
98 | else | 98 | else |
99 | CFLAGS += $(call cc-option,-mtune=power4) | 99 | KBUILD_CFLAGS += $(call cc-option,-mtune=power4) |
100 | endif | 100 | endif |
101 | endif | 101 | endif |
102 | 102 | ||
103 | ifeq ($(CONFIG_TUNE_CELL),y) | 103 | ifeq ($(CONFIG_TUNE_CELL),y) |
104 | CFLAGS += $(call cc-option,-mtune=cell) | 104 | KBUILD_CFLAGS += $(call cc-option,-mtune=cell) |
105 | endif | 105 | endif |
106 | 106 | ||
107 | # No AltiVec instruction when building kernel | 107 | # No AltiVec instruction when building kernel |
108 | CFLAGS += $(call cc-option,-mno-altivec) | 108 | KBUILD_CFLAGS += $(call cc-option,-mno-altivec) |
109 | 109 | ||
110 | # Enable unit-at-a-time mode when possible. It shrinks the | 110 | # Enable unit-at-a-time mode when possible. It shrinks the |
111 | # kernel considerably. | 111 | # kernel considerably. |
112 | CFLAGS += $(call cc-option,-funit-at-a-time) | 112 | KBUILD_CFLAGS += $(call cc-option,-funit-at-a-time) |
113 | 113 | ||
114 | # Never use string load/store instructions as they are | 114 | # Never use string load/store instructions as they are |
115 | # often slow when they are implemented at all | 115 | # often slow when they are implemented at all |
116 | CFLAGS += -mno-string | 116 | KBUILD_CFLAGS += -mno-string |
117 | 117 | ||
118 | ifeq ($(CONFIG_6xx),y) | 118 | ifeq ($(CONFIG_6xx),y) |
119 | CFLAGS += -mcpu=powerpc | 119 | KBUILD_CFLAGS += -mcpu=powerpc |
120 | endif | 120 | endif |
121 | 121 | ||
122 | cpu-as-$(CONFIG_4xx) += -Wa,-m405 | 122 | cpu-as-$(CONFIG_4xx) += -Wa,-m405 |
@@ -125,8 +125,8 @@ cpu-as-$(CONFIG_POWER4) += -Wa,-maltivec | |||
125 | cpu-as-$(CONFIG_E500) += -Wa,-me500 | 125 | cpu-as-$(CONFIG_E500) += -Wa,-me500 |
126 | cpu-as-$(CONFIG_E200) += -Wa,-me200 | 126 | cpu-as-$(CONFIG_E200) += -Wa,-me200 |
127 | 127 | ||
128 | AFLAGS += $(cpu-as-y) | 128 | KBUILD_AFLAGS += $(cpu-as-y) |
129 | CFLAGS += $(cpu-as-y) | 129 | KBUILD_CFLAGS += $(cpu-as-y) |
130 | 130 | ||
131 | head-y := arch/powerpc/kernel/head_$(CONFIG_WORD_SIZE).o | 131 | head-y := arch/powerpc/kernel/head_$(CONFIG_WORD_SIZE).o |
132 | head-$(CONFIG_8xx) := arch/powerpc/kernel/head_8xx.o | 132 | head-$(CONFIG_8xx) := arch/powerpc/kernel/head_8xx.o |
diff --git a/arch/powerpc/configs/bamboo_defconfig b/arch/powerpc/configs/bamboo_defconfig index b592dec4640f..d22fed6d2cd9 100644 --- a/arch/powerpc/configs/bamboo_defconfig +++ b/arch/powerpc/configs/bamboo_defconfig | |||
@@ -91,8 +91,9 @@ CONFIG_TIMERFD=y | |||
91 | CONFIG_EVENTFD=y | 91 | CONFIG_EVENTFD=y |
92 | CONFIG_SHMEM=y | 92 | CONFIG_SHMEM=y |
93 | CONFIG_VM_EVENT_COUNTERS=y | 93 | CONFIG_VM_EVENT_COUNTERS=y |
94 | CONFIG_SLAB=y | 94 | CONFIG_SLUB_DEBUG=y |
95 | # CONFIG_SLUB is not set | 95 | # CONFIG_SLAB is not set |
96 | CONFIG_SLUB=y | ||
96 | # CONFIG_SLOB is not set | 97 | # CONFIG_SLOB is not set |
97 | CONFIG_RT_MUTEXES=y | 98 | CONFIG_RT_MUTEXES=y |
98 | # CONFIG_TINY_SHMEM is not set | 99 | # CONFIG_TINY_SHMEM is not set |
@@ -695,7 +696,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
695 | CONFIG_SCHED_DEBUG=y | 696 | CONFIG_SCHED_DEBUG=y |
696 | # CONFIG_SCHEDSTATS is not set | 697 | # CONFIG_SCHEDSTATS is not set |
697 | # CONFIG_TIMER_STATS is not set | 698 | # CONFIG_TIMER_STATS is not set |
698 | # CONFIG_DEBUG_SLAB is not set | 699 | # CONFIG_SLUB_DEBUG_ON is not set |
699 | # CONFIG_DEBUG_RT_MUTEXES is not set | 700 | # CONFIG_DEBUG_RT_MUTEXES is not set |
700 | # CONFIG_RT_MUTEX_TESTER is not set | 701 | # CONFIG_RT_MUTEX_TESTER is not set |
701 | # CONFIG_DEBUG_SPINLOCK is not set | 702 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/celleb_defconfig b/arch/powerpc/configs/celleb_defconfig index b4ac498c3cce..2c5969801bd6 100644 --- a/arch/powerpc/configs/celleb_defconfig +++ b/arch/powerpc/configs/celleb_defconfig | |||
@@ -92,8 +92,9 @@ CONFIG_TIMERFD=y | |||
92 | CONFIG_EVENTFD=y | 92 | CONFIG_EVENTFD=y |
93 | CONFIG_SHMEM=y | 93 | CONFIG_SHMEM=y |
94 | CONFIG_VM_EVENT_COUNTERS=y | 94 | CONFIG_VM_EVENT_COUNTERS=y |
95 | CONFIG_SLAB=y | 95 | CONFIG_SLUB_DEBUG=y |
96 | # CONFIG_SLUB is not set | 96 | # CONFIG_SLAB is not set |
97 | CONFIG_SLUB=y | ||
97 | # CONFIG_SLOB is not set | 98 | # CONFIG_SLOB is not set |
98 | CONFIG_RT_MUTEXES=y | 99 | CONFIG_RT_MUTEXES=y |
99 | # CONFIG_TINY_SHMEM is not set | 100 | # CONFIG_TINY_SHMEM is not set |
@@ -1218,7 +1219,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1218 | CONFIG_SCHED_DEBUG=y | 1219 | CONFIG_SCHED_DEBUG=y |
1219 | # CONFIG_SCHEDSTATS is not set | 1220 | # CONFIG_SCHEDSTATS is not set |
1220 | # CONFIG_TIMER_STATS is not set | 1221 | # CONFIG_TIMER_STATS is not set |
1221 | # CONFIG_DEBUG_SLAB is not set | 1222 | # CONFIG_SLUB_DEBUG_ON is not set |
1222 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1223 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1223 | # CONFIG_RT_MUTEX_TESTER is not set | 1224 | # CONFIG_RT_MUTEX_TESTER is not set |
1224 | # CONFIG_DEBUG_SPINLOCK is not set | 1225 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/chrp32_defconfig b/arch/powerpc/configs/chrp32_defconfig index c3977e334b3b..6f27e57331d5 100644 --- a/arch/powerpc/configs/chrp32_defconfig +++ b/arch/powerpc/configs/chrp32_defconfig | |||
@@ -92,8 +92,9 @@ CONFIG_TIMERFD=y | |||
92 | CONFIG_EVENTFD=y | 92 | CONFIG_EVENTFD=y |
93 | CONFIG_SHMEM=y | 93 | CONFIG_SHMEM=y |
94 | CONFIG_VM_EVENT_COUNTERS=y | 94 | CONFIG_VM_EVENT_COUNTERS=y |
95 | CONFIG_SLAB=y | 95 | CONFIG_SLUB_DEBUG=y |
96 | # CONFIG_SLUB is not set | 96 | # CONFIG_SLAB is not set |
97 | CONFIG_SLUB=y | ||
97 | # CONFIG_SLOB is not set | 98 | # CONFIG_SLOB is not set |
98 | CONFIG_RT_MUTEXES=y | 99 | CONFIG_RT_MUTEXES=y |
99 | # CONFIG_TINY_SHMEM is not set | 100 | # CONFIG_TINY_SHMEM is not set |
@@ -1373,7 +1374,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1373 | CONFIG_SCHED_DEBUG=y | 1374 | CONFIG_SCHED_DEBUG=y |
1374 | # CONFIG_SCHEDSTATS is not set | 1375 | # CONFIG_SCHEDSTATS is not set |
1375 | # CONFIG_TIMER_STATS is not set | 1376 | # CONFIG_TIMER_STATS is not set |
1376 | # CONFIG_DEBUG_SLAB is not set | 1377 | # CONFIG_SLUB_DEBUG_ON is not set |
1377 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1378 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1378 | # CONFIG_RT_MUTEX_TESTER is not set | 1379 | # CONFIG_RT_MUTEX_TESTER is not set |
1379 | # CONFIG_DEBUG_SPINLOCK is not set | 1380 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/ebony_defconfig b/arch/powerpc/configs/ebony_defconfig index 3a50467b1f75..35a95dda681e 100644 --- a/arch/powerpc/configs/ebony_defconfig +++ b/arch/powerpc/configs/ebony_defconfig | |||
@@ -90,8 +90,9 @@ CONFIG_TIMERFD=y | |||
90 | CONFIG_EVENTFD=y | 90 | CONFIG_EVENTFD=y |
91 | CONFIG_SHMEM=y | 91 | CONFIG_SHMEM=y |
92 | CONFIG_VM_EVENT_COUNTERS=y | 92 | CONFIG_VM_EVENT_COUNTERS=y |
93 | CONFIG_SLAB=y | 93 | CONFIG_SLUB_DEBUG=y |
94 | # CONFIG_SLUB is not set | 94 | # CONFIG_SLAB is not set |
95 | CONFIG_SLUB=y | ||
95 | # CONFIG_SLOB is not set | 96 | # CONFIG_SLOB is not set |
96 | CONFIG_RT_MUTEXES=y | 97 | CONFIG_RT_MUTEXES=y |
97 | # CONFIG_TINY_SHMEM is not set | 98 | # CONFIG_TINY_SHMEM is not set |
@@ -773,7 +774,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
773 | CONFIG_SCHED_DEBUG=y | 774 | CONFIG_SCHED_DEBUG=y |
774 | # CONFIG_SCHEDSTATS is not set | 775 | # CONFIG_SCHEDSTATS is not set |
775 | # CONFIG_TIMER_STATS is not set | 776 | # CONFIG_TIMER_STATS is not set |
776 | # CONFIG_DEBUG_SLAB is not set | 777 | # CONFIG_SLUB_DEBUG_ON is not set |
777 | # CONFIG_DEBUG_RT_MUTEXES is not set | 778 | # CONFIG_DEBUG_RT_MUTEXES is not set |
778 | # CONFIG_RT_MUTEX_TESTER is not set | 779 | # CONFIG_RT_MUTEX_TESTER is not set |
779 | # CONFIG_DEBUG_SPINLOCK is not set | 780 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig index a655d87b3f8b..0a6fa1fc9766 100644 --- a/arch/powerpc/configs/g5_defconfig +++ b/arch/powerpc/configs/g5_defconfig | |||
@@ -92,8 +92,9 @@ CONFIG_TIMERFD=y | |||
92 | CONFIG_EVENTFD=y | 92 | CONFIG_EVENTFD=y |
93 | CONFIG_SHMEM=y | 93 | CONFIG_SHMEM=y |
94 | CONFIG_VM_EVENT_COUNTERS=y | 94 | CONFIG_VM_EVENT_COUNTERS=y |
95 | CONFIG_SLAB=y | 95 | CONFIG_SLUB_DEBUG=y |
96 | # CONFIG_SLUB is not set | 96 | # CONFIG_SLAB is not set |
97 | CONFIG_SLUB=y | ||
97 | # CONFIG_SLOB is not set | 98 | # CONFIG_SLOB is not set |
98 | CONFIG_RT_MUTEXES=y | 99 | CONFIG_RT_MUTEXES=y |
99 | # CONFIG_TINY_SHMEM is not set | 100 | # CONFIG_TINY_SHMEM is not set |
@@ -1580,7 +1581,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1580 | CONFIG_SCHED_DEBUG=y | 1581 | CONFIG_SCHED_DEBUG=y |
1581 | # CONFIG_SCHEDSTATS is not set | 1582 | # CONFIG_SCHEDSTATS is not set |
1582 | # CONFIG_TIMER_STATS is not set | 1583 | # CONFIG_TIMER_STATS is not set |
1583 | # CONFIG_DEBUG_SLAB is not set | 1584 | # CONFIG_SLUB_DEBUG_ON is not set |
1584 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1585 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1585 | # CONFIG_RT_MUTEX_TESTER is not set | 1586 | # CONFIG_RT_MUTEX_TESTER is not set |
1586 | # CONFIG_DEBUG_SPINLOCK is not set | 1587 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/holly_defconfig b/arch/powerpc/configs/holly_defconfig index 97d0202a9fe0..11009185d230 100644 --- a/arch/powerpc/configs/holly_defconfig +++ b/arch/powerpc/configs/holly_defconfig | |||
@@ -88,8 +88,9 @@ CONFIG_TIMERFD=y | |||
88 | CONFIG_EVENTFD=y | 88 | CONFIG_EVENTFD=y |
89 | CONFIG_SHMEM=y | 89 | CONFIG_SHMEM=y |
90 | CONFIG_VM_EVENT_COUNTERS=y | 90 | CONFIG_VM_EVENT_COUNTERS=y |
91 | CONFIG_SLAB=y | 91 | CONFIG_SLUB_DEBUG=y |
92 | # CONFIG_SLUB is not set | 92 | # CONFIG_SLAB is not set |
93 | CONFIG_SLUB=y | ||
93 | # CONFIG_SLOB is not set | 94 | # CONFIG_SLOB is not set |
94 | CONFIG_RT_MUTEXES=y | 95 | CONFIG_RT_MUTEXES=y |
95 | # CONFIG_TINY_SHMEM is not set | 96 | # CONFIG_TINY_SHMEM is not set |
@@ -909,7 +910,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
909 | # CONFIG_SCHED_DEBUG is not set | 910 | # CONFIG_SCHED_DEBUG is not set |
910 | # CONFIG_SCHEDSTATS is not set | 911 | # CONFIG_SCHEDSTATS is not set |
911 | # CONFIG_TIMER_STATS is not set | 912 | # CONFIG_TIMER_STATS is not set |
912 | # CONFIG_DEBUG_SLAB is not set | 913 | # CONFIG_SLUB_DEBUG_ON is not set |
913 | # CONFIG_DEBUG_RT_MUTEXES is not set | 914 | # CONFIG_DEBUG_RT_MUTEXES is not set |
914 | # CONFIG_RT_MUTEX_TESTER is not set | 915 | # CONFIG_RT_MUTEX_TESTER is not set |
915 | # CONFIG_DEBUG_SPINLOCK is not set | 916 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig index 3fe1929460e7..d78e3a6fc68c 100644 --- a/arch/powerpc/configs/iseries_defconfig +++ b/arch/powerpc/configs/iseries_defconfig | |||
@@ -93,8 +93,9 @@ CONFIG_TIMERFD=y | |||
93 | CONFIG_EVENTFD=y | 93 | CONFIG_EVENTFD=y |
94 | CONFIG_SHMEM=y | 94 | CONFIG_SHMEM=y |
95 | CONFIG_VM_EVENT_COUNTERS=y | 95 | CONFIG_VM_EVENT_COUNTERS=y |
96 | CONFIG_SLAB=y | 96 | CONFIG_SLUB_DEBUG=y |
97 | # CONFIG_SLUB is not set | 97 | # CONFIG_SLAB is not set |
98 | CONFIG_SLUB=y | ||
98 | # CONFIG_SLOB is not set | 99 | # CONFIG_SLOB is not set |
99 | CONFIG_RT_MUTEXES=y | 100 | CONFIG_RT_MUTEXES=y |
100 | # CONFIG_TINY_SHMEM is not set | 101 | # CONFIG_TINY_SHMEM is not set |
@@ -1056,7 +1057,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1056 | CONFIG_SCHED_DEBUG=y | 1057 | CONFIG_SCHED_DEBUG=y |
1057 | # CONFIG_SCHEDSTATS is not set | 1058 | # CONFIG_SCHEDSTATS is not set |
1058 | # CONFIG_TIMER_STATS is not set | 1059 | # CONFIG_TIMER_STATS is not set |
1059 | # CONFIG_DEBUG_SLAB is not set | 1060 | # CONFIG_SLUB_DEBUG_ON is not set |
1060 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1061 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1061 | # CONFIG_RT_MUTEX_TESTER is not set | 1062 | # CONFIG_RT_MUTEX_TESTER is not set |
1062 | # CONFIG_DEBUG_SPINLOCK is not set | 1063 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/kilauea_defconfig b/arch/powerpc/configs/kilauea_defconfig index 31790d329269..fd1c530aa3ec 100644 --- a/arch/powerpc/configs/kilauea_defconfig +++ b/arch/powerpc/configs/kilauea_defconfig | |||
@@ -91,8 +91,9 @@ CONFIG_SIGNALFD=y | |||
91 | CONFIG_EVENTFD=y | 91 | CONFIG_EVENTFD=y |
92 | CONFIG_SHMEM=y | 92 | CONFIG_SHMEM=y |
93 | CONFIG_VM_EVENT_COUNTERS=y | 93 | CONFIG_VM_EVENT_COUNTERS=y |
94 | CONFIG_SLAB=y | 94 | CONFIG_SLUB_DEBUG=y |
95 | # CONFIG_SLUB is not set | 95 | # CONFIG_SLAB is not set |
96 | CONFIG_SLUB=y | ||
96 | # CONFIG_SLOB is not set | 97 | # CONFIG_SLOB is not set |
97 | CONFIG_RT_MUTEXES=y | 98 | CONFIG_RT_MUTEXES=y |
98 | # CONFIG_TINY_SHMEM is not set | 99 | # CONFIG_TINY_SHMEM is not set |
@@ -700,7 +701,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
700 | CONFIG_SCHED_DEBUG=y | 701 | CONFIG_SCHED_DEBUG=y |
701 | # CONFIG_SCHEDSTATS is not set | 702 | # CONFIG_SCHEDSTATS is not set |
702 | # CONFIG_TIMER_STATS is not set | 703 | # CONFIG_TIMER_STATS is not set |
703 | # CONFIG_DEBUG_SLAB is not set | 704 | # CONFIG_SLUB_DEBUG_ON is not set |
704 | # CONFIG_DEBUG_RT_MUTEXES is not set | 705 | # CONFIG_DEBUG_RT_MUTEXES is not set |
705 | # CONFIG_RT_MUTEX_TESTER is not set | 706 | # CONFIG_RT_MUTEX_TESTER is not set |
706 | # CONFIG_DEBUG_SPINLOCK is not set | 707 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig index a4e3ee045a6a..401033aefd40 100644 --- a/arch/powerpc/configs/linkstation_defconfig +++ b/arch/powerpc/configs/linkstation_defconfig | |||
@@ -89,8 +89,9 @@ CONFIG_TIMERFD=y | |||
89 | CONFIG_EVENTFD=y | 89 | CONFIG_EVENTFD=y |
90 | CONFIG_SHMEM=y | 90 | CONFIG_SHMEM=y |
91 | CONFIG_VM_EVENT_COUNTERS=y | 91 | CONFIG_VM_EVENT_COUNTERS=y |
92 | CONFIG_SLAB=y | 92 | CONFIG_SLUB_DEBUG=y |
93 | # CONFIG_SLUB is not set | 93 | # CONFIG_SLAB is not set |
94 | CONFIG_SLUB=y | ||
94 | # CONFIG_SLOB is not set | 95 | # CONFIG_SLOB is not set |
95 | CONFIG_RT_MUTEXES=y | 96 | CONFIG_RT_MUTEXES=y |
96 | # CONFIG_TINY_SHMEM is not set | 97 | # CONFIG_TINY_SHMEM is not set |
@@ -1459,7 +1460,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1459 | CONFIG_SCHED_DEBUG=y | 1460 | CONFIG_SCHED_DEBUG=y |
1460 | # CONFIG_SCHEDSTATS is not set | 1461 | # CONFIG_SCHEDSTATS is not set |
1461 | # CONFIG_TIMER_STATS is not set | 1462 | # CONFIG_TIMER_STATS is not set |
1462 | # CONFIG_DEBUG_SLAB is not set | 1463 | # CONFIG_SLUB_DEBUG_ON is not set |
1463 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1464 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1464 | # CONFIG_RT_MUTEX_TESTER is not set | 1465 | # CONFIG_RT_MUTEX_TESTER is not set |
1465 | # CONFIG_DEBUG_SPINLOCK is not set | 1466 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/lite5200_defconfig b/arch/powerpc/configs/lite5200_defconfig index d42e226d3a28..dd78ed955eb0 100644 --- a/arch/powerpc/configs/lite5200_defconfig +++ b/arch/powerpc/configs/lite5200_defconfig | |||
@@ -87,8 +87,9 @@ CONFIG_TIMERFD=y | |||
87 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 88 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
90 | CONFIG_SLAB=y | 90 | CONFIG_SLUB_DEBUG=y |
91 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | ||
92 | # CONFIG_SLOB is not set | 93 | # CONFIG_SLOB is not set |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
@@ -816,7 +817,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
816 | CONFIG_SCHED_DEBUG=y | 817 | CONFIG_SCHED_DEBUG=y |
817 | # CONFIG_SCHEDSTATS is not set | 818 | # CONFIG_SCHEDSTATS is not set |
818 | # CONFIG_TIMER_STATS is not set | 819 | # CONFIG_TIMER_STATS is not set |
819 | # CONFIG_DEBUG_SLAB is not set | 820 | # CONFIG_SLUB_DEBUG_ON is not set |
820 | # CONFIG_DEBUG_RT_MUTEXES is not set | 821 | # CONFIG_DEBUG_RT_MUTEXES is not set |
821 | # CONFIG_RT_MUTEX_TESTER is not set | 822 | # CONFIG_RT_MUTEX_TESTER is not set |
822 | # CONFIG_DEBUG_SPINLOCK is not set | 823 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/maple_defconfig b/arch/powerpc/configs/maple_defconfig index 96b538bc676b..84b9ab4a5a92 100644 --- a/arch/powerpc/configs/maple_defconfig +++ b/arch/powerpc/configs/maple_defconfig | |||
@@ -90,8 +90,9 @@ CONFIG_TIMERFD=y | |||
90 | CONFIG_EVENTFD=y | 90 | CONFIG_EVENTFD=y |
91 | CONFIG_SHMEM=y | 91 | CONFIG_SHMEM=y |
92 | CONFIG_VM_EVENT_COUNTERS=y | 92 | CONFIG_VM_EVENT_COUNTERS=y |
93 | CONFIG_SLAB=y | 93 | CONFIG_SLUB_DEBUG=y |
94 | # CONFIG_SLUB is not set | 94 | # CONFIG_SLAB is not set |
95 | CONFIG_SLUB=y | ||
95 | # CONFIG_SLOB is not set | 96 | # CONFIG_SLOB is not set |
96 | CONFIG_RT_MUTEXES=y | 97 | CONFIG_RT_MUTEXES=y |
97 | # CONFIG_TINY_SHMEM is not set | 98 | # CONFIG_TINY_SHMEM is not set |
@@ -1095,8 +1096,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1095 | CONFIG_SCHED_DEBUG=y | 1096 | CONFIG_SCHED_DEBUG=y |
1096 | # CONFIG_SCHEDSTATS is not set | 1097 | # CONFIG_SCHEDSTATS is not set |
1097 | # CONFIG_TIMER_STATS is not set | 1098 | # CONFIG_TIMER_STATS is not set |
1098 | CONFIG_DEBUG_SLAB=y | 1099 | # CONFIG_SLUB_DEBUG_ON is not set |
1099 | # CONFIG_DEBUG_SLAB_LEAK is not set | ||
1100 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1100 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1101 | # CONFIG_RT_MUTEX_TESTER is not set | 1101 | # CONFIG_RT_MUTEX_TESTER is not set |
1102 | # CONFIG_DEBUG_SPINLOCK is not set | 1102 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc7448_hpc2_defconfig b/arch/powerpc/configs/mpc7448_hpc2_defconfig index 05814a3b0e33..87ae894551b7 100644 --- a/arch/powerpc/configs/mpc7448_hpc2_defconfig +++ b/arch/powerpc/configs/mpc7448_hpc2_defconfig | |||
@@ -87,8 +87,9 @@ CONFIG_TIMERFD=y | |||
87 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 88 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
90 | CONFIG_SLAB=y | 90 | CONFIG_SLUB_DEBUG=y |
91 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | ||
92 | # CONFIG_SLOB is not set | 93 | # CONFIG_SLOB is not set |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
diff --git a/arch/powerpc/configs/mpc8272_ads_defconfig b/arch/powerpc/configs/mpc8272_ads_defconfig index 6b7951ec941a..865a942ecc69 100644 --- a/arch/powerpc/configs/mpc8272_ads_defconfig +++ b/arch/powerpc/configs/mpc8272_ads_defconfig | |||
@@ -85,8 +85,9 @@ CONFIG_TIMERFD=y | |||
85 | CONFIG_EVENTFD=y | 85 | CONFIG_EVENTFD=y |
86 | CONFIG_SHMEM=y | 86 | CONFIG_SHMEM=y |
87 | CONFIG_VM_EVENT_COUNTERS=y | 87 | CONFIG_VM_EVENT_COUNTERS=y |
88 | CONFIG_SLAB=y | 88 | CONFIG_SLUB_DEBUG=y |
89 | # CONFIG_SLUB is not set | 89 | # CONFIG_SLAB is not set |
90 | CONFIG_SLUB=y | ||
90 | # CONFIG_SLOB is not set | 91 | # CONFIG_SLOB is not set |
91 | CONFIG_RT_MUTEXES=y | 92 | CONFIG_RT_MUTEXES=y |
92 | # CONFIG_TINY_SHMEM is not set | 93 | # CONFIG_TINY_SHMEM is not set |
@@ -867,7 +868,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
867 | CONFIG_SCHED_DEBUG=y | 868 | CONFIG_SCHED_DEBUG=y |
868 | # CONFIG_SCHEDSTATS is not set | 869 | # CONFIG_SCHEDSTATS is not set |
869 | # CONFIG_TIMER_STATS is not set | 870 | # CONFIG_TIMER_STATS is not set |
870 | # CONFIG_DEBUG_SLAB is not set | 871 | # CONFIG_SLUB_DEBUG_ON is not set |
871 | # CONFIG_DEBUG_RT_MUTEXES is not set | 872 | # CONFIG_DEBUG_RT_MUTEXES is not set |
872 | # CONFIG_RT_MUTEX_TESTER is not set | 873 | # CONFIG_RT_MUTEX_TESTER is not set |
873 | # CONFIG_DEBUG_SPINLOCK is not set | 874 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc8313_rdb_defconfig b/arch/powerpc/configs/mpc8313_rdb_defconfig index f387dac69d09..259d40d1eb5a 100644 --- a/arch/powerpc/configs/mpc8313_rdb_defconfig +++ b/arch/powerpc/configs/mpc8313_rdb_defconfig | |||
@@ -87,8 +87,9 @@ CONFIG_TIMERFD=y | |||
87 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 88 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
90 | CONFIG_SLAB=y | 90 | CONFIG_SLUB_DEBUG=y |
91 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | ||
92 | # CONFIG_SLOB is not set | 93 | # CONFIG_SLOB is not set |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
@@ -1272,7 +1273,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1272 | CONFIG_SCHED_DEBUG=y | 1273 | CONFIG_SCHED_DEBUG=y |
1273 | # CONFIG_SCHEDSTATS is not set | 1274 | # CONFIG_SCHEDSTATS is not set |
1274 | # CONFIG_TIMER_STATS is not set | 1275 | # CONFIG_TIMER_STATS is not set |
1275 | # CONFIG_DEBUG_SLAB is not set | 1276 | # CONFIG_SLUB_DEBUG_ON is not set |
1276 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1277 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1277 | # CONFIG_RT_MUTEX_TESTER is not set | 1278 | # CONFIG_RT_MUTEX_TESTER is not set |
1278 | # CONFIG_DEBUG_SPINLOCK is not set | 1279 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc832x_mds_defconfig b/arch/powerpc/configs/mpc832x_mds_defconfig index fc6695302cc8..dd68d1818d6b 100644 --- a/arch/powerpc/configs/mpc832x_mds_defconfig +++ b/arch/powerpc/configs/mpc832x_mds_defconfig | |||
@@ -87,8 +87,9 @@ CONFIG_TIMERFD=y | |||
87 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 88 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
90 | CONFIG_SLAB=y | 90 | CONFIG_SLUB_DEBUG=y |
91 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | ||
92 | # CONFIG_SLOB is not set | 93 | # CONFIG_SLOB is not set |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
diff --git a/arch/powerpc/configs/mpc832x_rdb_defconfig b/arch/powerpc/configs/mpc832x_rdb_defconfig index 6d1c3e842051..4f391028c79c 100644 --- a/arch/powerpc/configs/mpc832x_rdb_defconfig +++ b/arch/powerpc/configs/mpc832x_rdb_defconfig | |||
@@ -87,8 +87,9 @@ CONFIG_TIMERFD=y | |||
87 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 88 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
90 | CONFIG_SLAB=y | 90 | CONFIG_SLUB_DEBUG=y |
91 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | ||
92 | # CONFIG_SLOB is not set | 93 | # CONFIG_SLOB is not set |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
diff --git a/arch/powerpc/configs/mpc834x_itx_defconfig b/arch/powerpc/configs/mpc834x_itx_defconfig index ddafa6b9af05..eb28dd85cb2b 100644 --- a/arch/powerpc/configs/mpc834x_itx_defconfig +++ b/arch/powerpc/configs/mpc834x_itx_defconfig | |||
@@ -87,8 +87,9 @@ CONFIG_TIMERFD=y | |||
87 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 88 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
90 | CONFIG_SLAB=y | 90 | CONFIG_SLUB_DEBUG=y |
91 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | ||
92 | # CONFIG_SLOB is not set | 93 | # CONFIG_SLOB is not set |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
diff --git a/arch/powerpc/configs/mpc834x_itxgp_defconfig b/arch/powerpc/configs/mpc834x_itxgp_defconfig index 8241c6985861..22b95462c913 100644 --- a/arch/powerpc/configs/mpc834x_itxgp_defconfig +++ b/arch/powerpc/configs/mpc834x_itxgp_defconfig | |||
@@ -87,8 +87,9 @@ CONFIG_TIMERFD=y | |||
87 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 88 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
90 | CONFIG_SLAB=y | 90 | CONFIG_SLUB_DEBUG=y |
91 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | ||
92 | # CONFIG_SLOB is not set | 93 | # CONFIG_SLOB is not set |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
diff --git a/arch/powerpc/configs/mpc834x_mds_defconfig b/arch/powerpc/configs/mpc834x_mds_defconfig index 06233b1a9418..e59a88e95486 100644 --- a/arch/powerpc/configs/mpc834x_mds_defconfig +++ b/arch/powerpc/configs/mpc834x_mds_defconfig | |||
@@ -87,8 +87,9 @@ CONFIG_TIMERFD=y | |||
87 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 88 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
90 | CONFIG_SLAB=y | 90 | CONFIG_SLUB_DEBUG=y |
91 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | ||
92 | # CONFIG_SLOB is not set | 93 | # CONFIG_SLOB is not set |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
diff --git a/arch/powerpc/configs/mpc836x_mds_defconfig b/arch/powerpc/configs/mpc836x_mds_defconfig index 3045749d62fe..75657528518e 100644 --- a/arch/powerpc/configs/mpc836x_mds_defconfig +++ b/arch/powerpc/configs/mpc836x_mds_defconfig | |||
@@ -87,8 +87,9 @@ CONFIG_TIMERFD=y | |||
87 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 88 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
90 | CONFIG_SLAB=y | 90 | CONFIG_SLUB_DEBUG=y |
91 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | ||
92 | # CONFIG_SLOB is not set | 93 | # CONFIG_SLOB is not set |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
diff --git a/arch/powerpc/configs/mpc8540_ads_defconfig b/arch/powerpc/configs/mpc8540_ads_defconfig index b282c3521dd5..b953b2c51453 100644 --- a/arch/powerpc/configs/mpc8540_ads_defconfig +++ b/arch/powerpc/configs/mpc8540_ads_defconfig | |||
@@ -90,8 +90,9 @@ CONFIG_TIMERFD=y | |||
90 | CONFIG_EVENTFD=y | 90 | CONFIG_EVENTFD=y |
91 | CONFIG_SHMEM=y | 91 | CONFIG_SHMEM=y |
92 | CONFIG_VM_EVENT_COUNTERS=y | 92 | CONFIG_VM_EVENT_COUNTERS=y |
93 | CONFIG_SLAB=y | 93 | CONFIG_SLUB_DEBUG=y |
94 | # CONFIG_SLUB is not set | 94 | # CONFIG_SLAB is not set |
95 | CONFIG_SLUB=y | ||
95 | # CONFIG_SLOB is not set | 96 | # CONFIG_SLOB is not set |
96 | CONFIG_RT_MUTEXES=y | 97 | CONFIG_RT_MUTEXES=y |
97 | # CONFIG_TINY_SHMEM is not set | 98 | # CONFIG_TINY_SHMEM is not set |
@@ -704,7 +705,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
704 | CONFIG_SCHED_DEBUG=y | 705 | CONFIG_SCHED_DEBUG=y |
705 | # CONFIG_SCHEDSTATS is not set | 706 | # CONFIG_SCHEDSTATS is not set |
706 | # CONFIG_TIMER_STATS is not set | 707 | # CONFIG_TIMER_STATS is not set |
707 | # CONFIG_DEBUG_SLAB is not set | 708 | # CONFIG_SLUB_DEBUG_ON is not set |
708 | # CONFIG_DEBUG_RT_MUTEXES is not set | 709 | # CONFIG_DEBUG_RT_MUTEXES is not set |
709 | # CONFIG_RT_MUTEX_TESTER is not set | 710 | # CONFIG_RT_MUTEX_TESTER is not set |
710 | # CONFIG_DEBUG_SPINLOCK is not set | 711 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc8544_ds_defconfig b/arch/powerpc/configs/mpc8544_ds_defconfig index 150221f6f723..9a3e08bcd188 100644 --- a/arch/powerpc/configs/mpc8544_ds_defconfig +++ b/arch/powerpc/configs/mpc8544_ds_defconfig | |||
@@ -93,8 +93,9 @@ CONFIG_TIMERFD=y | |||
93 | CONFIG_EVENTFD=y | 93 | CONFIG_EVENTFD=y |
94 | CONFIG_SHMEM=y | 94 | CONFIG_SHMEM=y |
95 | CONFIG_VM_EVENT_COUNTERS=y | 95 | CONFIG_VM_EVENT_COUNTERS=y |
96 | CONFIG_SLAB=y | 96 | CONFIG_SLUB_DEBUG=y |
97 | # CONFIG_SLUB is not set | 97 | # CONFIG_SLAB is not set |
98 | CONFIG_SLUB=y | ||
98 | # CONFIG_SLOB is not set | 99 | # CONFIG_SLOB is not set |
99 | CONFIG_RT_MUTEXES=y | 100 | CONFIG_RT_MUTEXES=y |
100 | # CONFIG_TINY_SHMEM is not set | 101 | # CONFIG_TINY_SHMEM is not set |
@@ -1427,7 +1428,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1427 | CONFIG_SCHED_DEBUG=y | 1428 | CONFIG_SCHED_DEBUG=y |
1428 | # CONFIG_SCHEDSTATS is not set | 1429 | # CONFIG_SCHEDSTATS is not set |
1429 | # CONFIG_TIMER_STATS is not set | 1430 | # CONFIG_TIMER_STATS is not set |
1430 | # CONFIG_DEBUG_SLAB is not set | 1431 | # CONFIG_SLUB_DEBUG_ON is not set |
1431 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1432 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1432 | # CONFIG_RT_MUTEX_TESTER is not set | 1433 | # CONFIG_RT_MUTEX_TESTER is not set |
1433 | # CONFIG_DEBUG_SPINLOCK is not set | 1434 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc8560_ads_defconfig b/arch/powerpc/configs/mpc8560_ads_defconfig index 3d68c65212cf..0211e6b68e1a 100644 --- a/arch/powerpc/configs/mpc8560_ads_defconfig +++ b/arch/powerpc/configs/mpc8560_ads_defconfig | |||
@@ -94,8 +94,9 @@ CONFIG_SIGNALFD=y | |||
94 | CONFIG_EVENTFD=y | 94 | CONFIG_EVENTFD=y |
95 | CONFIG_SHMEM=y | 95 | CONFIG_SHMEM=y |
96 | CONFIG_VM_EVENT_COUNTERS=y | 96 | CONFIG_VM_EVENT_COUNTERS=y |
97 | CONFIG_SLAB=y | 97 | CONFIG_SLUB_DEBUG=y |
98 | # CONFIG_SLUB is not set | 98 | # CONFIG_SLAB is not set |
99 | CONFIG_SLUB=y | ||
99 | # CONFIG_SLOB is not set | 100 | # CONFIG_SLOB is not set |
100 | CONFIG_RT_MUTEXES=y | 101 | CONFIG_RT_MUTEXES=y |
101 | # CONFIG_TINY_SHMEM is not set | 102 | # CONFIG_TINY_SHMEM is not set |
@@ -791,7 +792,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
791 | CONFIG_SCHED_DEBUG=y | 792 | CONFIG_SCHED_DEBUG=y |
792 | # CONFIG_SCHEDSTATS is not set | 793 | # CONFIG_SCHEDSTATS is not set |
793 | # CONFIG_TIMER_STATS is not set | 794 | # CONFIG_TIMER_STATS is not set |
794 | # CONFIG_DEBUG_SLAB is not set | 795 | # CONFIG_SLUB_DEBUG_ON is not set |
795 | # CONFIG_DEBUG_RT_MUTEXES is not set | 796 | # CONFIG_DEBUG_RT_MUTEXES is not set |
796 | # CONFIG_RT_MUTEX_TESTER is not set | 797 | # CONFIG_RT_MUTEX_TESTER is not set |
797 | # CONFIG_DEBUG_SPINLOCK is not set | 798 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc8568mds_defconfig b/arch/powerpc/configs/mpc8568mds_defconfig index 0307fe7b0487..883d8af9debd 100644 --- a/arch/powerpc/configs/mpc8568mds_defconfig +++ b/arch/powerpc/configs/mpc8568mds_defconfig | |||
@@ -88,8 +88,9 @@ CONFIG_TIMERFD=y | |||
88 | CONFIG_EVENTFD=y | 88 | CONFIG_EVENTFD=y |
89 | CONFIG_SHMEM=y | 89 | CONFIG_SHMEM=y |
90 | CONFIG_VM_EVENT_COUNTERS=y | 90 | CONFIG_VM_EVENT_COUNTERS=y |
91 | CONFIG_SLAB=y | 91 | CONFIG_SLUB_DEBUG=y |
92 | # CONFIG_SLUB is not set | 92 | # CONFIG_SLAB is not set |
93 | CONFIG_SLUB=y | ||
93 | # CONFIG_SLOB is not set | 94 | # CONFIG_SLOB is not set |
94 | CONFIG_RT_MUTEXES=y | 95 | CONFIG_RT_MUTEXES=y |
95 | # CONFIG_TINY_SHMEM is not set | 96 | # CONFIG_TINY_SHMEM is not set |
@@ -949,7 +950,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
949 | CONFIG_SCHED_DEBUG=y | 950 | CONFIG_SCHED_DEBUG=y |
950 | # CONFIG_SCHEDSTATS is not set | 951 | # CONFIG_SCHEDSTATS is not set |
951 | # CONFIG_TIMER_STATS is not set | 952 | # CONFIG_TIMER_STATS is not set |
952 | # CONFIG_DEBUG_SLAB is not set | 953 | # CONFIG_SLUB_DEBUG_ON is not set |
953 | # CONFIG_DEBUG_RT_MUTEXES is not set | 954 | # CONFIG_DEBUG_RT_MUTEXES is not set |
954 | # CONFIG_RT_MUTEX_TESTER is not set | 955 | # CONFIG_RT_MUTEX_TESTER is not set |
955 | # CONFIG_DEBUG_SPINLOCK is not set | 956 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc8572_ds_defconfig b/arch/powerpc/configs/mpc8572_ds_defconfig index 7f1a3e987138..4e85b2e88525 100644 --- a/arch/powerpc/configs/mpc8572_ds_defconfig +++ b/arch/powerpc/configs/mpc8572_ds_defconfig | |||
@@ -93,8 +93,9 @@ CONFIG_TIMERFD=y | |||
93 | CONFIG_EVENTFD=y | 93 | CONFIG_EVENTFD=y |
94 | CONFIG_SHMEM=y | 94 | CONFIG_SHMEM=y |
95 | CONFIG_VM_EVENT_COUNTERS=y | 95 | CONFIG_VM_EVENT_COUNTERS=y |
96 | CONFIG_SLAB=y | 96 | CONFIG_SLUB_DEBUG=y |
97 | # CONFIG_SLUB is not set | 97 | # CONFIG_SLAB is not set |
98 | CONFIG_SLUB=y | ||
98 | # CONFIG_SLOB is not set | 99 | # CONFIG_SLOB is not set |
99 | CONFIG_RT_MUTEXES=y | 100 | CONFIG_RT_MUTEXES=y |
100 | # CONFIG_TINY_SHMEM is not set | 101 | # CONFIG_TINY_SHMEM is not set |
@@ -1427,7 +1428,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1427 | CONFIG_SCHED_DEBUG=y | 1428 | CONFIG_SCHED_DEBUG=y |
1428 | # CONFIG_SCHEDSTATS is not set | 1429 | # CONFIG_SCHEDSTATS is not set |
1429 | # CONFIG_TIMER_STATS is not set | 1430 | # CONFIG_TIMER_STATS is not set |
1430 | # CONFIG_DEBUG_SLAB is not set | 1431 | # CONFIG_SLUB_DEBUG_ON is not set |
1431 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1432 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1432 | # CONFIG_RT_MUTEX_TESTER is not set | 1433 | # CONFIG_RT_MUTEX_TESTER is not set |
1433 | # CONFIG_DEBUG_SPINLOCK is not set | 1434 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc85xx_cds_defconfig b/arch/powerpc/configs/mpc85xx_cds_defconfig index e6850c619f88..a4f33d110542 100644 --- a/arch/powerpc/configs/mpc85xx_cds_defconfig +++ b/arch/powerpc/configs/mpc85xx_cds_defconfig | |||
@@ -90,8 +90,9 @@ CONFIG_TIMERFD=y | |||
90 | CONFIG_EVENTFD=y | 90 | CONFIG_EVENTFD=y |
91 | CONFIG_SHMEM=y | 91 | CONFIG_SHMEM=y |
92 | CONFIG_VM_EVENT_COUNTERS=y | 92 | CONFIG_VM_EVENT_COUNTERS=y |
93 | CONFIG_SLAB=y | 93 | CONFIG_SLUB_DEBUG=y |
94 | # CONFIG_SLUB is not set | 94 | # CONFIG_SLAB is not set |
95 | CONFIG_SLUB=y | ||
95 | # CONFIG_SLOB is not set | 96 | # CONFIG_SLOB is not set |
96 | CONFIG_RT_MUTEXES=y | 97 | CONFIG_RT_MUTEXES=y |
97 | # CONFIG_TINY_SHMEM is not set | 98 | # CONFIG_TINY_SHMEM is not set |
@@ -832,7 +833,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
832 | CONFIG_SCHED_DEBUG=y | 833 | CONFIG_SCHED_DEBUG=y |
833 | # CONFIG_SCHEDSTATS is not set | 834 | # CONFIG_SCHEDSTATS is not set |
834 | # CONFIG_TIMER_STATS is not set | 835 | # CONFIG_TIMER_STATS is not set |
835 | # CONFIG_DEBUG_SLAB is not set | 836 | # CONFIG_SLUB_DEBUG_ON is not set |
836 | # CONFIG_DEBUG_RT_MUTEXES is not set | 837 | # CONFIG_DEBUG_RT_MUTEXES is not set |
837 | # CONFIG_RT_MUTEX_TESTER is not set | 838 | # CONFIG_RT_MUTEX_TESTER is not set |
838 | # CONFIG_DEBUG_SPINLOCK is not set | 839 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc8610_hpcd_defconfig b/arch/powerpc/configs/mpc8610_hpcd_defconfig index de19b781937f..0483211f52be 100644 --- a/arch/powerpc/configs/mpc8610_hpcd_defconfig +++ b/arch/powerpc/configs/mpc8610_hpcd_defconfig | |||
@@ -88,8 +88,9 @@ CONFIG_SIGNALFD=y | |||
88 | CONFIG_EVENTFD=y | 88 | CONFIG_EVENTFD=y |
89 | CONFIG_SHMEM=y | 89 | CONFIG_SHMEM=y |
90 | CONFIG_VM_EVENT_COUNTERS=y | 90 | CONFIG_VM_EVENT_COUNTERS=y |
91 | CONFIG_SLAB=y | 91 | CONFIG_SLUB_DEBUG=y |
92 | # CONFIG_SLUB is not set | 92 | # CONFIG_SLAB is not set |
93 | CONFIG_SLUB=y | ||
93 | # CONFIG_SLOB is not set | 94 | # CONFIG_SLOB is not set |
94 | CONFIG_RT_MUTEXES=y | 95 | CONFIG_RT_MUTEXES=y |
95 | # CONFIG_TINY_SHMEM is not set | 96 | # CONFIG_TINY_SHMEM is not set |
@@ -993,7 +994,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
993 | CONFIG_SCHED_DEBUG=y | 994 | CONFIG_SCHED_DEBUG=y |
994 | # CONFIG_SCHEDSTATS is not set | 995 | # CONFIG_SCHEDSTATS is not set |
995 | # CONFIG_TIMER_STATS is not set | 996 | # CONFIG_TIMER_STATS is not set |
996 | # CONFIG_DEBUG_SLAB is not set | 997 | # CONFIG_SLUB_DEBUG_ON is not set |
997 | # CONFIG_DEBUG_RT_MUTEXES is not set | 998 | # CONFIG_DEBUG_RT_MUTEXES is not set |
998 | # CONFIG_RT_MUTEX_TESTER is not set | 999 | # CONFIG_RT_MUTEX_TESTER is not set |
999 | # CONFIG_DEBUG_SPINLOCK is not set | 1000 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc8641_hpcn_defconfig b/arch/powerpc/configs/mpc8641_hpcn_defconfig index b2f389dcaded..ed214fcd8abe 100644 --- a/arch/powerpc/configs/mpc8641_hpcn_defconfig +++ b/arch/powerpc/configs/mpc8641_hpcn_defconfig | |||
@@ -94,8 +94,9 @@ CONFIG_TIMERFD=y | |||
94 | CONFIG_EVENTFD=y | 94 | CONFIG_EVENTFD=y |
95 | CONFIG_SHMEM=y | 95 | CONFIG_SHMEM=y |
96 | CONFIG_VM_EVENT_COUNTERS=y | 96 | CONFIG_VM_EVENT_COUNTERS=y |
97 | CONFIG_SLAB=y | 97 | CONFIG_SLUB_DEBUG=y |
98 | # CONFIG_SLUB is not set | 98 | # CONFIG_SLAB is not set |
99 | CONFIG_SLUB=y | ||
99 | # CONFIG_SLOB is not set | 100 | # CONFIG_SLOB is not set |
100 | CONFIG_RT_MUTEXES=y | 101 | CONFIG_RT_MUTEXES=y |
101 | # CONFIG_TINY_SHMEM is not set | 102 | # CONFIG_TINY_SHMEM is not set |
@@ -1432,7 +1433,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1432 | CONFIG_SCHED_DEBUG=y | 1433 | CONFIG_SCHED_DEBUG=y |
1433 | # CONFIG_SCHEDSTATS is not set | 1434 | # CONFIG_SCHEDSTATS is not set |
1434 | # CONFIG_TIMER_STATS is not set | 1435 | # CONFIG_TIMER_STATS is not set |
1435 | # CONFIG_DEBUG_SLAB is not set | 1436 | # CONFIG_SLUB_DEBUG_ON is not set |
1436 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1437 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1437 | # CONFIG_RT_MUTEX_TESTER is not set | 1438 | # CONFIG_RT_MUTEX_TESTER is not set |
1438 | # CONFIG_DEBUG_SPINLOCK is not set | 1439 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/mpc866_ads_defconfig b/arch/powerpc/configs/mpc866_ads_defconfig index 143a0cd83327..070b0a5b9c0d 100644 --- a/arch/powerpc/configs/mpc866_ads_defconfig +++ b/arch/powerpc/configs/mpc866_ads_defconfig | |||
@@ -83,8 +83,9 @@ CONFIG_TIMERFD=y | |||
83 | CONFIG_EVENTFD=y | 83 | CONFIG_EVENTFD=y |
84 | CONFIG_SHMEM=y | 84 | CONFIG_SHMEM=y |
85 | # CONFIG_VM_EVENT_COUNTERS is not set | 85 | # CONFIG_VM_EVENT_COUNTERS is not set |
86 | CONFIG_SLAB=y | 86 | CONFIG_SLUB_DEBUG=y |
87 | # CONFIG_SLUB is not set | 87 | # CONFIG_SLAB is not set |
88 | CONFIG_SLUB=y | ||
88 | # CONFIG_SLOB is not set | 89 | # CONFIG_SLOB is not set |
89 | CONFIG_RT_MUTEXES=y | 90 | CONFIG_RT_MUTEXES=y |
90 | # CONFIG_TINY_SHMEM is not set | 91 | # CONFIG_TINY_SHMEM is not set |
diff --git a/arch/powerpc/configs/pasemi_defconfig b/arch/powerpc/configs/pasemi_defconfig index 295207030c60..1ccf3ed7693e 100644 --- a/arch/powerpc/configs/pasemi_defconfig +++ b/arch/powerpc/configs/pasemi_defconfig | |||
@@ -90,8 +90,9 @@ CONFIG_TIMERFD=y | |||
90 | CONFIG_EVENTFD=y | 90 | CONFIG_EVENTFD=y |
91 | CONFIG_SHMEM=y | 91 | CONFIG_SHMEM=y |
92 | CONFIG_VM_EVENT_COUNTERS=y | 92 | CONFIG_VM_EVENT_COUNTERS=y |
93 | CONFIG_SLAB=y | 93 | CONFIG_SLUB_DEBUG=y |
94 | # CONFIG_SLUB is not set | 94 | # CONFIG_SLAB is not set |
95 | CONFIG_SLUB=y | ||
95 | # CONFIG_SLOB is not set | 96 | # CONFIG_SLOB is not set |
96 | CONFIG_RT_MUTEXES=y | 97 | CONFIG_RT_MUTEXES=y |
97 | # CONFIG_TINY_SHMEM is not set | 98 | # CONFIG_TINY_SHMEM is not set |
@@ -1588,7 +1589,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1588 | CONFIG_SCHED_DEBUG=y | 1589 | CONFIG_SCHED_DEBUG=y |
1589 | # CONFIG_SCHEDSTATS is not set | 1590 | # CONFIG_SCHEDSTATS is not set |
1590 | # CONFIG_TIMER_STATS is not set | 1591 | # CONFIG_TIMER_STATS is not set |
1591 | # CONFIG_DEBUG_SLAB is not set | 1592 | # CONFIG_SLUB_DEBUG_ON is not set |
1592 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1593 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1593 | # CONFIG_RT_MUTEX_TESTER is not set | 1594 | # CONFIG_RT_MUTEX_TESTER is not set |
1594 | # CONFIG_DEBUG_SPINLOCK is not set | 1595 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/pmac32_defconfig b/arch/powerpc/configs/pmac32_defconfig index cfc9c6573a3c..95b823b60c97 100644 --- a/arch/powerpc/configs/pmac32_defconfig +++ b/arch/powerpc/configs/pmac32_defconfig | |||
@@ -91,8 +91,9 @@ CONFIG_TIMERFD=y | |||
91 | CONFIG_EVENTFD=y | 91 | CONFIG_EVENTFD=y |
92 | CONFIG_SHMEM=y | 92 | CONFIG_SHMEM=y |
93 | CONFIG_VM_EVENT_COUNTERS=y | 93 | CONFIG_VM_EVENT_COUNTERS=y |
94 | CONFIG_SLAB=y | 94 | CONFIG_SLUB_DEBUG=y |
95 | # CONFIG_SLUB is not set | 95 | # CONFIG_SLAB is not set |
96 | CONFIG_SLUB=y | ||
96 | # CONFIG_SLOB is not set | 97 | # CONFIG_SLOB is not set |
97 | CONFIG_RT_MUTEXES=y | 98 | CONFIG_RT_MUTEXES=y |
98 | # CONFIG_TINY_SHMEM is not set | 99 | # CONFIG_TINY_SHMEM is not set |
@@ -1829,7 +1830,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1829 | CONFIG_SCHED_DEBUG=y | 1830 | CONFIG_SCHED_DEBUG=y |
1830 | # CONFIG_SCHEDSTATS is not set | 1831 | # CONFIG_SCHEDSTATS is not set |
1831 | # CONFIG_TIMER_STATS is not set | 1832 | # CONFIG_TIMER_STATS is not set |
1832 | # CONFIG_DEBUG_SLAB is not set | 1833 | # CONFIG_SLUB_DEBUG_ON is not set |
1833 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1834 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1834 | # CONFIG_RT_MUTEX_TESTER is not set | 1835 | # CONFIG_RT_MUTEX_TESTER is not set |
1835 | # CONFIG_DEBUG_SPINLOCK is not set | 1836 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig index 5f6224a1feb8..bb8d4e46f0c5 100644 --- a/arch/powerpc/configs/ppc64_defconfig +++ b/arch/powerpc/configs/ppc64_defconfig | |||
@@ -96,8 +96,9 @@ CONFIG_TIMERFD=y | |||
96 | CONFIG_EVENTFD=y | 96 | CONFIG_EVENTFD=y |
97 | CONFIG_SHMEM=y | 97 | CONFIG_SHMEM=y |
98 | CONFIG_VM_EVENT_COUNTERS=y | 98 | CONFIG_VM_EVENT_COUNTERS=y |
99 | CONFIG_SLAB=y | 99 | CONFIG_SLUB_DEBUG=y |
100 | # CONFIG_SLUB is not set | 100 | # CONFIG_SLAB is not set |
101 | CONFIG_SLUB=y | ||
101 | # CONFIG_SLOB is not set | 102 | # CONFIG_SLOB is not set |
102 | CONFIG_RT_MUTEXES=y | 103 | CONFIG_RT_MUTEXES=y |
103 | # CONFIG_TINY_SHMEM is not set | 104 | # CONFIG_TINY_SHMEM is not set |
@@ -216,6 +217,10 @@ CONFIG_AXON_RAM=m | |||
216 | # | 217 | # |
217 | # Kernel options | 218 | # Kernel options |
218 | # | 219 | # |
220 | CONFIG_TICK_ONESHOT=y | ||
221 | CONFIG_NO_HZ=y | ||
222 | CONFIG_HIGH_RES_TIMERS=y | ||
223 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
219 | # CONFIG_HZ_100 is not set | 224 | # CONFIG_HZ_100 is not set |
220 | CONFIG_HZ_250=y | 225 | CONFIG_HZ_250=y |
221 | # CONFIG_HZ_300 is not set | 226 | # CONFIG_HZ_300 is not set |
@@ -1750,7 +1755,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1750 | CONFIG_SCHED_DEBUG=y | 1755 | CONFIG_SCHED_DEBUG=y |
1751 | # CONFIG_SCHEDSTATS is not set | 1756 | # CONFIG_SCHEDSTATS is not set |
1752 | # CONFIG_TIMER_STATS is not set | 1757 | # CONFIG_TIMER_STATS is not set |
1753 | # CONFIG_DEBUG_SLAB is not set | 1758 | # CONFIG_SLUB_DEBUG_ON is not set |
1754 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1759 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1755 | # CONFIG_RT_MUTEX_TESTER is not set | 1760 | # CONFIG_RT_MUTEX_TESTER is not set |
1756 | # CONFIG_DEBUG_SPINLOCK is not set | 1761 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/pq2fads_defconfig b/arch/powerpc/configs/pq2fads_defconfig index a51fc39dea4e..9191f557b044 100644 --- a/arch/powerpc/configs/pq2fads_defconfig +++ b/arch/powerpc/configs/pq2fads_defconfig | |||
@@ -86,8 +86,9 @@ CONFIG_TIMERFD=y | |||
86 | CONFIG_EVENTFD=y | 86 | CONFIG_EVENTFD=y |
87 | CONFIG_SHMEM=y | 87 | CONFIG_SHMEM=y |
88 | CONFIG_VM_EVENT_COUNTERS=y | 88 | CONFIG_VM_EVENT_COUNTERS=y |
89 | CONFIG_SLAB=y | 89 | CONFIG_SLUB_DEBUG=y |
90 | # CONFIG_SLUB is not set | 90 | # CONFIG_SLAB is not set |
91 | CONFIG_SLUB=y | ||
91 | # CONFIG_SLOB is not set | 92 | # CONFIG_SLOB is not set |
92 | CONFIG_RT_MUTEXES=y | 93 | CONFIG_RT_MUTEXES=y |
93 | # CONFIG_TINY_SHMEM is not set | 94 | # CONFIG_TINY_SHMEM is not set |
@@ -930,7 +931,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
930 | # CONFIG_SCHED_DEBUG is not set | 931 | # CONFIG_SCHED_DEBUG is not set |
931 | # CONFIG_SCHEDSTATS is not set | 932 | # CONFIG_SCHEDSTATS is not set |
932 | # CONFIG_TIMER_STATS is not set | 933 | # CONFIG_TIMER_STATS is not set |
933 | # CONFIG_DEBUG_SLAB is not set | 934 | # CONFIG_SLUB_DEBUG_ON is not set |
934 | # CONFIG_DEBUG_RT_MUTEXES is not set | 935 | # CONFIG_DEBUG_RT_MUTEXES is not set |
935 | # CONFIG_RT_MUTEX_TESTER is not set | 936 | # CONFIG_RT_MUTEX_TESTER is not set |
936 | # CONFIG_DEBUG_SPINLOCK is not set | 937 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/prpmc2800_defconfig b/arch/powerpc/configs/prpmc2800_defconfig index cce3d3da086b..3e87faf9b5c2 100644 --- a/arch/powerpc/configs/prpmc2800_defconfig +++ b/arch/powerpc/configs/prpmc2800_defconfig | |||
@@ -89,8 +89,9 @@ CONFIG_TIMERFD=y | |||
89 | CONFIG_EVENTFD=y | 89 | CONFIG_EVENTFD=y |
90 | CONFIG_SHMEM=y | 90 | CONFIG_SHMEM=y |
91 | CONFIG_VM_EVENT_COUNTERS=y | 91 | CONFIG_VM_EVENT_COUNTERS=y |
92 | CONFIG_SLAB=y | 92 | CONFIG_SLUB_DEBUG=y |
93 | # CONFIG_SLUB is not set | 93 | # CONFIG_SLAB is not set |
94 | CONFIG_SLUB=y | ||
94 | # CONFIG_SLOB is not set | 95 | # CONFIG_SLOB is not set |
95 | CONFIG_RT_MUTEXES=y | 96 | CONFIG_RT_MUTEXES=y |
96 | # CONFIG_TINY_SHMEM is not set | 97 | # CONFIG_TINY_SHMEM is not set |
diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_defconfig index ca7a197998ee..3566c448bdc0 100644 --- a/arch/powerpc/configs/ps3_defconfig +++ b/arch/powerpc/configs/ps3_defconfig | |||
@@ -91,8 +91,9 @@ CONFIG_TIMERFD=y | |||
91 | CONFIG_EVENTFD=y | 91 | CONFIG_EVENTFD=y |
92 | CONFIG_SHMEM=y | 92 | CONFIG_SHMEM=y |
93 | CONFIG_VM_EVENT_COUNTERS=y | 93 | CONFIG_VM_EVENT_COUNTERS=y |
94 | CONFIG_SLAB=y | 94 | CONFIG_SLUB_DEBUG=y |
95 | # CONFIG_SLUB is not set | 95 | # CONFIG_SLAB is not set |
96 | CONFIG_SLUB=y | ||
96 | # CONFIG_SLOB is not set | 97 | # CONFIG_SLOB is not set |
97 | CONFIG_RT_MUTEXES=y | 98 | CONFIG_RT_MUTEXES=y |
98 | # CONFIG_TINY_SHMEM is not set | 99 | # CONFIG_TINY_SHMEM is not set |
@@ -1059,7 +1060,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1059 | CONFIG_SCHED_DEBUG=y | 1060 | CONFIG_SCHED_DEBUG=y |
1060 | # CONFIG_SCHEDSTATS is not set | 1061 | # CONFIG_SCHEDSTATS is not set |
1061 | # CONFIG_TIMER_STATS is not set | 1062 | # CONFIG_TIMER_STATS is not set |
1062 | # CONFIG_DEBUG_SLAB is not set | 1063 | # CONFIG_SLUB_DEBUG_ON is not set |
1063 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1064 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1064 | # CONFIG_RT_MUTEX_TESTER is not set | 1065 | # CONFIG_RT_MUTEX_TESTER is not set |
1065 | CONFIG_DEBUG_SPINLOCK=y | 1066 | CONFIG_DEBUG_SPINLOCK=y |
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig index 0f274e5f6926..c09eb8cfbe71 100644 --- a/arch/powerpc/configs/pseries_defconfig +++ b/arch/powerpc/configs/pseries_defconfig | |||
@@ -96,8 +96,9 @@ CONFIG_TIMERFD=y | |||
96 | CONFIG_EVENTFD=y | 96 | CONFIG_EVENTFD=y |
97 | CONFIG_SHMEM=y | 97 | CONFIG_SHMEM=y |
98 | CONFIG_VM_EVENT_COUNTERS=y | 98 | CONFIG_VM_EVENT_COUNTERS=y |
99 | CONFIG_SLAB=y | 99 | CONFIG_SLUB_DEBUG=y |
100 | # CONFIG_SLUB is not set | 100 | # CONFIG_SLAB is not set |
101 | CONFIG_SLUB=y | ||
101 | # CONFIG_SLOB is not set | 102 | # CONFIG_SLOB is not set |
102 | CONFIG_RT_MUTEXES=y | 103 | CONFIG_RT_MUTEXES=y |
103 | # CONFIG_TINY_SHMEM is not set | 104 | # CONFIG_TINY_SHMEM is not set |
@@ -176,6 +177,10 @@ CONFIG_IBMEBUS=y | |||
176 | # | 177 | # |
177 | # Kernel options | 178 | # Kernel options |
178 | # | 179 | # |
180 | CONFIG_TICK_ONESHOT=y | ||
181 | CONFIG_NO_HZ=y | ||
182 | CONFIG_HIGH_RES_TIMERS=y | ||
183 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
179 | # CONFIG_HZ_100 is not set | 184 | # CONFIG_HZ_100 is not set |
180 | CONFIG_HZ_250=y | 185 | CONFIG_HZ_250=y |
181 | # CONFIG_HZ_300 is not set | 186 | # CONFIG_HZ_300 is not set |
@@ -1504,7 +1509,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1504 | CONFIG_SCHED_DEBUG=y | 1509 | CONFIG_SCHED_DEBUG=y |
1505 | # CONFIG_SCHEDSTATS is not set | 1510 | # CONFIG_SCHEDSTATS is not set |
1506 | # CONFIG_TIMER_STATS is not set | 1511 | # CONFIG_TIMER_STATS is not set |
1507 | # CONFIG_DEBUG_SLAB is not set | 1512 | # CONFIG_SLUB_DEBUG_ON is not set |
1508 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1513 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1509 | # CONFIG_RT_MUTEX_TESTER is not set | 1514 | # CONFIG_RT_MUTEX_TESTER is not set |
1510 | # CONFIG_DEBUG_SPINLOCK is not set | 1515 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/sequoia_defconfig b/arch/powerpc/configs/sequoia_defconfig index bc7f5089a894..45a4ca0e0d7d 100644 --- a/arch/powerpc/configs/sequoia_defconfig +++ b/arch/powerpc/configs/sequoia_defconfig | |||
@@ -91,8 +91,9 @@ CONFIG_TIMERFD=y | |||
91 | CONFIG_EVENTFD=y | 91 | CONFIG_EVENTFD=y |
92 | CONFIG_SHMEM=y | 92 | CONFIG_SHMEM=y |
93 | CONFIG_VM_EVENT_COUNTERS=y | 93 | CONFIG_VM_EVENT_COUNTERS=y |
94 | CONFIG_SLAB=y | 94 | CONFIG_SLUB_DEBUG=y |
95 | # CONFIG_SLUB is not set | 95 | # CONFIG_SLAB is not set |
96 | CONFIG_SLUB=y | ||
96 | # CONFIG_SLOB is not set | 97 | # CONFIG_SLOB is not set |
97 | CONFIG_RT_MUTEXES=y | 98 | CONFIG_RT_MUTEXES=y |
98 | # CONFIG_TINY_SHMEM is not set | 99 | # CONFIG_TINY_SHMEM is not set |
@@ -781,7 +782,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
781 | CONFIG_SCHED_DEBUG=y | 782 | CONFIG_SCHED_DEBUG=y |
782 | # CONFIG_SCHEDSTATS is not set | 783 | # CONFIG_SCHEDSTATS is not set |
783 | # CONFIG_TIMER_STATS is not set | 784 | # CONFIG_TIMER_STATS is not set |
784 | # CONFIG_DEBUG_SLAB is not set | 785 | # CONFIG_SLUB_DEBUG_ON is not set |
785 | # CONFIG_DEBUG_RT_MUTEXES is not set | 786 | # CONFIG_DEBUG_RT_MUTEXES is not set |
786 | # CONFIG_RT_MUTEX_TESTER is not set | 787 | # CONFIG_RT_MUTEX_TESTER is not set |
787 | # CONFIG_DEBUG_SPINLOCK is not set | 788 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/configs/walnut_defconfig b/arch/powerpc/configs/walnut_defconfig index 766bf840c18d..7724292cc06d 100644 --- a/arch/powerpc/configs/walnut_defconfig +++ b/arch/powerpc/configs/walnut_defconfig | |||
@@ -87,8 +87,9 @@ CONFIG_TIMERFD=y | |||
87 | CONFIG_EVENTFD=y | 87 | CONFIG_EVENTFD=y |
88 | CONFIG_SHMEM=y | 88 | CONFIG_SHMEM=y |
89 | CONFIG_VM_EVENT_COUNTERS=y | 89 | CONFIG_VM_EVENT_COUNTERS=y |
90 | CONFIG_SLAB=y | 90 | CONFIG_SLUB_DEBUG=y |
91 | # CONFIG_SLUB is not set | 91 | # CONFIG_SLAB is not set |
92 | CONFIG_SLUB=y | ||
92 | # CONFIG_SLOB is not set | 93 | # CONFIG_SLOB is not set |
93 | CONFIG_RT_MUTEXES=y | 94 | CONFIG_RT_MUTEXES=y |
94 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
@@ -706,7 +707,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
706 | CONFIG_SCHED_DEBUG=y | 707 | CONFIG_SCHED_DEBUG=y |
707 | # CONFIG_SCHEDSTATS is not set | 708 | # CONFIG_SCHEDSTATS is not set |
708 | # CONFIG_TIMER_STATS is not set | 709 | # CONFIG_TIMER_STATS is not set |
709 | # CONFIG_DEBUG_SLAB is not set | 710 | # CONFIG_SLUB_DEBUG_ON is not set |
710 | # CONFIG_DEBUG_RT_MUTEXES is not set | 711 | # CONFIG_DEBUG_RT_MUTEXES is not set |
711 | # CONFIG_RT_MUTEX_TESTER is not set | 712 | # CONFIG_RT_MUTEX_TESTER is not set |
712 | # CONFIG_DEBUG_SPINLOCK is not set | 713 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/powerpc/kernel/dma_64.c b/arch/powerpc/kernel/dma_64.c index 7b0e754383cf..9001104b56b0 100644 --- a/arch/powerpc/kernel/dma_64.c +++ b/arch/powerpc/kernel/dma_64.c | |||
@@ -154,12 +154,13 @@ static void dma_direct_unmap_single(struct device *dev, dma_addr_t dma_addr, | |||
154 | { | 154 | { |
155 | } | 155 | } |
156 | 156 | ||
157 | static int dma_direct_map_sg(struct device *dev, struct scatterlist *sg, | 157 | static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, |
158 | int nents, enum dma_data_direction direction) | 158 | int nents, enum dma_data_direction direction) |
159 | { | 159 | { |
160 | struct scatterlist *sg; | ||
160 | int i; | 161 | int i; |
161 | 162 | ||
162 | for (i = 0; i < nents; i++, sg++) { | 163 | for_each_sg(sgl, sg, nents, i) { |
163 | sg->dma_address = (page_to_phys(sg->page) + sg->offset) | | 164 | sg->dma_address = (page_to_phys(sg->page) + sg->offset) | |
164 | dma_direct_offset; | 165 | dma_direct_offset; |
165 | sg->dma_length = sg->length; | 166 | sg->dma_length = sg->length; |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 0ec134034899..148a3547c9aa 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -408,6 +408,12 @@ END_FTR_SECTION_IFSET(CPU_FTR_1T_SEGMENT) | |||
408 | std r7,SLBSHADOW_STACKVSID(r9) /* Save VSID */ | 408 | std r7,SLBSHADOW_STACKVSID(r9) /* Save VSID */ |
409 | std r0,SLBSHADOW_STACKESID(r9) /* Save ESID */ | 409 | std r0,SLBSHADOW_STACKESID(r9) /* Save ESID */ |
410 | 410 | ||
411 | /* No need to check for CPU_FTR_NO_SLBIE_B here, since when | ||
412 | * we have 1TB segments, the only CPUs known to have the errata | ||
413 | * only support less than 1TB of system memory and we'll never | ||
414 | * actually hit this code path. | ||
415 | */ | ||
416 | |||
411 | slbie r6 | 417 | slbie r6 |
412 | slbie r6 /* Workaround POWER5 < DD2.1 issue */ | 418 | slbie r6 /* Workaround POWER5 < DD2.1 issue */ |
413 | slbmte r7,r0 | 419 | slbmte r7,r0 |
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c index 53bf64623bd8..289d7e935918 100644 --- a/arch/powerpc/kernel/ibmebus.c +++ b/arch/powerpc/kernel/ibmebus.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <linux/kobject.h> | 41 | #include <linux/kobject.h> |
42 | #include <linux/dma-mapping.h> | 42 | #include <linux/dma-mapping.h> |
43 | #include <linux/interrupt.h> | 43 | #include <linux/interrupt.h> |
44 | #include <linux/of_platform.h> | ||
44 | #include <asm/ibmebus.h> | 45 | #include <asm/ibmebus.h> |
45 | #include <asm/abs_addr.h> | 46 | #include <asm/abs_addr.h> |
46 | 47 | ||
@@ -50,6 +51,13 @@ static struct device ibmebus_bus_device = { /* fake "parent" device */ | |||
50 | 51 | ||
51 | struct bus_type ibmebus_bus_type; | 52 | struct bus_type ibmebus_bus_type; |
52 | 53 | ||
54 | /* These devices will automatically be added to the bus during init */ | ||
55 | static struct of_device_id builtin_matches[] = { | ||
56 | { .compatible = "IBM,lhca" }, | ||
57 | { .compatible = "IBM,lhea" }, | ||
58 | {}, | ||
59 | }; | ||
60 | |||
53 | static void *ibmebus_alloc_coherent(struct device *dev, | 61 | static void *ibmebus_alloc_coherent(struct device *dev, |
54 | size_t size, | 62 | size_t size, |
55 | dma_addr_t *dma_handle, | 63 | dma_addr_t *dma_handle, |
@@ -87,15 +95,16 @@ static void ibmebus_unmap_single(struct device *dev, | |||
87 | } | 95 | } |
88 | 96 | ||
89 | static int ibmebus_map_sg(struct device *dev, | 97 | static int ibmebus_map_sg(struct device *dev, |
90 | struct scatterlist *sg, | 98 | struct scatterlist *sgl, |
91 | int nents, enum dma_data_direction direction) | 99 | int nents, enum dma_data_direction direction) |
92 | { | 100 | { |
101 | struct scatterlist *sg; | ||
93 | int i; | 102 | int i; |
94 | 103 | ||
95 | for (i = 0; i < nents; i++) { | 104 | for_each_sg(sgl, sg, nents, i) { |
96 | sg[i].dma_address = (dma_addr_t)page_address(sg[i].page) | 105 | sg->dma_address = (dma_addr_t)page_address(sg->page) |
97 | + sg[i].offset; | 106 | + sg->offset; |
98 | sg[i].dma_length = sg[i].length; | 107 | sg->dma_length = sg->length; |
99 | } | 108 | } |
100 | 109 | ||
101 | return nents; | 110 | return nents; |
@@ -123,190 +132,87 @@ static struct dma_mapping_ops ibmebus_dma_ops = { | |||
123 | .dma_supported = ibmebus_dma_supported, | 132 | .dma_supported = ibmebus_dma_supported, |
124 | }; | 133 | }; |
125 | 134 | ||
126 | static int ibmebus_bus_probe(struct device *dev) | 135 | static int ibmebus_match_path(struct device *dev, void *data) |
127 | { | 136 | { |
128 | struct ibmebus_dev *ibmebusdev = to_ibmebus_dev(dev); | 137 | struct device_node *dn = to_of_device(dev)->node; |
129 | struct ibmebus_driver *ibmebusdrv = to_ibmebus_driver(dev->driver); | 138 | return (dn->full_name && |
130 | const struct of_device_id *id; | 139 | (strcasecmp((char *)data, dn->full_name) == 0)); |
131 | int error = -ENODEV; | ||
132 | |||
133 | if (!ibmebusdrv->probe) | ||
134 | return error; | ||
135 | |||
136 | id = of_match_device(ibmebusdrv->id_table, &ibmebusdev->ofdev); | ||
137 | if (id) { | ||
138 | error = ibmebusdrv->probe(ibmebusdev, id); | ||
139 | } | ||
140 | |||
141 | return error; | ||
142 | } | 140 | } |
143 | 141 | ||
144 | static int ibmebus_bus_remove(struct device *dev) | 142 | static int ibmebus_match_node(struct device *dev, void *data) |
145 | { | 143 | { |
146 | struct ibmebus_dev *ibmebusdev = to_ibmebus_dev(dev); | 144 | return to_of_device(dev)->node == data; |
147 | struct ibmebus_driver *ibmebusdrv = to_ibmebus_driver(dev->driver); | ||
148 | |||
149 | if (ibmebusdrv->remove) { | ||
150 | return ibmebusdrv->remove(ibmebusdev); | ||
151 | } | ||
152 | |||
153 | return 0; | ||
154 | } | 145 | } |
155 | 146 | ||
156 | static void __devinit ibmebus_dev_release(struct device *dev) | 147 | static int ibmebus_create_device(struct device_node *dn) |
157 | { | 148 | { |
158 | of_node_put(to_ibmebus_dev(dev)->ofdev.node); | 149 | struct of_device *dev; |
159 | kfree(to_ibmebus_dev(dev)); | 150 | int ret; |
160 | } | ||
161 | |||
162 | static int __devinit ibmebus_register_device_common( | ||
163 | struct ibmebus_dev *dev, const char *name) | ||
164 | { | ||
165 | int err = 0; | ||
166 | |||
167 | dev->ofdev.dev.parent = &ibmebus_bus_device; | ||
168 | dev->ofdev.dev.bus = &ibmebus_bus_type; | ||
169 | dev->ofdev.dev.release = ibmebus_dev_release; | ||
170 | 151 | ||
171 | dev->ofdev.dev.archdata.of_node = dev->ofdev.node; | 152 | dev = of_device_alloc(dn, NULL, &ibmebus_bus_device); |
172 | dev->ofdev.dev.archdata.dma_ops = &ibmebus_dma_ops; | ||
173 | dev->ofdev.dev.archdata.numa_node = of_node_to_nid(dev->ofdev.node); | ||
174 | |||
175 | /* An ibmebusdev is based on a of_device. We have to change the | ||
176 | * bus type to use our own DMA mapping operations. | ||
177 | */ | ||
178 | if ((err = of_device_register(&dev->ofdev)) != 0) { | ||
179 | printk(KERN_ERR "%s: failed to register device (%d).\n", | ||
180 | __FUNCTION__, err); | ||
181 | return -ENODEV; | ||
182 | } | ||
183 | |||
184 | return 0; | ||
185 | } | ||
186 | |||
187 | static struct ibmebus_dev* __devinit ibmebus_register_device_node( | ||
188 | struct device_node *dn) | ||
189 | { | ||
190 | struct ibmebus_dev *dev; | ||
191 | int i, len, bus_len; | ||
192 | |||
193 | dev = kzalloc(sizeof(struct ibmebus_dev), GFP_KERNEL); | ||
194 | if (!dev) | 153 | if (!dev) |
195 | return ERR_PTR(-ENOMEM); | 154 | return -ENOMEM; |
196 | |||
197 | dev->ofdev.node = of_node_get(dn); | ||
198 | |||
199 | len = strlen(dn->full_name + 1); | ||
200 | bus_len = min(len, BUS_ID_SIZE - 1); | ||
201 | memcpy(dev->ofdev.dev.bus_id, dn->full_name + 1 | ||
202 | + (len - bus_len), bus_len); | ||
203 | for (i = 0; i < bus_len; i++) | ||
204 | if (dev->ofdev.dev.bus_id[i] == '/') | ||
205 | dev->ofdev.dev.bus_id[i] = '_'; | ||
206 | |||
207 | /* Register with generic device framework. */ | ||
208 | if (ibmebus_register_device_common(dev, dn->name) != 0) { | ||
209 | kfree(dev); | ||
210 | return ERR_PTR(-ENODEV); | ||
211 | } | ||
212 | |||
213 | return dev; | ||
214 | } | ||
215 | |||
216 | static void ibmebus_probe_of_nodes(char* name) | ||
217 | { | ||
218 | struct device_node *dn = NULL; | ||
219 | |||
220 | while ((dn = of_find_node_by_name(dn, name))) { | ||
221 | if (IS_ERR(ibmebus_register_device_node(dn))) { | ||
222 | of_node_put(dn); | ||
223 | return; | ||
224 | } | ||
225 | } | ||
226 | |||
227 | of_node_put(dn); | ||
228 | 155 | ||
229 | return; | 156 | dev->dev.bus = &ibmebus_bus_type; |
230 | } | 157 | dev->dev.archdata.dma_ops = &ibmebus_dma_ops; |
231 | 158 | ||
232 | static void ibmebus_add_devices_by_id(struct of_device_id *idt) | 159 | ret = of_device_register(dev); |
233 | { | 160 | if (ret) { |
234 | while (strlen(idt->name) > 0) { | 161 | of_device_free(dev); |
235 | ibmebus_probe_of_nodes(idt->name); | 162 | return ret; |
236 | idt++; | ||
237 | } | 163 | } |
238 | 164 | ||
239 | return; | ||
240 | } | ||
241 | |||
242 | static int ibmebus_match_name(struct device *dev, void *data) | ||
243 | { | ||
244 | const struct ibmebus_dev *ebus_dev = to_ibmebus_dev(dev); | ||
245 | const char *name; | ||
246 | |||
247 | name = of_get_property(ebus_dev->ofdev.node, "name", NULL); | ||
248 | |||
249 | if (name && (strcmp(data, name) == 0)) | ||
250 | return 1; | ||
251 | |||
252 | return 0; | 165 | return 0; |
253 | } | 166 | } |
254 | 167 | ||
255 | static int ibmebus_unregister_device(struct device *dev) | 168 | static int ibmebus_create_devices(const struct of_device_id *matches) |
256 | { | 169 | { |
257 | of_device_unregister(to_of_device(dev)); | 170 | struct device_node *root, *child; |
171 | int ret = 0; | ||
258 | 172 | ||
259 | return 0; | 173 | root = of_find_node_by_path("/"); |
260 | } | ||
261 | 174 | ||
262 | static void ibmebus_remove_devices_by_id(struct of_device_id *idt) | 175 | for (child = NULL; (child = of_get_next_child(root, child)); ) { |
263 | { | 176 | if (!of_match_node(matches, child)) |
264 | struct device *dev; | 177 | continue; |
265 | 178 | ||
266 | while (strlen(idt->name) > 0) { | 179 | if (bus_find_device(&ibmebus_bus_type, NULL, child, |
267 | while ((dev = bus_find_device(&ibmebus_bus_type, NULL, | 180 | ibmebus_match_node)) |
268 | (void*)idt->name, | 181 | continue; |
269 | ibmebus_match_name))) { | 182 | |
270 | ibmebus_unregister_device(dev); | 183 | ret = ibmebus_create_device(child); |
184 | if (ret) { | ||
185 | printk(KERN_ERR "%s: failed to create device (%i)", | ||
186 | __FUNCTION__, ret); | ||
187 | of_node_put(child); | ||
188 | break; | ||
271 | } | 189 | } |
272 | idt++; | ||
273 | } | 190 | } |
274 | 191 | ||
275 | return; | 192 | of_node_put(root); |
193 | return ret; | ||
276 | } | 194 | } |
277 | 195 | ||
278 | int ibmebus_register_driver(struct ibmebus_driver *drv) | 196 | int ibmebus_register_driver(struct of_platform_driver *drv) |
279 | { | 197 | { |
280 | int err = 0; | 198 | /* If the driver uses devices that ibmebus doesn't know, add them */ |
199 | ibmebus_create_devices(drv->match_table); | ||
281 | 200 | ||
282 | drv->driver.name = drv->name; | 201 | drv->driver.name = drv->name; |
283 | drv->driver.bus = &ibmebus_bus_type; | 202 | drv->driver.bus = &ibmebus_bus_type; |
284 | drv->driver.probe = ibmebus_bus_probe; | ||
285 | drv->driver.remove = ibmebus_bus_remove; | ||
286 | 203 | ||
287 | if ((err = driver_register(&drv->driver) != 0)) | 204 | return driver_register(&drv->driver); |
288 | return err; | ||
289 | |||
290 | /* remove all supported devices first, in case someone | ||
291 | * probed them manually before registering the driver */ | ||
292 | ibmebus_remove_devices_by_id(drv->id_table); | ||
293 | ibmebus_add_devices_by_id(drv->id_table); | ||
294 | |||
295 | return 0; | ||
296 | } | 205 | } |
297 | EXPORT_SYMBOL(ibmebus_register_driver); | 206 | EXPORT_SYMBOL(ibmebus_register_driver); |
298 | 207 | ||
299 | void ibmebus_unregister_driver(struct ibmebus_driver *drv) | 208 | void ibmebus_unregister_driver(struct of_platform_driver *drv) |
300 | { | 209 | { |
301 | driver_unregister(&drv->driver); | 210 | driver_unregister(&drv->driver); |
302 | ibmebus_remove_devices_by_id(drv->id_table); | ||
303 | } | 211 | } |
304 | EXPORT_SYMBOL(ibmebus_unregister_driver); | 212 | EXPORT_SYMBOL(ibmebus_unregister_driver); |
305 | 213 | ||
306 | int ibmebus_request_irq(struct ibmebus_dev *dev, | 214 | int ibmebus_request_irq(u32 ist, irq_handler_t handler, |
307 | u32 ist, | 215 | unsigned long irq_flags, const char *devname, |
308 | irq_handler_t handler, | ||
309 | unsigned long irq_flags, const char * devname, | ||
310 | void *dev_id) | 216 | void *dev_id) |
311 | { | 217 | { |
312 | unsigned int irq = irq_create_mapping(NULL, ist); | 218 | unsigned int irq = irq_create_mapping(NULL, ist); |
@@ -314,12 +220,11 @@ int ibmebus_request_irq(struct ibmebus_dev *dev, | |||
314 | if (irq == NO_IRQ) | 220 | if (irq == NO_IRQ) |
315 | return -EINVAL; | 221 | return -EINVAL; |
316 | 222 | ||
317 | return request_irq(irq, handler, | 223 | return request_irq(irq, handler, irq_flags, devname, dev_id); |
318 | irq_flags, devname, dev_id); | ||
319 | } | 224 | } |
320 | EXPORT_SYMBOL(ibmebus_request_irq); | 225 | EXPORT_SYMBOL(ibmebus_request_irq); |
321 | 226 | ||
322 | void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id) | 227 | void ibmebus_free_irq(u32 ist, void *dev_id) |
323 | { | 228 | { |
324 | unsigned int irq = irq_find_mapping(NULL, ist); | 229 | unsigned int irq = irq_find_mapping(NULL, ist); |
325 | 230 | ||
@@ -327,29 +232,10 @@ void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id) | |||
327 | } | 232 | } |
328 | EXPORT_SYMBOL(ibmebus_free_irq); | 233 | EXPORT_SYMBOL(ibmebus_free_irq); |
329 | 234 | ||
330 | static int ibmebus_bus_match(struct device *dev, struct device_driver *drv) | ||
331 | { | ||
332 | const struct ibmebus_dev *ebus_dev = to_ibmebus_dev(dev); | ||
333 | struct ibmebus_driver *ebus_drv = to_ibmebus_driver(drv); | ||
334 | const struct of_device_id *ids = ebus_drv->id_table; | ||
335 | const struct of_device_id *found_id; | ||
336 | |||
337 | if (!ids) | ||
338 | return 0; | ||
339 | |||
340 | found_id = of_match_device(ids, &ebus_dev->ofdev); | ||
341 | if (found_id) | ||
342 | return 1; | ||
343 | |||
344 | return 0; | ||
345 | } | ||
346 | |||
347 | static ssize_t name_show(struct device *dev, | 235 | static ssize_t name_show(struct device *dev, |
348 | struct device_attribute *attr, char *buf) | 236 | struct device_attribute *attr, char *buf) |
349 | { | 237 | { |
350 | struct ibmebus_dev *ebus_dev = to_ibmebus_dev(dev); | 238 | return sprintf(buf, "%s\n", to_of_device(dev)->node->name); |
351 | const char *name = of_get_property(ebus_dev->ofdev.node, "name", NULL); | ||
352 | return sprintf(buf, "%s\n", name); | ||
353 | } | 239 | } |
354 | 240 | ||
355 | static struct device_attribute ibmebus_dev_attrs[] = { | 241 | static struct device_attribute ibmebus_dev_attrs[] = { |
@@ -357,18 +243,6 @@ static struct device_attribute ibmebus_dev_attrs[] = { | |||
357 | __ATTR_NULL | 243 | __ATTR_NULL |
358 | }; | 244 | }; |
359 | 245 | ||
360 | static int ibmebus_match_path(struct device *dev, void *data) | ||
361 | { | ||
362 | int rc; | ||
363 | struct device_node *dn = | ||
364 | of_node_get(to_ibmebus_dev(dev)->ofdev.node); | ||
365 | |||
366 | rc = (dn->full_name && (strcasecmp((char*)data, dn->full_name) == 0)); | ||
367 | |||
368 | of_node_put(dn); | ||
369 | return rc; | ||
370 | } | ||
371 | |||
372 | static char *ibmebus_chomp(const char *in, size_t count) | 246 | static char *ibmebus_chomp(const char *in, size_t count) |
373 | { | 247 | { |
374 | char *out = kmalloc(count + 1, GFP_KERNEL); | 248 | char *out = kmalloc(count + 1, GFP_KERNEL); |
@@ -388,9 +262,8 @@ static ssize_t ibmebus_store_probe(struct bus_type *bus, | |||
388 | const char *buf, size_t count) | 262 | const char *buf, size_t count) |
389 | { | 263 | { |
390 | struct device_node *dn = NULL; | 264 | struct device_node *dn = NULL; |
391 | struct ibmebus_dev *dev; | ||
392 | char *path; | 265 | char *path; |
393 | ssize_t rc; | 266 | ssize_t rc = 0; |
394 | 267 | ||
395 | path = ibmebus_chomp(buf, count); | 268 | path = ibmebus_chomp(buf, count); |
396 | if (!path) | 269 | if (!path) |
@@ -405,9 +278,8 @@ static ssize_t ibmebus_store_probe(struct bus_type *bus, | |||
405 | } | 278 | } |
406 | 279 | ||
407 | if ((dn = of_find_node_by_path(path))) { | 280 | if ((dn = of_find_node_by_path(path))) { |
408 | dev = ibmebus_register_device_node(dn); | 281 | rc = ibmebus_create_device(dn); |
409 | of_node_put(dn); | 282 | of_node_put(dn); |
410 | rc = IS_ERR(dev) ? PTR_ERR(dev) : count; | ||
411 | } else { | 283 | } else { |
412 | printk(KERN_WARNING "%s: no such device node: %s\n", | 284 | printk(KERN_WARNING "%s: no such device node: %s\n", |
413 | __FUNCTION__, path); | 285 | __FUNCTION__, path); |
@@ -416,7 +288,9 @@ static ssize_t ibmebus_store_probe(struct bus_type *bus, | |||
416 | 288 | ||
417 | out: | 289 | out: |
418 | kfree(path); | 290 | kfree(path); |
419 | return rc; | 291 | if (rc) |
292 | return rc; | ||
293 | return count; | ||
420 | } | 294 | } |
421 | 295 | ||
422 | static ssize_t ibmebus_store_remove(struct bus_type *bus, | 296 | static ssize_t ibmebus_store_remove(struct bus_type *bus, |
@@ -431,7 +305,7 @@ static ssize_t ibmebus_store_remove(struct bus_type *bus, | |||
431 | 305 | ||
432 | if ((dev = bus_find_device(&ibmebus_bus_type, NULL, path, | 306 | if ((dev = bus_find_device(&ibmebus_bus_type, NULL, path, |
433 | ibmebus_match_path))) { | 307 | ibmebus_match_path))) { |
434 | ibmebus_unregister_device(dev); | 308 | of_device_unregister(to_of_device(dev)); |
435 | 309 | ||
436 | kfree(path); | 310 | kfree(path); |
437 | return count; | 311 | return count; |
@@ -451,8 +325,7 @@ static struct bus_attribute ibmebus_bus_attrs[] = { | |||
451 | }; | 325 | }; |
452 | 326 | ||
453 | struct bus_type ibmebus_bus_type = { | 327 | struct bus_type ibmebus_bus_type = { |
454 | .name = "ibmebus", | 328 | .uevent = of_device_uevent, |
455 | .match = ibmebus_bus_match, | ||
456 | .dev_attrs = ibmebus_dev_attrs, | 329 | .dev_attrs = ibmebus_dev_attrs, |
457 | .bus_attrs = ibmebus_bus_attrs | 330 | .bus_attrs = ibmebus_bus_attrs |
458 | }; | 331 | }; |
@@ -464,9 +337,9 @@ static int __init ibmebus_bus_init(void) | |||
464 | 337 | ||
465 | printk(KERN_INFO "IBM eBus Device Driver\n"); | 338 | printk(KERN_INFO "IBM eBus Device Driver\n"); |
466 | 339 | ||
467 | err = bus_register(&ibmebus_bus_type); | 340 | err = of_bus_type_init(&ibmebus_bus_type, "ibmebus"); |
468 | if (err) { | 341 | if (err) { |
469 | printk(KERN_ERR ":%s: failed to register IBM eBus.\n", | 342 | printk(KERN_ERR "%s: failed to register IBM eBus.\n", |
470 | __FUNCTION__); | 343 | __FUNCTION__); |
471 | return err; | 344 | return err; |
472 | } | 345 | } |
@@ -480,6 +353,13 @@ static int __init ibmebus_bus_init(void) | |||
480 | return err; | 353 | return err; |
481 | } | 354 | } |
482 | 355 | ||
356 | err = ibmebus_create_devices(builtin_matches); | ||
357 | if (err) { | ||
358 | device_unregister(&ibmebus_bus_device); | ||
359 | bus_unregister(&ibmebus_bus_type); | ||
360 | return err; | ||
361 | } | ||
362 | |||
483 | return 0; | 363 | return 0; |
484 | } | 364 | } |
485 | __initcall(ibmebus_bus_init); | 365 | postcore_initcall(ibmebus_bus_init); |
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c index e4ec6eee81a8..306a6f75b6c5 100644 --- a/arch/powerpc/kernel/iommu.c +++ b/arch/powerpc/kernel/iommu.c | |||
@@ -277,7 +277,7 @@ int iommu_map_sg(struct iommu_table *tbl, struct scatterlist *sglist, | |||
277 | dma_addr_t dma_next = 0, dma_addr; | 277 | dma_addr_t dma_next = 0, dma_addr; |
278 | unsigned long flags; | 278 | unsigned long flags; |
279 | struct scatterlist *s, *outs, *segstart; | 279 | struct scatterlist *s, *outs, *segstart; |
280 | int outcount, incount; | 280 | int outcount, incount, i; |
281 | unsigned long handle; | 281 | unsigned long handle; |
282 | 282 | ||
283 | BUG_ON(direction == DMA_NONE); | 283 | BUG_ON(direction == DMA_NONE); |
@@ -297,7 +297,7 @@ int iommu_map_sg(struct iommu_table *tbl, struct scatterlist *sglist, | |||
297 | 297 | ||
298 | spin_lock_irqsave(&(tbl->it_lock), flags); | 298 | spin_lock_irqsave(&(tbl->it_lock), flags); |
299 | 299 | ||
300 | for (s = outs; nelems; nelems--, s++) { | 300 | for_each_sg(sglist, s, nelems, i) { |
301 | unsigned long vaddr, npages, entry, slen; | 301 | unsigned long vaddr, npages, entry, slen; |
302 | 302 | ||
303 | slen = s->length; | 303 | slen = s->length; |
@@ -341,7 +341,8 @@ int iommu_map_sg(struct iommu_table *tbl, struct scatterlist *sglist, | |||
341 | if (novmerge || (dma_addr != dma_next)) { | 341 | if (novmerge || (dma_addr != dma_next)) { |
342 | /* Can't merge: create a new segment */ | 342 | /* Can't merge: create a new segment */ |
343 | segstart = s; | 343 | segstart = s; |
344 | outcount++; outs++; | 344 | outcount++; |
345 | outs = sg_next(outs); | ||
345 | DBG(" can't merge, new segment.\n"); | 346 | DBG(" can't merge, new segment.\n"); |
346 | } else { | 347 | } else { |
347 | outs->dma_length += s->length; | 348 | outs->dma_length += s->length; |
@@ -374,7 +375,7 @@ int iommu_map_sg(struct iommu_table *tbl, struct scatterlist *sglist, | |||
374 | * next entry of the sglist if we didn't fill the list completely | 375 | * next entry of the sglist if we didn't fill the list completely |
375 | */ | 376 | */ |
376 | if (outcount < incount) { | 377 | if (outcount < incount) { |
377 | outs++; | 378 | outs = sg_next(outs); |
378 | outs->dma_address = DMA_ERROR_CODE; | 379 | outs->dma_address = DMA_ERROR_CODE; |
379 | outs->dma_length = 0; | 380 | outs->dma_length = 0; |
380 | } | 381 | } |
@@ -385,7 +386,7 @@ int iommu_map_sg(struct iommu_table *tbl, struct scatterlist *sglist, | |||
385 | return outcount; | 386 | return outcount; |
386 | 387 | ||
387 | failure: | 388 | failure: |
388 | for (s = &sglist[0]; s <= outs; s++) { | 389 | for_each_sg(sglist, s, nelems, i) { |
389 | if (s->dma_length != 0) { | 390 | if (s->dma_length != 0) { |
390 | unsigned long vaddr, npages; | 391 | unsigned long vaddr, npages; |
391 | 392 | ||
@@ -395,6 +396,8 @@ int iommu_map_sg(struct iommu_table *tbl, struct scatterlist *sglist, | |||
395 | s->dma_address = DMA_ERROR_CODE; | 396 | s->dma_address = DMA_ERROR_CODE; |
396 | s->dma_length = 0; | 397 | s->dma_length = 0; |
397 | } | 398 | } |
399 | if (s == outs) | ||
400 | break; | ||
398 | } | 401 | } |
399 | spin_unlock_irqrestore(&(tbl->it_lock), flags); | 402 | spin_unlock_irqrestore(&(tbl->it_lock), flags); |
400 | return 0; | 403 | return 0; |
@@ -404,6 +407,7 @@ int iommu_map_sg(struct iommu_table *tbl, struct scatterlist *sglist, | |||
404 | void iommu_unmap_sg(struct iommu_table *tbl, struct scatterlist *sglist, | 407 | void iommu_unmap_sg(struct iommu_table *tbl, struct scatterlist *sglist, |
405 | int nelems, enum dma_data_direction direction) | 408 | int nelems, enum dma_data_direction direction) |
406 | { | 409 | { |
410 | struct scatterlist *sg; | ||
407 | unsigned long flags; | 411 | unsigned long flags; |
408 | 412 | ||
409 | BUG_ON(direction == DMA_NONE); | 413 | BUG_ON(direction == DMA_NONE); |
@@ -413,15 +417,16 @@ void iommu_unmap_sg(struct iommu_table *tbl, struct scatterlist *sglist, | |||
413 | 417 | ||
414 | spin_lock_irqsave(&(tbl->it_lock), flags); | 418 | spin_lock_irqsave(&(tbl->it_lock), flags); |
415 | 419 | ||
420 | sg = sglist; | ||
416 | while (nelems--) { | 421 | while (nelems--) { |
417 | unsigned int npages; | 422 | unsigned int npages; |
418 | dma_addr_t dma_handle = sglist->dma_address; | 423 | dma_addr_t dma_handle = sg->dma_address; |
419 | 424 | ||
420 | if (sglist->dma_length == 0) | 425 | if (sg->dma_length == 0) |
421 | break; | 426 | break; |
422 | npages = iommu_num_pages(dma_handle,sglist->dma_length); | 427 | npages = iommu_num_pages(dma_handle, sg->dma_length); |
423 | __iommu_free(tbl, dma_handle, npages); | 428 | __iommu_free(tbl, dma_handle, npages); |
424 | sglist++; | 429 | sg = sg_next(sg); |
425 | } | 430 | } |
426 | 431 | ||
427 | /* Flush/invalidate TLBs if necessary. As for iommu_free(), we | 432 | /* Flush/invalidate TLBs if necessary. As for iommu_free(), we |
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index 440f5a87271f..5338e4855712 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c | |||
@@ -38,6 +38,8 @@ | |||
38 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; | 38 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; |
39 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); | 39 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); |
40 | 40 | ||
41 | struct kretprobe_blackpoint kretprobe_blacklist[] = {{NULL, NULL}}; | ||
42 | |||
41 | int __kprobes arch_prepare_kprobe(struct kprobe *p) | 43 | int __kprobes arch_prepare_kprobe(struct kprobe *p) |
42 | { | 44 | { |
43 | int ret = 0; | 45 | int ret = 0; |
diff --git a/arch/powerpc/kernel/of_device.c b/arch/powerpc/kernel/of_device.c index 8f3db32fac8b..3388ad619996 100644 --- a/arch/powerpc/kernel/of_device.c +++ b/arch/powerpc/kernel/of_device.c | |||
@@ -7,8 +7,88 @@ | |||
7 | #include <linux/slab.h> | 7 | #include <linux/slab.h> |
8 | 8 | ||
9 | #include <asm/errno.h> | 9 | #include <asm/errno.h> |
10 | #include <asm/dcr.h> | ||
10 | #include <asm/of_device.h> | 11 | #include <asm/of_device.h> |
11 | 12 | ||
13 | static void of_device_make_bus_id(struct of_device *dev) | ||
14 | { | ||
15 | static atomic_t bus_no_reg_magic; | ||
16 | struct device_node *node = dev->node; | ||
17 | char *name = dev->dev.bus_id; | ||
18 | const u32 *reg; | ||
19 | u64 addr; | ||
20 | int magic; | ||
21 | |||
22 | /* | ||
23 | * If it's a DCR based device, use 'd' for native DCRs | ||
24 | * and 'D' for MMIO DCRs. | ||
25 | */ | ||
26 | #ifdef CONFIG_PPC_DCR | ||
27 | reg = of_get_property(node, "dcr-reg", NULL); | ||
28 | if (reg) { | ||
29 | #ifdef CONFIG_PPC_DCR_NATIVE | ||
30 | snprintf(name, BUS_ID_SIZE, "d%x.%s", | ||
31 | *reg, node->name); | ||
32 | #else /* CONFIG_PPC_DCR_NATIVE */ | ||
33 | addr = of_translate_dcr_address(node, *reg, NULL); | ||
34 | if (addr != OF_BAD_ADDR) { | ||
35 | snprintf(name, BUS_ID_SIZE, | ||
36 | "D%llx.%s", (unsigned long long)addr, | ||
37 | node->name); | ||
38 | return; | ||
39 | } | ||
40 | #endif /* !CONFIG_PPC_DCR_NATIVE */ | ||
41 | } | ||
42 | #endif /* CONFIG_PPC_DCR */ | ||
43 | |||
44 | /* | ||
45 | * For MMIO, get the physical address | ||
46 | */ | ||
47 | reg = of_get_property(node, "reg", NULL); | ||
48 | if (reg) { | ||
49 | addr = of_translate_address(node, reg); | ||
50 | if (addr != OF_BAD_ADDR) { | ||
51 | snprintf(name, BUS_ID_SIZE, | ||
52 | "%llx.%s", (unsigned long long)addr, | ||
53 | node->name); | ||
54 | return; | ||
55 | } | ||
56 | } | ||
57 | |||
58 | /* | ||
59 | * No BusID, use the node name and add a globally incremented | ||
60 | * counter (and pray...) | ||
61 | */ | ||
62 | magic = atomic_add_return(1, &bus_no_reg_magic); | ||
63 | snprintf(name, BUS_ID_SIZE, "%s.%d", node->name, magic - 1); | ||
64 | } | ||
65 | |||
66 | struct of_device *of_device_alloc(struct device_node *np, | ||
67 | const char *bus_id, | ||
68 | struct device *parent) | ||
69 | { | ||
70 | struct of_device *dev; | ||
71 | |||
72 | dev = kzalloc(sizeof(*dev), GFP_KERNEL); | ||
73 | if (!dev) | ||
74 | return NULL; | ||
75 | |||
76 | dev->node = of_node_get(np); | ||
77 | dev->dev.dma_mask = &dev->dma_mask; | ||
78 | dev->dev.parent = parent; | ||
79 | dev->dev.release = of_release_dev; | ||
80 | dev->dev.archdata.of_node = np; | ||
81 | dev->dev.archdata.numa_node = of_node_to_nid(np); | ||
82 | |||
83 | if (bus_id) | ||
84 | strlcpy(dev->dev.bus_id, bus_id, BUS_ID_SIZE); | ||
85 | else | ||
86 | of_device_make_bus_id(dev); | ||
87 | |||
88 | return dev; | ||
89 | } | ||
90 | EXPORT_SYMBOL(of_device_alloc); | ||
91 | |||
12 | ssize_t of_device_get_modalias(struct of_device *ofdev, | 92 | ssize_t of_device_get_modalias(struct of_device *ofdev, |
13 | char *str, ssize_t len) | 93 | char *str, ssize_t len) |
14 | { | 94 | { |
diff --git a/arch/powerpc/kernel/of_platform.c b/arch/powerpc/kernel/of_platform.c index eca8ccc3fa12..aeaa20268ce2 100644 --- a/arch/powerpc/kernel/of_platform.c +++ b/arch/powerpc/kernel/of_platform.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/of_platform.h> | 23 | #include <linux/of_platform.h> |
24 | 24 | ||
25 | #include <asm/errno.h> | 25 | #include <asm/errno.h> |
26 | #include <asm/dcr.h> | ||
27 | #include <asm/topology.h> | 26 | #include <asm/topology.h> |
28 | #include <asm/pci-bridge.h> | 27 | #include <asm/pci-bridge.h> |
29 | #include <asm/ppc-pci.h> | 28 | #include <asm/ppc-pci.h> |
@@ -53,8 +52,6 @@ static struct of_device_id of_default_bus_ids[] = { | |||
53 | {}, | 52 | {}, |
54 | }; | 53 | }; |
55 | 54 | ||
56 | static atomic_t bus_no_reg_magic; | ||
57 | |||
58 | struct bus_type of_platform_bus_type = { | 55 | struct bus_type of_platform_bus_type = { |
59 | .uevent = of_device_uevent, | 56 | .uevent = of_device_uevent, |
60 | }; | 57 | }; |
@@ -87,89 +84,26 @@ void of_unregister_platform_driver(struct of_platform_driver *drv) | |||
87 | } | 84 | } |
88 | EXPORT_SYMBOL(of_unregister_platform_driver); | 85 | EXPORT_SYMBOL(of_unregister_platform_driver); |
89 | 86 | ||
90 | static void of_platform_make_bus_id(struct of_device *dev) | ||
91 | { | ||
92 | struct device_node *node = dev->node; | ||
93 | char *name = dev->dev.bus_id; | ||
94 | const u32 *reg; | ||
95 | u64 addr; | ||
96 | int magic; | ||
97 | |||
98 | /* | ||
99 | * If it's a DCR based device, use 'd' for native DCRs | ||
100 | * and 'D' for MMIO DCRs. | ||
101 | */ | ||
102 | #ifdef CONFIG_PPC_DCR | ||
103 | reg = of_get_property(node, "dcr-reg", NULL); | ||
104 | if (reg) { | ||
105 | #ifdef CONFIG_PPC_DCR_NATIVE | ||
106 | snprintf(name, BUS_ID_SIZE, "d%x.%s", | ||
107 | *reg, node->name); | ||
108 | #else /* CONFIG_PPC_DCR_NATIVE */ | ||
109 | addr = of_translate_dcr_address(node, *reg, NULL); | ||
110 | if (addr != OF_BAD_ADDR) { | ||
111 | snprintf(name, BUS_ID_SIZE, | ||
112 | "D%llx.%s", (unsigned long long)addr, | ||
113 | node->name); | ||
114 | return; | ||
115 | } | ||
116 | #endif /* !CONFIG_PPC_DCR_NATIVE */ | ||
117 | } | ||
118 | #endif /* CONFIG_PPC_DCR */ | ||
119 | |||
120 | /* | ||
121 | * For MMIO, get the physical address | ||
122 | */ | ||
123 | reg = of_get_property(node, "reg", NULL); | ||
124 | if (reg) { | ||
125 | addr = of_translate_address(node, reg); | ||
126 | if (addr != OF_BAD_ADDR) { | ||
127 | snprintf(name, BUS_ID_SIZE, | ||
128 | "%llx.%s", (unsigned long long)addr, | ||
129 | node->name); | ||
130 | return; | ||
131 | } | ||
132 | } | ||
133 | |||
134 | /* | ||
135 | * No BusID, use the node name and add a globally incremented | ||
136 | * counter (and pray...) | ||
137 | */ | ||
138 | magic = atomic_add_return(1, &bus_no_reg_magic); | ||
139 | snprintf(name, BUS_ID_SIZE, "%s.%d", node->name, magic - 1); | ||
140 | } | ||
141 | |||
142 | struct of_device* of_platform_device_create(struct device_node *np, | 87 | struct of_device* of_platform_device_create(struct device_node *np, |
143 | const char *bus_id, | 88 | const char *bus_id, |
144 | struct device *parent) | 89 | struct device *parent) |
145 | { | 90 | { |
146 | struct of_device *dev; | 91 | struct of_device *dev; |
147 | 92 | ||
148 | dev = kzalloc(sizeof(*dev), GFP_KERNEL); | 93 | dev = of_device_alloc(np, bus_id, parent); |
149 | if (!dev) | 94 | if (!dev) |
150 | return NULL; | 95 | return NULL; |
151 | 96 | ||
152 | dev->node = of_node_get(np); | ||
153 | dev->dma_mask = 0xffffffffUL; | 97 | dev->dma_mask = 0xffffffffUL; |
154 | dev->dev.dma_mask = &dev->dma_mask; | ||
155 | dev->dev.parent = parent; | ||
156 | dev->dev.bus = &of_platform_bus_type; | 98 | dev->dev.bus = &of_platform_bus_type; |
157 | dev->dev.release = of_release_dev; | ||
158 | dev->dev.archdata.of_node = np; | ||
159 | dev->dev.archdata.numa_node = of_node_to_nid(np); | ||
160 | 99 | ||
161 | /* We do not fill the DMA ops for platform devices by default. | 100 | /* We do not fill the DMA ops for platform devices by default. |
162 | * This is currently the responsibility of the platform code | 101 | * This is currently the responsibility of the platform code |
163 | * to do such, possibly using a device notifier | 102 | * to do such, possibly using a device notifier |
164 | */ | 103 | */ |
165 | 104 | ||
166 | if (bus_id) | ||
167 | strlcpy(dev->dev.bus_id, bus_id, BUS_ID_SIZE); | ||
168 | else | ||
169 | of_platform_make_bus_id(dev); | ||
170 | |||
171 | if (of_device_register(dev) != 0) { | 105 | if (of_device_register(dev) != 0) { |
172 | kfree(dev); | 106 | of_device_free(dev); |
173 | return NULL; | 107 | return NULL; |
174 | } | 108 | } |
175 | 109 | ||
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c index cf7732cdd6c7..3e17d154d0d4 100644 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c | |||
@@ -505,10 +505,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
505 | ret = ptrace_set_debugreg(child, addr, data); | 505 | ret = ptrace_set_debugreg(child, addr, data); |
506 | break; | 506 | break; |
507 | 507 | ||
508 | case PTRACE_DETACH: | ||
509 | ret = ptrace_detach(child, data); | ||
510 | break; | ||
511 | |||
512 | #ifdef CONFIG_PPC64 | 508 | #ifdef CONFIG_PPC64 |
513 | case PTRACE_GETREGS64: | 509 | case PTRACE_GETREGS64: |
514 | #endif | 510 | #endif |
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index 36c90ba2d312..2de00f870edc 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c | |||
@@ -413,16 +413,28 @@ void __init smp_setup_cpu_maps(void) | |||
413 | of_node_put(dn); | 413 | of_node_put(dn); |
414 | } | 414 | } |
415 | 415 | ||
416 | vdso_data->processorCount = num_present_cpus(); | ||
417 | #endif /* CONFIG_PPC64 */ | ||
418 | } | ||
419 | |||
420 | /* | ||
421 | * Being that cpu_sibling_map is now a per_cpu array, then it cannot | ||
422 | * be initialized until the per_cpu areas have been created. This | ||
423 | * function is now called from setup_per_cpu_areas(). | ||
424 | */ | ||
425 | void __init smp_setup_cpu_sibling_map(void) | ||
426 | { | ||
427 | #if defined(CONFIG_PPC64) | ||
428 | int cpu; | ||
429 | |||
416 | /* | 430 | /* |
417 | * Do the sibling map; assume only two threads per processor. | 431 | * Do the sibling map; assume only two threads per processor. |
418 | */ | 432 | */ |
419 | for_each_possible_cpu(cpu) { | 433 | for_each_possible_cpu(cpu) { |
420 | cpu_set(cpu, cpu_sibling_map[cpu]); | 434 | cpu_set(cpu, per_cpu(cpu_sibling_map, cpu)); |
421 | if (cpu_has_feature(CPU_FTR_SMT)) | 435 | if (cpu_has_feature(CPU_FTR_SMT)) |
422 | cpu_set(cpu ^ 0x1, cpu_sibling_map[cpu]); | 436 | cpu_set(cpu ^ 0x1, per_cpu(cpu_sibling_map, cpu)); |
423 | } | 437 | } |
424 | |||
425 | vdso_data->processorCount = num_present_cpus(); | ||
426 | #endif /* CONFIG_PPC64 */ | 438 | #endif /* CONFIG_PPC64 */ |
427 | } | 439 | } |
428 | #endif /* CONFIG_SMP */ | 440 | #endif /* CONFIG_SMP */ |
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 008ab6823b02..ede77dbbd4df 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c | |||
@@ -426,11 +426,14 @@ void __init setup_system(void) | |||
426 | printk("-----------------------------------------------------\n"); | 426 | printk("-----------------------------------------------------\n"); |
427 | printk("ppc64_pft_size = 0x%lx\n", ppc64_pft_size); | 427 | printk("ppc64_pft_size = 0x%lx\n", ppc64_pft_size); |
428 | printk("physicalMemorySize = 0x%lx\n", lmb_phys_mem_size()); | 428 | printk("physicalMemorySize = 0x%lx\n", lmb_phys_mem_size()); |
429 | printk("ppc64_caches.dcache_line_size = 0x%x\n", | 429 | if (ppc64_caches.dline_size != 0x80) |
430 | ppc64_caches.dline_size); | 430 | printk("ppc64_caches.dcache_line_size = 0x%x\n", |
431 | printk("ppc64_caches.icache_line_size = 0x%x\n", | 431 | ppc64_caches.dline_size); |
432 | ppc64_caches.iline_size); | 432 | if (ppc64_caches.iline_size != 0x80) |
433 | printk("htab_address = 0x%p\n", htab_address); | 433 | printk("ppc64_caches.icache_line_size = 0x%x\n", |
434 | ppc64_caches.iline_size); | ||
435 | if (htab_address) | ||
436 | printk("htab_address = 0x%p\n", htab_address); | ||
434 | printk("htab_hash_mask = 0x%lx\n", htab_hash_mask); | 437 | printk("htab_hash_mask = 0x%lx\n", htab_hash_mask); |
435 | #if PHYSICAL_START > 0 | 438 | #if PHYSICAL_START > 0 |
436 | printk("physical_start = 0x%x\n", PHYSICAL_START); | 439 | printk("physical_start = 0x%x\n", PHYSICAL_START); |
@@ -597,6 +600,9 @@ void __init setup_per_cpu_areas(void) | |||
597 | paca[i].data_offset = ptr - __per_cpu_start; | 600 | paca[i].data_offset = ptr - __per_cpu_start; |
598 | memcpy(ptr, __per_cpu_start, __per_cpu_end - __per_cpu_start); | 601 | memcpy(ptr, __per_cpu_start, __per_cpu_end - __per_cpu_start); |
599 | } | 602 | } |
603 | |||
604 | /* Now that per_cpu is setup, initialize cpu_sibling_map */ | ||
605 | smp_setup_cpu_sibling_map(); | ||
600 | } | 606 | } |
601 | #endif | 607 | #endif |
602 | 608 | ||
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index d30f08fa0297..338950aeb6f6 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
@@ -61,11 +61,11 @@ struct thread_info *secondary_ti; | |||
61 | 61 | ||
62 | cpumask_t cpu_possible_map = CPU_MASK_NONE; | 62 | cpumask_t cpu_possible_map = CPU_MASK_NONE; |
63 | cpumask_t cpu_online_map = CPU_MASK_NONE; | 63 | cpumask_t cpu_online_map = CPU_MASK_NONE; |
64 | cpumask_t cpu_sibling_map[NR_CPUS] = { [0 ... NR_CPUS-1] = CPU_MASK_NONE }; | 64 | DEFINE_PER_CPU(cpumask_t, cpu_sibling_map) = CPU_MASK_NONE; |
65 | 65 | ||
66 | EXPORT_SYMBOL(cpu_online_map); | 66 | EXPORT_SYMBOL(cpu_online_map); |
67 | EXPORT_SYMBOL(cpu_possible_map); | 67 | EXPORT_SYMBOL(cpu_possible_map); |
68 | EXPORT_SYMBOL(cpu_sibling_map); | 68 | EXPORT_PER_CPU_SYMBOL(cpu_sibling_map); |
69 | 69 | ||
70 | /* SMP operations for this machine */ | 70 | /* SMP operations for this machine */ |
71 | struct smp_ops_t *smp_ops; | 71 | struct smp_ops_t *smp_ops; |
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index 9368da371f36..863a5d6d9b18 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
@@ -829,7 +829,7 @@ static void register_decrementer_clockevent(int cpu) | |||
829 | *dec = decrementer_clockevent; | 829 | *dec = decrementer_clockevent; |
830 | dec->cpumask = cpumask_of_cpu(cpu); | 830 | dec->cpumask = cpumask_of_cpu(cpu); |
831 | 831 | ||
832 | printk(KERN_ERR "clockevent: %s mult[%lx] shift[%d] cpu[%d]\n", | 832 | printk(KERN_INFO "clockevent: %s mult[%lx] shift[%d] cpu[%d]\n", |
833 | dec->name, dec->mult, dec->shift, cpu); | 833 | dec->name, dec->mult, dec->shift, cpu); |
834 | 834 | ||
835 | clockevents_register_device(dec); | 835 | clockevents_register_device(dec); |
diff --git a/arch/powerpc/kernel/vdso32/vdso32.lds.S b/arch/powerpc/kernel/vdso32/vdso32.lds.S index 26e138c4ce17..9352ab5200e5 100644 --- a/arch/powerpc/kernel/vdso32/vdso32.lds.S +++ b/arch/powerpc/kernel/vdso32/vdso32.lds.S | |||
@@ -1,130 +1,147 @@ | |||
1 | |||
2 | /* | 1 | /* |
3 | * This is the infamous ld script for the 32 bits vdso | 2 | * This is the infamous ld script for the 32 bits vdso |
4 | * library | 3 | * library |
5 | */ | 4 | */ |
6 | #include <asm/vdso.h> | 5 | #include <asm/vdso.h> |
7 | 6 | ||
8 | /* Default link addresses for the vDSOs */ | ||
9 | OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc") | 7 | OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc") |
10 | OUTPUT_ARCH(powerpc:common) | 8 | OUTPUT_ARCH(powerpc:common) |
11 | ENTRY(_start) | 9 | ENTRY(_start) |
12 | 10 | ||
13 | SECTIONS | 11 | SECTIONS |
14 | { | 12 | { |
15 | . = VDSO32_LBASE + SIZEOF_HEADERS; | 13 | . = VDSO32_LBASE + SIZEOF_HEADERS; |
16 | .hash : { *(.hash) } :text | 14 | |
17 | .gnu.hash : { *(.gnu.hash) } | 15 | .hash : { *(.hash) } :text |
18 | .dynsym : { *(.dynsym) } | 16 | .gnu.hash : { *(.gnu.hash) } |
19 | .dynstr : { *(.dynstr) } | 17 | .dynsym : { *(.dynsym) } |
20 | .gnu.version : { *(.gnu.version) } | 18 | .dynstr : { *(.dynstr) } |
21 | .gnu.version_d : { *(.gnu.version_d) } | 19 | .gnu.version : { *(.gnu.version) } |
22 | .gnu.version_r : { *(.gnu.version_r) } | 20 | .gnu.version_d : { *(.gnu.version_d) } |
23 | 21 | .gnu.version_r : { *(.gnu.version_r) } | |
24 | .note : { *(.note.*) } :text :note | 22 | |
25 | 23 | .note : { *(.note.*) } :text :note | |
26 | . = ALIGN (16); | 24 | |
27 | .text : | 25 | . = ALIGN(16); |
28 | { | 26 | .text : { |
29 | *(.text .stub .text.* .gnu.linkonce.t.*) | 27 | *(.text .stub .text.* .gnu.linkonce.t.*) |
30 | } | 28 | } |
31 | PROVIDE (__etext = .); | 29 | PROVIDE(__etext = .); |
32 | PROVIDE (_etext = .); | 30 | PROVIDE(_etext = .); |
33 | PROVIDE (etext = .); | 31 | PROVIDE(etext = .); |
34 | 32 | ||
35 | . = ALIGN(8); | 33 | . = ALIGN(8); |
36 | __ftr_fixup : { | 34 | __ftr_fixup : { *(__ftr_fixup) } |
37 | *(__ftr_fixup) | ||
38 | } | ||
39 | 35 | ||
40 | #ifdef CONFIG_PPC64 | 36 | #ifdef CONFIG_PPC64 |
41 | . = ALIGN(8); | 37 | . = ALIGN(8); |
42 | __fw_ftr_fixup : { | 38 | __fw_ftr_fixup : { *(__fw_ftr_fixup) } |
43 | *(__fw_ftr_fixup) | ||
44 | } | ||
45 | #endif | 39 | #endif |
46 | 40 | ||
47 | /* Other stuff is appended to the text segment: */ | 41 | /* |
48 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } | 42 | * Other stuff is appended to the text segment: |
49 | .rodata1 : { *(.rodata1) } | 43 | */ |
50 | 44 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } | |
51 | .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr | 45 | .rodata1 : { *(.rodata1) } |
52 | .eh_frame : { KEEP (*(.eh_frame)) } :text | 46 | |
53 | .gcc_except_table : { *(.gcc_except_table) } | 47 | .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr |
54 | .fixup : { *(.fixup) } | 48 | .eh_frame : { KEEP (*(.eh_frame)) } :text |
55 | 49 | .gcc_except_table : { *(.gcc_except_table) } | |
56 | .dynamic : { *(.dynamic) } :text :dynamic | 50 | .fixup : { *(.fixup) } |
57 | .got : { *(.got) } | 51 | |
58 | .plt : { *(.plt) } | 52 | .dynamic : { *(.dynamic) } :text :dynamic |
59 | 53 | .got : { *(.got) } | |
60 | _end = .; | 54 | .plt : { *(.plt) } |
61 | __end = .; | 55 | |
62 | PROVIDE (end = .); | 56 | _end = .; |
63 | 57 | __end = .; | |
64 | 58 | PROVIDE(end = .); | |
65 | /* Stabs debugging sections are here too | 59 | |
66 | */ | 60 | /* |
67 | .stab 0 : { *(.stab) } | 61 | * Stabs debugging sections are here too. |
68 | .stabstr 0 : { *(.stabstr) } | 62 | */ |
69 | .stab.excl 0 : { *(.stab.excl) } | 63 | .stab 0 : { *(.stab) } |
70 | .stab.exclstr 0 : { *(.stab.exclstr) } | 64 | .stabstr 0 : { *(.stabstr) } |
71 | .stab.index 0 : { *(.stab.index) } | 65 | .stab.excl 0 : { *(.stab.excl) } |
72 | .stab.indexstr 0 : { *(.stab.indexstr) } | 66 | .stab.exclstr 0 : { *(.stab.exclstr) } |
73 | .comment 0 : { *(.comment) } | 67 | .stab.index 0 : { *(.stab.index) } |
74 | .debug 0 : { *(.debug) } | 68 | .stab.indexstr 0 : { *(.stab.indexstr) } |
75 | .line 0 : { *(.line) } | 69 | .comment 0 : { *(.comment) } |
76 | 70 | ||
77 | .debug_srcinfo 0 : { *(.debug_srcinfo) } | 71 | /* |
78 | .debug_sfnames 0 : { *(.debug_sfnames) } | 72 | * DWARF debug sections. |
79 | 73 | * Symbols in the DWARF debugging sections are relative to the beginning | |
80 | .debug_aranges 0 : { *(.debug_aranges) } | 74 | * of the section so we begin them at 0. |
81 | .debug_pubnames 0 : { *(.debug_pubnames) } | 75 | */ |
82 | 76 | /* DWARF 1 */ | |
83 | .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } | 77 | .debug 0 : { *(.debug) } |
84 | .debug_abbrev 0 : { *(.debug_abbrev) } | 78 | .line 0 : { *(.line) } |
85 | .debug_line 0 : { *(.debug_line) } | 79 | /* GNU DWARF 1 extensions */ |
86 | .debug_frame 0 : { *(.debug_frame) } | 80 | .debug_srcinfo 0 : { *(.debug_srcinfo) } |
87 | .debug_str 0 : { *(.debug_str) } | 81 | .debug_sfnames 0 : { *(.debug_sfnames) } |
88 | .debug_loc 0 : { *(.debug_loc) } | 82 | /* DWARF 1.1 and DWARF 2 */ |
89 | .debug_macinfo 0 : { *(.debug_macinfo) } | 83 | .debug_aranges 0 : { *(.debug_aranges) } |
90 | 84 | .debug_pubnames 0 : { *(.debug_pubnames) } | |
91 | .debug_weaknames 0 : { *(.debug_weaknames) } | 85 | /* DWARF 2 */ |
92 | .debug_funcnames 0 : { *(.debug_funcnames) } | 86 | .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } |
93 | .debug_typenames 0 : { *(.debug_typenames) } | 87 | .debug_abbrev 0 : { *(.debug_abbrev) } |
94 | .debug_varnames 0 : { *(.debug_varnames) } | 88 | .debug_line 0 : { *(.debug_line) } |
95 | 89 | .debug_frame 0 : { *(.debug_frame) } | |
96 | /DISCARD/ : { *(.note.GNU-stack) } | 90 | .debug_str 0 : { *(.debug_str) } |
97 | /DISCARD/ : { *(.data .data.* .gnu.linkonce.d.* .sdata*) } | 91 | .debug_loc 0 : { *(.debug_loc) } |
98 | /DISCARD/ : { *(.bss .sbss .dynbss .dynsbss) } | 92 | .debug_macinfo 0 : { *(.debug_macinfo) } |
93 | /* SGI/MIPS DWARF 2 extensions */ | ||
94 | .debug_weaknames 0 : { *(.debug_weaknames) } | ||
95 | .debug_funcnames 0 : { *(.debug_funcnames) } | ||
96 | .debug_typenames 0 : { *(.debug_typenames) } | ||
97 | .debug_varnames 0 : { *(.debug_varnames) } | ||
98 | |||
99 | /DISCARD/ : { | ||
100 | *(.note.GNU-stack) | ||
101 | *(.data .data.* .gnu.linkonce.d.* .sdata*) | ||
102 | *(.bss .sbss .dynbss .dynsbss) | ||
103 | } | ||
99 | } | 104 | } |
100 | 105 | ||
106 | /* | ||
107 | * Very old versions of ld do not recognize this name token; use the constant. | ||
108 | */ | ||
109 | #define PT_GNU_EH_FRAME 0x6474e550 | ||
101 | 110 | ||
111 | /* | ||
112 | * We must supply the ELF program headers explicitly to get just one | ||
113 | * PT_LOAD segment, and set the flags explicitly to make segments read-only. | ||
114 | */ | ||
102 | PHDRS | 115 | PHDRS |
103 | { | 116 | { |
104 | text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */ | 117 | text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */ |
105 | note PT_NOTE FLAGS(4); /* PF_R */ | 118 | dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ |
106 | dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ | 119 | note PT_NOTE FLAGS(4); /* PF_R */ |
107 | eh_frame_hdr 0x6474e550; /* PT_GNU_EH_FRAME, but ld doesn't match the name */ | 120 | eh_frame_hdr PT_GNU_EH_FRAME; |
108 | } | 121 | } |
109 | 122 | ||
110 | |||
111 | /* | 123 | /* |
112 | * This controls what symbols we export from the DSO. | 124 | * This controls what symbols we export from the DSO. |
113 | */ | 125 | */ |
114 | VERSION | 126 | VERSION |
115 | { | 127 | { |
116 | VDSO_VERSION_STRING { | 128 | VDSO_VERSION_STRING { |
117 | global: | 129 | global: |
118 | __kernel_datapage_offset; /* Has to be there for the kernel to find */ | 130 | /* |
119 | __kernel_get_syscall_map; | 131 | * Has to be there for the kernel to find |
120 | __kernel_gettimeofday; | 132 | */ |
121 | __kernel_clock_gettime; | 133 | __kernel_datapage_offset; |
122 | __kernel_clock_getres; | 134 | |
123 | __kernel_get_tbfreq; | 135 | __kernel_get_syscall_map; |
124 | __kernel_sync_dicache; | 136 | __kernel_gettimeofday; |
125 | __kernel_sync_dicache_p5; | 137 | __kernel_clock_gettime; |
126 | __kernel_sigtramp32; | 138 | __kernel_clock_getres; |
127 | __kernel_sigtramp_rt32; | 139 | __kernel_get_tbfreq; |
128 | local: *; | 140 | __kernel_sync_dicache; |
129 | }; | 141 | __kernel_sync_dicache_p5; |
142 | __kernel_sigtramp32; | ||
143 | __kernel_sigtramp_rt32; | ||
144 | |||
145 | local: *; | ||
146 | }; | ||
130 | } | 147 | } |
diff --git a/arch/powerpc/kernel/vdso64/sigtramp.S b/arch/powerpc/kernel/vdso64/sigtramp.S index 17a83fa6dc52..59eb59bb4082 100644 --- a/arch/powerpc/kernel/vdso64/sigtramp.S +++ b/arch/powerpc/kernel/vdso64/sigtramp.S | |||
@@ -134,13 +134,16 @@ V_FUNCTION_END(__kernel_sigtramp_rt64) | |||
134 | 9: | 134 | 9: |
135 | 135 | ||
136 | /* This is where the pt_regs pointer can be found on the stack. */ | 136 | /* This is where the pt_regs pointer can be found on the stack. */ |
137 | #define PTREGS 128+168+56 | 137 | #define PTREGS 128+168+56 |
138 | 138 | ||
139 | /* Size of regs. */ | 139 | /* Size of regs. */ |
140 | #define RSIZE 8 | 140 | #define RSIZE 8 |
141 | |||
142 | /* Size of CR reg in DWARF unwind info. */ | ||
143 | #define CRSIZE 4 | ||
141 | 144 | ||
142 | /* This is the offset of the VMX reg pointer. */ | 145 | /* This is the offset of the VMX reg pointer. */ |
143 | #define VREGS 48*RSIZE+33*8 | 146 | #define VREGS 48*RSIZE+33*8 |
144 | 147 | ||
145 | /* Describe where general purpose regs are saved. */ | 148 | /* Describe where general purpose regs are saved. */ |
146 | #define EH_FRAME_GEN \ | 149 | #define EH_FRAME_GEN \ |
@@ -178,7 +181,7 @@ V_FUNCTION_END(__kernel_sigtramp_rt64) | |||
178 | rsave (31, 31*RSIZE); \ | 181 | rsave (31, 31*RSIZE); \ |
179 | rsave (67, 32*RSIZE); /* ap, used as temp for nip */ \ | 182 | rsave (67, 32*RSIZE); /* ap, used as temp for nip */ \ |
180 | rsave (65, 36*RSIZE); /* lr */ \ | 183 | rsave (65, 36*RSIZE); /* lr */ \ |
181 | rsave (70, 38*RSIZE) /* cr */ | 184 | rsave (70, 38*RSIZE + (RSIZE - CRSIZE)) /* cr */ |
182 | 185 | ||
183 | /* Describe where the FP regs are saved. */ | 186 | /* Describe where the FP regs are saved. */ |
184 | #define EH_FRAME_FP \ | 187 | #define EH_FRAME_FP \ |
diff --git a/arch/powerpc/kernel/vdso64/vdso64.lds.S b/arch/powerpc/kernel/vdso64/vdso64.lds.S index 2d70f35d50b5..932b3fdb34b9 100644 --- a/arch/powerpc/kernel/vdso64/vdso64.lds.S +++ b/arch/powerpc/kernel/vdso64/vdso64.lds.S | |||
@@ -10,100 +10,114 @@ ENTRY(_start) | |||
10 | 10 | ||
11 | SECTIONS | 11 | SECTIONS |
12 | { | 12 | { |
13 | . = VDSO64_LBASE + SIZEOF_HEADERS; | 13 | . = VDSO64_LBASE + SIZEOF_HEADERS; |
14 | .hash : { *(.hash) } :text | 14 | |
15 | .gnu.hash : { *(.gnu.hash) } | 15 | .hash : { *(.hash) } :text |
16 | .dynsym : { *(.dynsym) } | 16 | .gnu.hash : { *(.gnu.hash) } |
17 | .dynstr : { *(.dynstr) } | 17 | .dynsym : { *(.dynsym) } |
18 | .gnu.version : { *(.gnu.version) } | 18 | .dynstr : { *(.dynstr) } |
19 | .gnu.version_d : { *(.gnu.version_d) } | 19 | .gnu.version : { *(.gnu.version) } |
20 | .gnu.version_r : { *(.gnu.version_r) } | 20 | .gnu.version_d : { *(.gnu.version_d) } |
21 | 21 | .gnu.version_r : { *(.gnu.version_r) } | |
22 | .note : { *(.note.*) } :text :note | 22 | |
23 | 23 | .note : { *(.note.*) } :text :note | |
24 | . = ALIGN (16); | 24 | |
25 | .text : | 25 | . = ALIGN(16); |
26 | { | 26 | .text : { |
27 | *(.text .stub .text.* .gnu.linkonce.t.*) | 27 | *(.text .stub .text.* .gnu.linkonce.t.*) |
28 | *(.sfpr .glink) | 28 | *(.sfpr .glink) |
29 | } :text | 29 | } :text |
30 | PROVIDE (__etext = .); | 30 | PROVIDE(__etext = .); |
31 | PROVIDE (_etext = .); | 31 | PROVIDE(_etext = .); |
32 | PROVIDE (etext = .); | 32 | PROVIDE(etext = .); |
33 | 33 | ||
34 | . = ALIGN(8); | 34 | . = ALIGN(8); |
35 | __ftr_fixup : { | 35 | __ftr_fixup : { *(__ftr_fixup) } |
36 | *(__ftr_fixup) | 36 | |
37 | } | 37 | . = ALIGN(8); |
38 | 38 | __fw_ftr_fixup : { *(__fw_ftr_fixup) } | |
39 | . = ALIGN(8); | 39 | |
40 | __fw_ftr_fixup : { | 40 | /* |
41 | *(__fw_ftr_fixup) | 41 | * Other stuff is appended to the text segment: |
42 | } | 42 | */ |
43 | 43 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } | |
44 | /* Other stuff is appended to the text segment: */ | 44 | .rodata1 : { *(.rodata1) } |
45 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } | 45 | |
46 | .rodata1 : { *(.rodata1) } | 46 | .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr |
47 | .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr | 47 | .eh_frame : { KEEP (*(.eh_frame)) } :text |
48 | .eh_frame : { KEEP (*(.eh_frame)) } :text | 48 | .gcc_except_table : { *(.gcc_except_table) } |
49 | .gcc_except_table : { *(.gcc_except_table) } | 49 | |
50 | 50 | .opd ALIGN(8) : { KEEP (*(.opd)) } | |
51 | .opd ALIGN(8) : { KEEP (*(.opd)) } | 51 | .got ALIGN(8) : { *(.got .toc) } |
52 | .got ALIGN(8) : { *(.got .toc) } | 52 | .rela.dyn ALIGN(8) : { *(.rela.dyn) } |
53 | .rela.dyn ALIGN(8) : { *(.rela.dyn) } | 53 | |
54 | 54 | .dynamic : { *(.dynamic) } :text :dynamic | |
55 | .dynamic : { *(.dynamic) } :text :dynamic | 55 | |
56 | 56 | _end = .; | |
57 | _end = .; | 57 | PROVIDE(end = .); |
58 | PROVIDE (end = .); | 58 | |
59 | 59 | /* | |
60 | /* Stabs debugging sections are here too | 60 | * Stabs debugging sections are here too. |
61 | */ | 61 | */ |
62 | .stab 0 : { *(.stab) } | 62 | .stab 0 : { *(.stab) } |
63 | .stabstr 0 : { *(.stabstr) } | 63 | .stabstr 0 : { *(.stabstr) } |
64 | .stab.excl 0 : { *(.stab.excl) } | 64 | .stab.excl 0 : { *(.stab.excl) } |
65 | .stab.exclstr 0 : { *(.stab.exclstr) } | 65 | .stab.exclstr 0 : { *(.stab.exclstr) } |
66 | .stab.index 0 : { *(.stab.index) } | 66 | .stab.index 0 : { *(.stab.index) } |
67 | .stab.indexstr 0 : { *(.stab.indexstr) } | 67 | .stab.indexstr 0 : { *(.stab.indexstr) } |
68 | .comment 0 : { *(.comment) } | 68 | .comment 0 : { *(.comment) } |
69 | /* DWARF debug sectio/ns. | 69 | |
70 | Symbols in the DWARF debugging sections are relative to the beginning | 70 | /* |
71 | of the section so we begin them at 0. */ | 71 | * DWARF debug sections. |
72 | /* DWARF 1 */ | 72 | * Symbols in the DWARF debugging sections are relative to the beginning |
73 | .debug 0 : { *(.debug) } | 73 | * of the section so we begin them at 0. |
74 | .line 0 : { *(.line) } | 74 | */ |
75 | /* GNU DWARF 1 extensions */ | 75 | /* DWARF 1 */ |
76 | .debug_srcinfo 0 : { *(.debug_srcinfo) } | 76 | .debug 0 : { *(.debug) } |
77 | .debug_sfnames 0 : { *(.debug_sfnames) } | 77 | .line 0 : { *(.line) } |
78 | /* DWARF 1.1 and DWARF 2 */ | 78 | /* GNU DWARF 1 extensions */ |
79 | .debug_aranges 0 : { *(.debug_aranges) } | 79 | .debug_srcinfo 0 : { *(.debug_srcinfo) } |
80 | .debug_pubnames 0 : { *(.debug_pubnames) } | 80 | .debug_sfnames 0 : { *(.debug_sfnames) } |
81 | /* DWARF 2 */ | 81 | /* DWARF 1.1 and DWARF 2 */ |
82 | .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } | 82 | .debug_aranges 0 : { *(.debug_aranges) } |
83 | .debug_abbrev 0 : { *(.debug_abbrev) } | 83 | .debug_pubnames 0 : { *(.debug_pubnames) } |
84 | .debug_line 0 : { *(.debug_line) } | 84 | /* DWARF 2 */ |
85 | .debug_frame 0 : { *(.debug_frame) } | 85 | .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } |
86 | .debug_str 0 : { *(.debug_str) } | 86 | .debug_abbrev 0 : { *(.debug_abbrev) } |
87 | .debug_loc 0 : { *(.debug_loc) } | 87 | .debug_line 0 : { *(.debug_line) } |
88 | .debug_macinfo 0 : { *(.debug_macinfo) } | 88 | .debug_frame 0 : { *(.debug_frame) } |
89 | /* SGI/MIPS DWARF 2 extensions */ | 89 | .debug_str 0 : { *(.debug_str) } |
90 | .debug_weaknames 0 : { *(.debug_weaknames) } | 90 | .debug_loc 0 : { *(.debug_loc) } |
91 | .debug_funcnames 0 : { *(.debug_funcnames) } | 91 | .debug_macinfo 0 : { *(.debug_macinfo) } |
92 | .debug_typenames 0 : { *(.debug_typenames) } | 92 | /* SGI/MIPS DWARF 2 extensions */ |
93 | .debug_varnames 0 : { *(.debug_varnames) } | 93 | .debug_weaknames 0 : { *(.debug_weaknames) } |
94 | 94 | .debug_funcnames 0 : { *(.debug_funcnames) } | |
95 | /DISCARD/ : { *(.note.GNU-stack) } | 95 | .debug_typenames 0 : { *(.debug_typenames) } |
96 | /DISCARD/ : { *(.branch_lt) } | 96 | .debug_varnames 0 : { *(.debug_varnames) } |
97 | /DISCARD/ : { *(.data .data.* .gnu.linkonce.d.*) } | 97 | |
98 | /DISCARD/ : { *(.bss .sbss .dynbss .dynsbss) } | 98 | /DISCARD/ : { |
99 | *(.note.GNU-stack) | ||
100 | *(.branch_lt) | ||
101 | *(.data .data.* .gnu.linkonce.d.* .sdata*) | ||
102 | *(.bss .sbss .dynbss .dynsbss) | ||
103 | } | ||
99 | } | 104 | } |
100 | 105 | ||
106 | /* | ||
107 | * Very old versions of ld do not recognize this name token; use the constant. | ||
108 | */ | ||
109 | #define PT_GNU_EH_FRAME 0x6474e550 | ||
110 | |||
111 | /* | ||
112 | * We must supply the ELF program headers explicitly to get just one | ||
113 | * PT_LOAD segment, and set the flags explicitly to make segments read-only. | ||
114 | */ | ||
101 | PHDRS | 115 | PHDRS |
102 | { | 116 | { |
103 | text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */ | 117 | text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */ |
104 | note PT_NOTE FLAGS(4); /* PF_R */ | 118 | dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ |
105 | dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ | 119 | note PT_NOTE FLAGS(4); /* PF_R */ |
106 | eh_frame_hdr 0x6474e550; /* PT_GNU_EH_FRAME, but ld doesn't match the name */ | 120 | eh_frame_hdr PT_GNU_EH_FRAME; |
107 | } | 121 | } |
108 | 122 | ||
109 | /* | 123 | /* |
@@ -111,17 +125,22 @@ PHDRS | |||
111 | */ | 125 | */ |
112 | VERSION | 126 | VERSION |
113 | { | 127 | { |
114 | VDSO_VERSION_STRING { | 128 | VDSO_VERSION_STRING { |
115 | global: | 129 | global: |
116 | __kernel_datapage_offset; /* Has to be there for the kernel to find */ | 130 | /* |
117 | __kernel_get_syscall_map; | 131 | * Has to be there for the kernel to find |
118 | __kernel_gettimeofday; | 132 | */ |
119 | __kernel_clock_gettime; | 133 | __kernel_datapage_offset; |
120 | __kernel_clock_getres; | 134 | |
121 | __kernel_get_tbfreq; | 135 | __kernel_get_syscall_map; |
122 | __kernel_sync_dicache; | 136 | __kernel_gettimeofday; |
123 | __kernel_sync_dicache_p5; | 137 | __kernel_clock_gettime; |
124 | __kernel_sigtramp_rt64; | 138 | __kernel_clock_getres; |
125 | local: *; | 139 | __kernel_get_tbfreq; |
126 | }; | 140 | __kernel_sync_dicache; |
141 | __kernel_sync_dicache_p5; | ||
142 | __kernel_sigtramp_rt64; | ||
143 | |||
144 | local: *; | ||
145 | }; | ||
127 | } | 146 | } |
diff --git a/arch/powerpc/math-emu/math.c b/arch/powerpc/math-emu/math.c index 69058b2873de..381306bb1590 100644 --- a/arch/powerpc/math-emu/math.c +++ b/arch/powerpc/math-emu/math.c | |||
@@ -407,11 +407,16 @@ do_mathemu(struct pt_regs *regs) | |||
407 | 407 | ||
408 | case XE: | 408 | case XE: |
409 | idx = (insn >> 16) & 0x1f; | 409 | idx = (insn >> 16) & 0x1f; |
410 | if (!idx) | ||
411 | goto illegal; | ||
412 | |||
413 | op0 = (void *)¤t->thread.fpr[(insn >> 21) & 0x1f]; | 410 | op0 = (void *)¤t->thread.fpr[(insn >> 21) & 0x1f]; |
414 | op1 = (void *)(regs->gpr[idx] + regs->gpr[(insn >> 11) & 0x1f]); | 411 | if (!idx) { |
412 | if (((insn >> 1) & 0x3ff) == STFIWX) | ||
413 | op1 = (void *)(regs->gpr[(insn >> 11) & 0x1f]); | ||
414 | else | ||
415 | goto illegal; | ||
416 | } else { | ||
417 | op1 = (void *)(regs->gpr[idx] + regs->gpr[(insn >> 11) & 0x1f]); | ||
418 | } | ||
419 | |||
415 | break; | 420 | break; |
416 | 421 | ||
417 | case XEU: | 422 | case XEU: |
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 611ad084b7e7..c78dc912411f 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -209,9 +209,10 @@ static int __init htab_dt_scan_seg_sizes(unsigned long node, | |||
209 | if (prop[0] == 40) { | 209 | if (prop[0] == 40) { |
210 | DBG("1T segment support detected\n"); | 210 | DBG("1T segment support detected\n"); |
211 | cur_cpu_spec->cpu_features |= CPU_FTR_1T_SEGMENT; | 211 | cur_cpu_spec->cpu_features |= CPU_FTR_1T_SEGMENT; |
212 | return 1; | ||
212 | } | 213 | } |
213 | return 1; | ||
214 | } | 214 | } |
215 | cur_cpu_spec->cpu_features &= ~CPU_FTR_NO_SLBIE_B; | ||
215 | return 0; | 216 | return 0; |
216 | } | 217 | } |
217 | 218 | ||
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c index fa90f6561b9f..6720b1c93f18 100644 --- a/arch/powerpc/mm/init_64.c +++ b/arch/powerpc/mm/init_64.c | |||
@@ -183,3 +183,71 @@ void pgtable_cache_init(void) | |||
183 | zero_ctor); | 183 | zero_ctor); |
184 | } | 184 | } |
185 | } | 185 | } |
186 | |||
187 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | ||
188 | /* | ||
189 | * Given an address within the vmemmap, determine the pfn of the page that | ||
190 | * represents the start of the section it is within. Note that we have to | ||
191 | * do this by hand as the proffered address may not be correctly aligned. | ||
192 | * Subtraction of non-aligned pointers produces undefined results. | ||
193 | */ | ||
194 | unsigned long __meminit vmemmap_section_start(unsigned long page) | ||
195 | { | ||
196 | unsigned long offset = page - ((unsigned long)(vmemmap)); | ||
197 | |||
198 | /* Return the pfn of the start of the section. */ | ||
199 | return (offset / sizeof(struct page)) & PAGE_SECTION_MASK; | ||
200 | } | ||
201 | |||
202 | /* | ||
203 | * Check if this vmemmap page is already initialised. If any section | ||
204 | * which overlaps this vmemmap page is initialised then this page is | ||
205 | * initialised already. | ||
206 | */ | ||
207 | int __meminit vmemmap_populated(unsigned long start, int page_size) | ||
208 | { | ||
209 | unsigned long end = start + page_size; | ||
210 | |||
211 | for (; start < end; start += (PAGES_PER_SECTION * sizeof(struct page))) | ||
212 | if (pfn_valid(vmemmap_section_start(start))) | ||
213 | return 1; | ||
214 | |||
215 | return 0; | ||
216 | } | ||
217 | |||
218 | int __meminit vmemmap_populate(struct page *start_page, | ||
219 | unsigned long nr_pages, int node) | ||
220 | { | ||
221 | unsigned long mode_rw; | ||
222 | unsigned long start = (unsigned long)start_page; | ||
223 | unsigned long end = (unsigned long)(start_page + nr_pages); | ||
224 | unsigned long page_size = 1 << mmu_psize_defs[mmu_linear_psize].shift; | ||
225 | |||
226 | mode_rw = _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_COHERENT | PP_RWXX; | ||
227 | |||
228 | /* Align to the page size of the linear mapping. */ | ||
229 | start = _ALIGN_DOWN(start, page_size); | ||
230 | |||
231 | for (; start < end; start += page_size) { | ||
232 | int mapped; | ||
233 | void *p; | ||
234 | |||
235 | if (vmemmap_populated(start, page_size)) | ||
236 | continue; | ||
237 | |||
238 | p = vmemmap_alloc_block(page_size, node); | ||
239 | if (!p) | ||
240 | return -ENOMEM; | ||
241 | |||
242 | printk(KERN_WARNING "vmemmap %08lx allocated at %p, " | ||
243 | "physical %08lx.\n", start, p, __pa(p)); | ||
244 | |||
245 | mapped = htab_bolt_mapping(start, start + page_size, | ||
246 | __pa(p), mode_rw, mmu_linear_psize, | ||
247 | mmu_kernel_ssize); | ||
248 | BUG_ON(mapped < 0); | ||
249 | } | ||
250 | |||
251 | return 0; | ||
252 | } | ||
253 | #endif | ||
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index 32dcfc9b0082..81eb96ec13b2 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c | |||
@@ -129,51 +129,6 @@ int __devinit arch_add_memory(int nid, u64 start, u64 size) | |||
129 | return __add_pages(zone, start_pfn, nr_pages); | 129 | return __add_pages(zone, start_pfn, nr_pages); |
130 | } | 130 | } |
131 | 131 | ||
132 | /* | ||
133 | * First pass at this code will check to determine if the remove | ||
134 | * request is within the RMO. Do not allow removal within the RMO. | ||
135 | */ | ||
136 | int __devinit remove_memory(u64 start, u64 size) | ||
137 | { | ||
138 | struct zone *zone; | ||
139 | unsigned long start_pfn, end_pfn, nr_pages; | ||
140 | |||
141 | start_pfn = start >> PAGE_SHIFT; | ||
142 | nr_pages = size >> PAGE_SHIFT; | ||
143 | end_pfn = start_pfn + nr_pages; | ||
144 | |||
145 | printk("%s(): Attempting to remove memoy in range " | ||
146 | "%lx to %lx\n", __func__, start, start+size); | ||
147 | /* | ||
148 | * check for range within RMO | ||
149 | */ | ||
150 | zone = page_zone(pfn_to_page(start_pfn)); | ||
151 | |||
152 | printk("%s(): memory will be removed from " | ||
153 | "the %s zone\n", __func__, zone->name); | ||
154 | |||
155 | /* | ||
156 | * not handling removing memory ranges that | ||
157 | * overlap multiple zones yet | ||
158 | */ | ||
159 | if (end_pfn > (zone->zone_start_pfn + zone->spanned_pages)) | ||
160 | goto overlap; | ||
161 | |||
162 | /* make sure it is NOT in RMO */ | ||
163 | if ((start < lmb.rmo_size) || ((start+size) < lmb.rmo_size)) { | ||
164 | printk("%s(): range to be removed must NOT be in RMO!\n", | ||
165 | __func__); | ||
166 | goto in_rmo; | ||
167 | } | ||
168 | |||
169 | return __remove_pages(zone, start_pfn, nr_pages); | ||
170 | |||
171 | overlap: | ||
172 | printk("%s(): memory range to be removed overlaps " | ||
173 | "multiple zones!!!\n", __func__); | ||
174 | in_rmo: | ||
175 | return -1; | ||
176 | } | ||
177 | #endif /* CONFIG_MEMORY_HOTPLUG */ | 132 | #endif /* CONFIG_MEMORY_HOTPLUG */ |
178 | 133 | ||
179 | void show_mem(void) | 134 | void show_mem(void) |
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c index 6c164cec9d2c..bbd2c512ee05 100644 --- a/arch/powerpc/mm/slb.c +++ b/arch/powerpc/mm/slb.c | |||
@@ -157,7 +157,8 @@ void switch_slb(struct task_struct *tsk, struct mm_struct *mm) | |||
157 | unsigned long stack = KSTK_ESP(tsk); | 157 | unsigned long stack = KSTK_ESP(tsk); |
158 | unsigned long unmapped_base; | 158 | unsigned long unmapped_base; |
159 | 159 | ||
160 | if (offset <= SLB_CACHE_ENTRIES) { | 160 | if (!cpu_has_feature(CPU_FTR_NO_SLBIE_B) && |
161 | offset <= SLB_CACHE_ENTRIES) { | ||
161 | int i; | 162 | int i; |
162 | asm volatile("isync" : : : "memory"); | 163 | asm volatile("isync" : : : "memory"); |
163 | for (i = 0; i < offset; i++) { | 164 | for (i = 0; i < offset; i++) { |
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig index bdced1e42293..229d355ed86a 100644 --- a/arch/powerpc/platforms/Kconfig +++ b/arch/powerpc/platforms/Kconfig | |||
@@ -117,7 +117,7 @@ config RTAS_FLASH | |||
117 | 117 | ||
118 | config PPC_PMI | 118 | config PPC_PMI |
119 | tristate "Support for PMI" | 119 | tristate "Support for PMI" |
120 | depends PPC_IBM_CELL_BLADE | 120 | depends on PPC_IBM_CELL_BLADE |
121 | help | 121 | help |
122 | PMI (Platform Management Interrupt) is a way to | 122 | PMI (Platform Management Interrupt) is a way to |
123 | communicate with the BMC (Baseboard Mangement Controller). | 123 | communicate with the BMC (Baseboard Mangement Controller). |
diff --git a/arch/powerpc/platforms/cell/cbe_cpufreq.c b/arch/powerpc/platforms/cell/cbe_cpufreq.c index 5123e9d4164b..13d5a87f13b1 100644 --- a/arch/powerpc/platforms/cell/cbe_cpufreq.c +++ b/arch/powerpc/platforms/cell/cbe_cpufreq.c | |||
@@ -117,7 +117,7 @@ static int cbe_cpufreq_cpu_init(struct cpufreq_policy *policy) | |||
117 | policy->cur = cbe_freqs[cur_pmode].frequency; | 117 | policy->cur = cbe_freqs[cur_pmode].frequency; |
118 | 118 | ||
119 | #ifdef CONFIG_SMP | 119 | #ifdef CONFIG_SMP |
120 | policy->cpus = cpu_sibling_map[policy->cpu]; | 120 | policy->cpus = per_cpu(cpu_sibling_map, policy->cpu); |
121 | #endif | 121 | #endif |
122 | 122 | ||
123 | cpufreq_frequency_table_get_attr(cbe_freqs, policy->cpu); | 123 | cpufreq_frequency_table_get_attr(cbe_freqs, policy->cpu); |
diff --git a/arch/powerpc/platforms/iseries/htab.c b/arch/powerpc/platforms/iseries/htab.c index 15a7097e5dd7..f99c6c4b6985 100644 --- a/arch/powerpc/platforms/iseries/htab.c +++ b/arch/powerpc/platforms/iseries/htab.c | |||
@@ -39,9 +39,9 @@ static inline void iSeries_hunlock(unsigned long slot) | |||
39 | spin_unlock(&iSeries_hlocks[(slot >> 4) & 0x3f]); | 39 | spin_unlock(&iSeries_hlocks[(slot >> 4) & 0x3f]); |
40 | } | 40 | } |
41 | 41 | ||
42 | long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va, | 42 | static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va, |
43 | unsigned long pa, unsigned long rflags, | 43 | unsigned long pa, unsigned long rflags, |
44 | unsigned long vflags, int psize) | 44 | unsigned long vflags, int psize, int ssize) |
45 | { | 45 | { |
46 | long slot; | 46 | long slot; |
47 | struct hash_pte lhpte; | 47 | struct hash_pte lhpte; |
diff --git a/arch/powerpc/platforms/iseries/vio.c b/arch/powerpc/platforms/iseries/vio.c index 910b00b4703e..d6435b03971f 100644 --- a/arch/powerpc/platforms/iseries/vio.c +++ b/arch/powerpc/platforms/iseries/vio.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * Legacy iSeries specific vio initialisation | 2 | * Legacy iSeries specific vio initialisation |
3 | * that needs to be built in (not a module). | 3 | * that needs to be built in (not a module). |
4 | * | 4 | * |
5 | * © Copyright 2007 IBM Corporation | 5 | * © Copyright 2007 IBM Corporation |
6 | * Author: Stephen Rothwell | 6 | * Author: Stephen Rothwell |
7 | * Some parts collected from various other files | 7 | * Some parts collected from various other files |
8 | * | 8 | * |
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c index 190ff4b59a55..07e64b48e7fc 100644 --- a/arch/powerpc/platforms/ps3/system-bus.c +++ b/arch/powerpc/platforms/ps3/system-bus.c | |||
@@ -616,17 +616,18 @@ static void ps3_unmap_single(struct device *_dev, dma_addr_t dma_addr, | |||
616 | } | 616 | } |
617 | } | 617 | } |
618 | 618 | ||
619 | static int ps3_sb_map_sg(struct device *_dev, struct scatterlist *sg, int nents, | 619 | static int ps3_sb_map_sg(struct device *_dev, struct scatterlist *sgl, |
620 | enum dma_data_direction direction) | 620 | int nents, enum dma_data_direction direction) |
621 | { | 621 | { |
622 | #if defined(CONFIG_PS3_DYNAMIC_DMA) | 622 | #if defined(CONFIG_PS3_DYNAMIC_DMA) |
623 | BUG_ON("do"); | 623 | BUG_ON("do"); |
624 | return -EPERM; | 624 | return -EPERM; |
625 | #else | 625 | #else |
626 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); | 626 | struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); |
627 | struct scatterlist *sg; | ||
627 | int i; | 628 | int i; |
628 | 629 | ||
629 | for (i = 0; i < nents; i++, sg++) { | 630 | for_each_sg(sgl, sg, nents, i) { |
630 | int result = ps3_dma_map(dev->d_region, | 631 | int result = ps3_dma_map(dev->d_region, |
631 | page_to_phys(sg->page) + sg->offset, sg->length, | 632 | page_to_phys(sg->page) + sg->offset, sg->length, |
632 | &sg->dma_address, 0); | 633 | &sg->dma_address, 0); |
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index af090c93be10..33df4c347ca7 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c | |||
@@ -255,7 +255,7 @@ DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533E, quirk_fsl_pcie_transpare | |||
255 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_transparent); | 255 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_transparent); |
256 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent); | 256 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent); |
257 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent); | 257 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent); |
258 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_transparent) | 258 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_transparent); |
259 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572, quirk_fsl_pcie_transparent); | 259 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572, quirk_fsl_pcie_transparent); |
260 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent); | 260 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent); |
261 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641D, quirk_fsl_pcie_transparent); | 261 | DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641D, quirk_fsl_pcie_transparent); |