aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/Kconfig1
-rw-r--r--arch/powerpc/Kconfig.debug6
-rw-r--r--arch/powerpc/Makefile30
-rw-r--r--arch/powerpc/configs/bamboo_defconfig7
-rw-r--r--arch/powerpc/configs/celleb_defconfig7
-rw-r--r--arch/powerpc/configs/chrp32_defconfig7
-rw-r--r--arch/powerpc/configs/ebony_defconfig7
-rw-r--r--arch/powerpc/configs/g5_defconfig7
-rw-r--r--arch/powerpc/configs/holly_defconfig7
-rw-r--r--arch/powerpc/configs/iseries_defconfig7
-rw-r--r--arch/powerpc/configs/kilauea_defconfig7
-rw-r--r--arch/powerpc/configs/linkstation_defconfig7
-rw-r--r--arch/powerpc/configs/lite5200_defconfig7
-rw-r--r--arch/powerpc/configs/maple_defconfig8
-rw-r--r--arch/powerpc/configs/mpc7448_hpc2_defconfig5
-rw-r--r--arch/powerpc/configs/mpc8272_ads_defconfig7
-rw-r--r--arch/powerpc/configs/mpc8313_rdb_defconfig7
-rw-r--r--arch/powerpc/configs/mpc832x_mds_defconfig5
-rw-r--r--arch/powerpc/configs/mpc832x_rdb_defconfig5
-rw-r--r--arch/powerpc/configs/mpc834x_itx_defconfig5
-rw-r--r--arch/powerpc/configs/mpc834x_itxgp_defconfig5
-rw-r--r--arch/powerpc/configs/mpc834x_mds_defconfig5
-rw-r--r--arch/powerpc/configs/mpc836x_mds_defconfig5
-rw-r--r--arch/powerpc/configs/mpc8540_ads_defconfig7
-rw-r--r--arch/powerpc/configs/mpc8544_ds_defconfig7
-rw-r--r--arch/powerpc/configs/mpc8560_ads_defconfig7
-rw-r--r--arch/powerpc/configs/mpc8568mds_defconfig7
-rw-r--r--arch/powerpc/configs/mpc8572_ds_defconfig7
-rw-r--r--arch/powerpc/configs/mpc85xx_cds_defconfig7
-rw-r--r--arch/powerpc/configs/mpc8610_hpcd_defconfig7
-rw-r--r--arch/powerpc/configs/mpc8641_hpcn_defconfig7
-rw-r--r--arch/powerpc/configs/mpc866_ads_defconfig5
-rw-r--r--arch/powerpc/configs/pasemi_defconfig7
-rw-r--r--arch/powerpc/configs/pmac32_defconfig7
-rw-r--r--arch/powerpc/configs/ppc64_defconfig11
-rw-r--r--arch/powerpc/configs/pq2fads_defconfig7
-rw-r--r--arch/powerpc/configs/prpmc2800_defconfig5
-rw-r--r--arch/powerpc/configs/ps3_defconfig7
-rw-r--r--arch/powerpc/configs/pseries_defconfig11
-rw-r--r--arch/powerpc/configs/sequoia_defconfig7
-rw-r--r--arch/powerpc/configs/walnut_defconfig7
-rw-r--r--arch/powerpc/kernel/dma_64.c5
-rw-r--r--arch/powerpc/kernel/entry_64.S6
-rw-r--r--arch/powerpc/kernel/ibmebus.c274
-rw-r--r--arch/powerpc/kernel/iommu.c23
-rw-r--r--arch/powerpc/kernel/kprobes.c2
-rw-r--r--arch/powerpc/kernel/of_device.c80
-rw-r--r--arch/powerpc/kernel/of_platform.c70
-rw-r--r--arch/powerpc/kernel/ptrace.c4
-rw-r--r--arch/powerpc/kernel/setup-common.c20
-rw-r--r--arch/powerpc/kernel/setup_64.c16
-rw-r--r--arch/powerpc/kernel/smp.c4
-rw-r--r--arch/powerpc/kernel/time.c2
-rw-r--r--arch/powerpc/kernel/vdso32/vdso32.lds.S219
-rw-r--r--arch/powerpc/kernel/vdso64/sigtramp.S11
-rw-r--r--arch/powerpc/kernel/vdso64/vdso64.lds.S225
-rw-r--r--arch/powerpc/math-emu/math.c13
-rw-r--r--arch/powerpc/mm/hash_utils_64.c3
-rw-r--r--arch/powerpc/mm/init_64.c68
-rw-r--r--arch/powerpc/mm/mem.c45
-rw-r--r--arch/powerpc/mm/slb.c3
-rw-r--r--arch/powerpc/platforms/Kconfig2
-rw-r--r--arch/powerpc/platforms/cell/cbe_cpufreq.c2
-rw-r--r--arch/powerpc/platforms/iseries/htab.c4
-rw-r--r--arch/powerpc/platforms/iseries/vio.c2
-rw-r--r--arch/powerpc/platforms/ps3/system-bus.c7
-rw-r--r--arch/powerpc/sysdev/fsl_pci.c2
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
295config ARCH_SPARSEMEM_ENABLE 295config 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
299config ARCH_SPARSEMEM_DEFAULT 300config 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
145config BOOTX_TEXT 145config 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
235config PPC_EARLY_DEBUG_44x_PHYSLOW 235config 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
240config PPC_EARLY_DEBUG_44x_PHYSHIGH 240config 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
245config PPC_EARLY_DEBUG_CPM_ADDR 245config 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)
75AFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) 75AFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH)
76CFLAGS-$(CONFIG_PPC64) := -mminimal-toc -mtraceback=none -mcall-aixdesc 76CFLAGS-$(CONFIG_PPC64) := -mminimal-toc -mtraceback=none -mcall-aixdesc
77CFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) -ffixed-r2 -mmultiple 77CFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) -ffixed-r2 -mmultiple
78CPPFLAGS += $(CPPFLAGS-y) 78KBUILD_CPPFLAGS += $(CPPFLAGS-y)
79AFLAGS += $(AFLAGS-y) 79KBUILD_AFLAGS += $(AFLAGS-y)
80CFLAGS += -msoft-float -pipe $(CFLAGS-y) 80KBUILD_CFLAGS += -msoft-float -pipe $(CFLAGS-y)
81CPP = $(CC) -E $(CFLAGS) 81CPP = $(CC) -E $(KBUILD_CFLAGS)
82 82
83CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__ 83CHECKFLAGS += -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
88ifeq ($(CONFIG_POWER4_ONLY),y) 88ifeq ($(CONFIG_POWER4_ONLY),y)
89ifeq ($(CONFIG_ALTIVEC),y) 89ifeq ($(CONFIG_ALTIVEC),y)
90ifeq ($(GCC_BROKEN_VEC),y) 90ifeq ($(GCC_BROKEN_VEC),y)
91 CFLAGS += $(call cc-option,-mcpu=970) 91 KBUILD_CFLAGS += $(call cc-option,-mcpu=970)
92else 92else
93 CFLAGS += $(call cc-option,-mcpu=power4) 93 KBUILD_CFLAGS += $(call cc-option,-mcpu=power4)
94endif 94endif
95else 95else
96 CFLAGS += $(call cc-option,-mcpu=power4) 96 KBUILD_CFLAGS += $(call cc-option,-mcpu=power4)
97endif 97endif
98else 98else
99 CFLAGS += $(call cc-option,-mtune=power4) 99 KBUILD_CFLAGS += $(call cc-option,-mtune=power4)
100endif 100endif
101endif 101endif
102 102
103ifeq ($(CONFIG_TUNE_CELL),y) 103ifeq ($(CONFIG_TUNE_CELL),y)
104 CFLAGS += $(call cc-option,-mtune=cell) 104 KBUILD_CFLAGS += $(call cc-option,-mtune=cell)
105endif 105endif
106 106
107# No AltiVec instruction when building kernel 107# No AltiVec instruction when building kernel
108CFLAGS += $(call cc-option,-mno-altivec) 108KBUILD_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.
112CFLAGS += $(call cc-option,-funit-at-a-time) 112KBUILD_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
116CFLAGS += -mno-string 116KBUILD_CFLAGS += -mno-string
117 117
118ifeq ($(CONFIG_6xx),y) 118ifeq ($(CONFIG_6xx),y)
119CFLAGS += -mcpu=powerpc 119KBUILD_CFLAGS += -mcpu=powerpc
120endif 120endif
121 121
122cpu-as-$(CONFIG_4xx) += -Wa,-m405 122cpu-as-$(CONFIG_4xx) += -Wa,-m405
@@ -125,8 +125,8 @@ cpu-as-$(CONFIG_POWER4) += -Wa,-maltivec
125cpu-as-$(CONFIG_E500) += -Wa,-me500 125cpu-as-$(CONFIG_E500) += -Wa,-me500
126cpu-as-$(CONFIG_E200) += -Wa,-me200 126cpu-as-$(CONFIG_E200) += -Wa,-me200
127 127
128AFLAGS += $(cpu-as-y) 128KBUILD_AFLAGS += $(cpu-as-y)
129CFLAGS += $(cpu-as-y) 129KBUILD_CFLAGS += $(cpu-as-y)
130 130
131head-y := arch/powerpc/kernel/head_$(CONFIG_WORD_SIZE).o 131head-y := arch/powerpc/kernel/head_$(CONFIG_WORD_SIZE).o
132head-$(CONFIG_8xx) := arch/powerpc/kernel/head_8xx.o 132head-$(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
91CONFIG_EVENTFD=y 91CONFIG_EVENTFD=y
92CONFIG_SHMEM=y 92CONFIG_SHMEM=y
93CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
94CONFIG_SLAB=y 94CONFIG_SLUB_DEBUG=y
95# CONFIG_SLUB is not set 95# CONFIG_SLAB is not set
96CONFIG_SLUB=y
96# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
97CONFIG_RT_MUTEXES=y 98CONFIG_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
695CONFIG_SCHED_DEBUG=y 696CONFIG_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
92CONFIG_EVENTFD=y 92CONFIG_EVENTFD=y
93CONFIG_SHMEM=y 93CONFIG_SHMEM=y
94CONFIG_VM_EVENT_COUNTERS=y 94CONFIG_VM_EVENT_COUNTERS=y
95CONFIG_SLAB=y 95CONFIG_SLUB_DEBUG=y
96# CONFIG_SLUB is not set 96# CONFIG_SLAB is not set
97CONFIG_SLUB=y
97# CONFIG_SLOB is not set 98# CONFIG_SLOB is not set
98CONFIG_RT_MUTEXES=y 99CONFIG_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
1218CONFIG_SCHED_DEBUG=y 1219CONFIG_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
92CONFIG_EVENTFD=y 92CONFIG_EVENTFD=y
93CONFIG_SHMEM=y 93CONFIG_SHMEM=y
94CONFIG_VM_EVENT_COUNTERS=y 94CONFIG_VM_EVENT_COUNTERS=y
95CONFIG_SLAB=y 95CONFIG_SLUB_DEBUG=y
96# CONFIG_SLUB is not set 96# CONFIG_SLAB is not set
97CONFIG_SLUB=y
97# CONFIG_SLOB is not set 98# CONFIG_SLOB is not set
98CONFIG_RT_MUTEXES=y 99CONFIG_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
1373CONFIG_SCHED_DEBUG=y 1374CONFIG_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
90CONFIG_EVENTFD=y 90CONFIG_EVENTFD=y
91CONFIG_SHMEM=y 91CONFIG_SHMEM=y
92CONFIG_VM_EVENT_COUNTERS=y 92CONFIG_VM_EVENT_COUNTERS=y
93CONFIG_SLAB=y 93CONFIG_SLUB_DEBUG=y
94# CONFIG_SLUB is not set 94# CONFIG_SLAB is not set
95CONFIG_SLUB=y
95# CONFIG_SLOB is not set 96# CONFIG_SLOB is not set
96CONFIG_RT_MUTEXES=y 97CONFIG_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
773CONFIG_SCHED_DEBUG=y 774CONFIG_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
92CONFIG_EVENTFD=y 92CONFIG_EVENTFD=y
93CONFIG_SHMEM=y 93CONFIG_SHMEM=y
94CONFIG_VM_EVENT_COUNTERS=y 94CONFIG_VM_EVENT_COUNTERS=y
95CONFIG_SLAB=y 95CONFIG_SLUB_DEBUG=y
96# CONFIG_SLUB is not set 96# CONFIG_SLAB is not set
97CONFIG_SLUB=y
97# CONFIG_SLOB is not set 98# CONFIG_SLOB is not set
98CONFIG_RT_MUTEXES=y 99CONFIG_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
1580CONFIG_SCHED_DEBUG=y 1581CONFIG_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
88CONFIG_EVENTFD=y 88CONFIG_EVENTFD=y
89CONFIG_SHMEM=y 89CONFIG_SHMEM=y
90CONFIG_VM_EVENT_COUNTERS=y 90CONFIG_VM_EVENT_COUNTERS=y
91CONFIG_SLAB=y 91CONFIG_SLUB_DEBUG=y
92# CONFIG_SLUB is not set 92# CONFIG_SLAB is not set
93CONFIG_SLUB=y
93# CONFIG_SLOB is not set 94# CONFIG_SLOB is not set
94CONFIG_RT_MUTEXES=y 95CONFIG_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
93CONFIG_EVENTFD=y 93CONFIG_EVENTFD=y
94CONFIG_SHMEM=y 94CONFIG_SHMEM=y
95CONFIG_VM_EVENT_COUNTERS=y 95CONFIG_VM_EVENT_COUNTERS=y
96CONFIG_SLAB=y 96CONFIG_SLUB_DEBUG=y
97# CONFIG_SLUB is not set 97# CONFIG_SLAB is not set
98CONFIG_SLUB=y
98# CONFIG_SLOB is not set 99# CONFIG_SLOB is not set
99CONFIG_RT_MUTEXES=y 100CONFIG_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
1056CONFIG_SCHED_DEBUG=y 1057CONFIG_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
91CONFIG_EVENTFD=y 91CONFIG_EVENTFD=y
92CONFIG_SHMEM=y 92CONFIG_SHMEM=y
93CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
94CONFIG_SLAB=y 94CONFIG_SLUB_DEBUG=y
95# CONFIG_SLUB is not set 95# CONFIG_SLAB is not set
96CONFIG_SLUB=y
96# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
97CONFIG_RT_MUTEXES=y 98CONFIG_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
700CONFIG_SCHED_DEBUG=y 701CONFIG_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
89CONFIG_EVENTFD=y 89CONFIG_EVENTFD=y
90CONFIG_SHMEM=y 90CONFIG_SHMEM=y
91CONFIG_VM_EVENT_COUNTERS=y 91CONFIG_VM_EVENT_COUNTERS=y
92CONFIG_SLAB=y 92CONFIG_SLUB_DEBUG=y
93# CONFIG_SLUB is not set 93# CONFIG_SLAB is not set
94CONFIG_SLUB=y
94# CONFIG_SLOB is not set 95# CONFIG_SLOB is not set
95CONFIG_RT_MUTEXES=y 96CONFIG_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
1459CONFIG_SCHED_DEBUG=y 1460CONFIG_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
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_SLAB=y 90CONFIG_SLUB_DEBUG=y
91# CONFIG_SLUB is not set 91# CONFIG_SLAB is not set
92CONFIG_SLUB=y
92# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
93CONFIG_RT_MUTEXES=y 94CONFIG_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
816CONFIG_SCHED_DEBUG=y 817CONFIG_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
90CONFIG_EVENTFD=y 90CONFIG_EVENTFD=y
91CONFIG_SHMEM=y 91CONFIG_SHMEM=y
92CONFIG_VM_EVENT_COUNTERS=y 92CONFIG_VM_EVENT_COUNTERS=y
93CONFIG_SLAB=y 93CONFIG_SLUB_DEBUG=y
94# CONFIG_SLUB is not set 94# CONFIG_SLAB is not set
95CONFIG_SLUB=y
95# CONFIG_SLOB is not set 96# CONFIG_SLOB is not set
96CONFIG_RT_MUTEXES=y 97CONFIG_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
1095CONFIG_SCHED_DEBUG=y 1096CONFIG_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
1098CONFIG_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
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_SLAB=y 90CONFIG_SLUB_DEBUG=y
91# CONFIG_SLUB is not set 91# CONFIG_SLAB is not set
92CONFIG_SLUB=y
92# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
93CONFIG_RT_MUTEXES=y 94CONFIG_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
85CONFIG_EVENTFD=y 85CONFIG_EVENTFD=y
86CONFIG_SHMEM=y 86CONFIG_SHMEM=y
87CONFIG_VM_EVENT_COUNTERS=y 87CONFIG_VM_EVENT_COUNTERS=y
88CONFIG_SLAB=y 88CONFIG_SLUB_DEBUG=y
89# CONFIG_SLUB is not set 89# CONFIG_SLAB is not set
90CONFIG_SLUB=y
90# CONFIG_SLOB is not set 91# CONFIG_SLOB is not set
91CONFIG_RT_MUTEXES=y 92CONFIG_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
867CONFIG_SCHED_DEBUG=y 868CONFIG_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
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_SLAB=y 90CONFIG_SLUB_DEBUG=y
91# CONFIG_SLUB is not set 91# CONFIG_SLAB is not set
92CONFIG_SLUB=y
92# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
93CONFIG_RT_MUTEXES=y 94CONFIG_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
1272CONFIG_SCHED_DEBUG=y 1273CONFIG_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
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_SLAB=y 90CONFIG_SLUB_DEBUG=y
91# CONFIG_SLUB is not set 91# CONFIG_SLAB is not set
92CONFIG_SLUB=y
92# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
93CONFIG_RT_MUTEXES=y 94CONFIG_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
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_SLAB=y 90CONFIG_SLUB_DEBUG=y
91# CONFIG_SLUB is not set 91# CONFIG_SLAB is not set
92CONFIG_SLUB=y
92# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
93CONFIG_RT_MUTEXES=y 94CONFIG_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
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_SLAB=y 90CONFIG_SLUB_DEBUG=y
91# CONFIG_SLUB is not set 91# CONFIG_SLAB is not set
92CONFIG_SLUB=y
92# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
93CONFIG_RT_MUTEXES=y 94CONFIG_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
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_SLAB=y 90CONFIG_SLUB_DEBUG=y
91# CONFIG_SLUB is not set 91# CONFIG_SLAB is not set
92CONFIG_SLUB=y
92# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
93CONFIG_RT_MUTEXES=y 94CONFIG_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
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_SLAB=y 90CONFIG_SLUB_DEBUG=y
91# CONFIG_SLUB is not set 91# CONFIG_SLAB is not set
92CONFIG_SLUB=y
92# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
93CONFIG_RT_MUTEXES=y 94CONFIG_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
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_SLAB=y 90CONFIG_SLUB_DEBUG=y
91# CONFIG_SLUB is not set 91# CONFIG_SLAB is not set
92CONFIG_SLUB=y
92# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
93CONFIG_RT_MUTEXES=y 94CONFIG_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
90CONFIG_EVENTFD=y 90CONFIG_EVENTFD=y
91CONFIG_SHMEM=y 91CONFIG_SHMEM=y
92CONFIG_VM_EVENT_COUNTERS=y 92CONFIG_VM_EVENT_COUNTERS=y
93CONFIG_SLAB=y 93CONFIG_SLUB_DEBUG=y
94# CONFIG_SLUB is not set 94# CONFIG_SLAB is not set
95CONFIG_SLUB=y
95# CONFIG_SLOB is not set 96# CONFIG_SLOB is not set
96CONFIG_RT_MUTEXES=y 97CONFIG_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
704CONFIG_SCHED_DEBUG=y 705CONFIG_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
93CONFIG_EVENTFD=y 93CONFIG_EVENTFD=y
94CONFIG_SHMEM=y 94CONFIG_SHMEM=y
95CONFIG_VM_EVENT_COUNTERS=y 95CONFIG_VM_EVENT_COUNTERS=y
96CONFIG_SLAB=y 96CONFIG_SLUB_DEBUG=y
97# CONFIG_SLUB is not set 97# CONFIG_SLAB is not set
98CONFIG_SLUB=y
98# CONFIG_SLOB is not set 99# CONFIG_SLOB is not set
99CONFIG_RT_MUTEXES=y 100CONFIG_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
1427CONFIG_SCHED_DEBUG=y 1428CONFIG_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
94CONFIG_EVENTFD=y 94CONFIG_EVENTFD=y
95CONFIG_SHMEM=y 95CONFIG_SHMEM=y
96CONFIG_VM_EVENT_COUNTERS=y 96CONFIG_VM_EVENT_COUNTERS=y
97CONFIG_SLAB=y 97CONFIG_SLUB_DEBUG=y
98# CONFIG_SLUB is not set 98# CONFIG_SLAB is not set
99CONFIG_SLUB=y
99# CONFIG_SLOB is not set 100# CONFIG_SLOB is not set
100CONFIG_RT_MUTEXES=y 101CONFIG_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
791CONFIG_SCHED_DEBUG=y 792CONFIG_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
88CONFIG_EVENTFD=y 88CONFIG_EVENTFD=y
89CONFIG_SHMEM=y 89CONFIG_SHMEM=y
90CONFIG_VM_EVENT_COUNTERS=y 90CONFIG_VM_EVENT_COUNTERS=y
91CONFIG_SLAB=y 91CONFIG_SLUB_DEBUG=y
92# CONFIG_SLUB is not set 92# CONFIG_SLAB is not set
93CONFIG_SLUB=y
93# CONFIG_SLOB is not set 94# CONFIG_SLOB is not set
94CONFIG_RT_MUTEXES=y 95CONFIG_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
949CONFIG_SCHED_DEBUG=y 950CONFIG_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
93CONFIG_EVENTFD=y 93CONFIG_EVENTFD=y
94CONFIG_SHMEM=y 94CONFIG_SHMEM=y
95CONFIG_VM_EVENT_COUNTERS=y 95CONFIG_VM_EVENT_COUNTERS=y
96CONFIG_SLAB=y 96CONFIG_SLUB_DEBUG=y
97# CONFIG_SLUB is not set 97# CONFIG_SLAB is not set
98CONFIG_SLUB=y
98# CONFIG_SLOB is not set 99# CONFIG_SLOB is not set
99CONFIG_RT_MUTEXES=y 100CONFIG_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
1427CONFIG_SCHED_DEBUG=y 1428CONFIG_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
90CONFIG_EVENTFD=y 90CONFIG_EVENTFD=y
91CONFIG_SHMEM=y 91CONFIG_SHMEM=y
92CONFIG_VM_EVENT_COUNTERS=y 92CONFIG_VM_EVENT_COUNTERS=y
93CONFIG_SLAB=y 93CONFIG_SLUB_DEBUG=y
94# CONFIG_SLUB is not set 94# CONFIG_SLAB is not set
95CONFIG_SLUB=y
95# CONFIG_SLOB is not set 96# CONFIG_SLOB is not set
96CONFIG_RT_MUTEXES=y 97CONFIG_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
832CONFIG_SCHED_DEBUG=y 833CONFIG_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
88CONFIG_EVENTFD=y 88CONFIG_EVENTFD=y
89CONFIG_SHMEM=y 89CONFIG_SHMEM=y
90CONFIG_VM_EVENT_COUNTERS=y 90CONFIG_VM_EVENT_COUNTERS=y
91CONFIG_SLAB=y 91CONFIG_SLUB_DEBUG=y
92# CONFIG_SLUB is not set 92# CONFIG_SLAB is not set
93CONFIG_SLUB=y
93# CONFIG_SLOB is not set 94# CONFIG_SLOB is not set
94CONFIG_RT_MUTEXES=y 95CONFIG_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
993CONFIG_SCHED_DEBUG=y 994CONFIG_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
94CONFIG_EVENTFD=y 94CONFIG_EVENTFD=y
95CONFIG_SHMEM=y 95CONFIG_SHMEM=y
96CONFIG_VM_EVENT_COUNTERS=y 96CONFIG_VM_EVENT_COUNTERS=y
97CONFIG_SLAB=y 97CONFIG_SLUB_DEBUG=y
98# CONFIG_SLUB is not set 98# CONFIG_SLAB is not set
99CONFIG_SLUB=y
99# CONFIG_SLOB is not set 100# CONFIG_SLOB is not set
100CONFIG_RT_MUTEXES=y 101CONFIG_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
1432CONFIG_SCHED_DEBUG=y 1433CONFIG_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
83CONFIG_EVENTFD=y 83CONFIG_EVENTFD=y
84CONFIG_SHMEM=y 84CONFIG_SHMEM=y
85# CONFIG_VM_EVENT_COUNTERS is not set 85# CONFIG_VM_EVENT_COUNTERS is not set
86CONFIG_SLAB=y 86CONFIG_SLUB_DEBUG=y
87# CONFIG_SLUB is not set 87# CONFIG_SLAB is not set
88CONFIG_SLUB=y
88# CONFIG_SLOB is not set 89# CONFIG_SLOB is not set
89CONFIG_RT_MUTEXES=y 90CONFIG_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
90CONFIG_EVENTFD=y 90CONFIG_EVENTFD=y
91CONFIG_SHMEM=y 91CONFIG_SHMEM=y
92CONFIG_VM_EVENT_COUNTERS=y 92CONFIG_VM_EVENT_COUNTERS=y
93CONFIG_SLAB=y 93CONFIG_SLUB_DEBUG=y
94# CONFIG_SLUB is not set 94# CONFIG_SLAB is not set
95CONFIG_SLUB=y
95# CONFIG_SLOB is not set 96# CONFIG_SLOB is not set
96CONFIG_RT_MUTEXES=y 97CONFIG_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
1588CONFIG_SCHED_DEBUG=y 1589CONFIG_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
91CONFIG_EVENTFD=y 91CONFIG_EVENTFD=y
92CONFIG_SHMEM=y 92CONFIG_SHMEM=y
93CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
94CONFIG_SLAB=y 94CONFIG_SLUB_DEBUG=y
95# CONFIG_SLUB is not set 95# CONFIG_SLAB is not set
96CONFIG_SLUB=y
96# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
97CONFIG_RT_MUTEXES=y 98CONFIG_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
1829CONFIG_SCHED_DEBUG=y 1830CONFIG_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
96CONFIG_EVENTFD=y 96CONFIG_EVENTFD=y
97CONFIG_SHMEM=y 97CONFIG_SHMEM=y
98CONFIG_VM_EVENT_COUNTERS=y 98CONFIG_VM_EVENT_COUNTERS=y
99CONFIG_SLAB=y 99CONFIG_SLUB_DEBUG=y
100# CONFIG_SLUB is not set 100# CONFIG_SLAB is not set
101CONFIG_SLUB=y
101# CONFIG_SLOB is not set 102# CONFIG_SLOB is not set
102CONFIG_RT_MUTEXES=y 103CONFIG_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#
220CONFIG_TICK_ONESHOT=y
221CONFIG_NO_HZ=y
222CONFIG_HIGH_RES_TIMERS=y
223CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
219# CONFIG_HZ_100 is not set 224# CONFIG_HZ_100 is not set
220CONFIG_HZ_250=y 225CONFIG_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
1750CONFIG_SCHED_DEBUG=y 1755CONFIG_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
86CONFIG_EVENTFD=y 86CONFIG_EVENTFD=y
87CONFIG_SHMEM=y 87CONFIG_SHMEM=y
88CONFIG_VM_EVENT_COUNTERS=y 88CONFIG_VM_EVENT_COUNTERS=y
89CONFIG_SLAB=y 89CONFIG_SLUB_DEBUG=y
90# CONFIG_SLUB is not set 90# CONFIG_SLAB is not set
91CONFIG_SLUB=y
91# CONFIG_SLOB is not set 92# CONFIG_SLOB is not set
92CONFIG_RT_MUTEXES=y 93CONFIG_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
89CONFIG_EVENTFD=y 89CONFIG_EVENTFD=y
90CONFIG_SHMEM=y 90CONFIG_SHMEM=y
91CONFIG_VM_EVENT_COUNTERS=y 91CONFIG_VM_EVENT_COUNTERS=y
92CONFIG_SLAB=y 92CONFIG_SLUB_DEBUG=y
93# CONFIG_SLUB is not set 93# CONFIG_SLAB is not set
94CONFIG_SLUB=y
94# CONFIG_SLOB is not set 95# CONFIG_SLOB is not set
95CONFIG_RT_MUTEXES=y 96CONFIG_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
91CONFIG_EVENTFD=y 91CONFIG_EVENTFD=y
92CONFIG_SHMEM=y 92CONFIG_SHMEM=y
93CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
94CONFIG_SLAB=y 94CONFIG_SLUB_DEBUG=y
95# CONFIG_SLUB is not set 95# CONFIG_SLAB is not set
96CONFIG_SLUB=y
96# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
97CONFIG_RT_MUTEXES=y 98CONFIG_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
1059CONFIG_SCHED_DEBUG=y 1060CONFIG_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
1065CONFIG_DEBUG_SPINLOCK=y 1066CONFIG_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
96CONFIG_EVENTFD=y 96CONFIG_EVENTFD=y
97CONFIG_SHMEM=y 97CONFIG_SHMEM=y
98CONFIG_VM_EVENT_COUNTERS=y 98CONFIG_VM_EVENT_COUNTERS=y
99CONFIG_SLAB=y 99CONFIG_SLUB_DEBUG=y
100# CONFIG_SLUB is not set 100# CONFIG_SLAB is not set
101CONFIG_SLUB=y
101# CONFIG_SLOB is not set 102# CONFIG_SLOB is not set
102CONFIG_RT_MUTEXES=y 103CONFIG_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#
180CONFIG_TICK_ONESHOT=y
181CONFIG_NO_HZ=y
182CONFIG_HIGH_RES_TIMERS=y
183CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
179# CONFIG_HZ_100 is not set 184# CONFIG_HZ_100 is not set
180CONFIG_HZ_250=y 185CONFIG_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
1504CONFIG_SCHED_DEBUG=y 1509CONFIG_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
91CONFIG_EVENTFD=y 91CONFIG_EVENTFD=y
92CONFIG_SHMEM=y 92CONFIG_SHMEM=y
93CONFIG_VM_EVENT_COUNTERS=y 93CONFIG_VM_EVENT_COUNTERS=y
94CONFIG_SLAB=y 94CONFIG_SLUB_DEBUG=y
95# CONFIG_SLUB is not set 95# CONFIG_SLAB is not set
96CONFIG_SLUB=y
96# CONFIG_SLOB is not set 97# CONFIG_SLOB is not set
97CONFIG_RT_MUTEXES=y 98CONFIG_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
781CONFIG_SCHED_DEBUG=y 782CONFIG_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
87CONFIG_EVENTFD=y 87CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 88CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_SLAB=y 90CONFIG_SLUB_DEBUG=y
91# CONFIG_SLUB is not set 91# CONFIG_SLAB is not set
92CONFIG_SLUB=y
92# CONFIG_SLOB is not set 93# CONFIG_SLOB is not set
93CONFIG_RT_MUTEXES=y 94CONFIG_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
706CONFIG_SCHED_DEBUG=y 707CONFIG_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
157static int dma_direct_map_sg(struct device *dev, struct scatterlist *sg, 157static 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
51struct bus_type ibmebus_bus_type; 52struct bus_type ibmebus_bus_type;
52 53
54/* These devices will automatically be added to the bus during init */
55static struct of_device_id builtin_matches[] = {
56 { .compatible = "IBM,lhca" },
57 { .compatible = "IBM,lhea" },
58 {},
59};
60
53static void *ibmebus_alloc_coherent(struct device *dev, 61static 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
89static int ibmebus_map_sg(struct device *dev, 97static 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
126static int ibmebus_bus_probe(struct device *dev) 135static 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
144static int ibmebus_bus_remove(struct device *dev) 142static 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
156static void __devinit ibmebus_dev_release(struct device *dev) 147static 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
162static 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
187static 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
216static 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
232static 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
242static 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
255static int ibmebus_unregister_device(struct device *dev) 168static 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
262static 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
278int ibmebus_register_driver(struct ibmebus_driver *drv) 196int 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}
297EXPORT_SYMBOL(ibmebus_register_driver); 206EXPORT_SYMBOL(ibmebus_register_driver);
298 207
299void ibmebus_unregister_driver(struct ibmebus_driver *drv) 208void 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}
304EXPORT_SYMBOL(ibmebus_unregister_driver); 212EXPORT_SYMBOL(ibmebus_unregister_driver);
305 213
306int ibmebus_request_irq(struct ibmebus_dev *dev, 214int 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}
320EXPORT_SYMBOL(ibmebus_request_irq); 225EXPORT_SYMBOL(ibmebus_request_irq);
321 226
322void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id) 227void 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}
328EXPORT_SYMBOL(ibmebus_free_irq); 233EXPORT_SYMBOL(ibmebus_free_irq);
329 234
330static 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
347static ssize_t name_show(struct device *dev, 235static 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
355static struct device_attribute ibmebus_dev_attrs[] = { 241static 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
360static 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
372static char *ibmebus_chomp(const char *in, size_t count) 246static 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
417out: 289out:
418 kfree(path); 290 kfree(path);
419 return rc; 291 if (rc)
292 return rc;
293 return count;
420} 294}
421 295
422static ssize_t ibmebus_store_remove(struct bus_type *bus, 296static 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
453struct bus_type ibmebus_bus_type = { 327struct 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); 365postcore_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,
404void iommu_unmap_sg(struct iommu_table *tbl, struct scatterlist *sglist, 407void 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 @@
38DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; 38DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL;
39DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); 39DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
40 40
41struct kretprobe_blackpoint kretprobe_blacklist[] = {{NULL, NULL}};
42
41int __kprobes arch_prepare_kprobe(struct kprobe *p) 43int __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
13static 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
66struct 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}
90EXPORT_SYMBOL(of_device_alloc);
91
12ssize_t of_device_get_modalias(struct of_device *ofdev, 92ssize_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
56static atomic_t bus_no_reg_magic;
57
58struct bus_type of_platform_bus_type = { 55struct 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}
88EXPORT_SYMBOL(of_unregister_platform_driver); 85EXPORT_SYMBOL(of_unregister_platform_driver);
89 86
90static 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
142struct of_device* of_platform_device_create(struct device_node *np, 87struct 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 */
425void __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
62cpumask_t cpu_possible_map = CPU_MASK_NONE; 62cpumask_t cpu_possible_map = CPU_MASK_NONE;
63cpumask_t cpu_online_map = CPU_MASK_NONE; 63cpumask_t cpu_online_map = CPU_MASK_NONE;
64cpumask_t cpu_sibling_map[NR_CPUS] = { [0 ... NR_CPUS-1] = CPU_MASK_NONE }; 64DEFINE_PER_CPU(cpumask_t, cpu_sibling_map) = CPU_MASK_NONE;
65 65
66EXPORT_SYMBOL(cpu_online_map); 66EXPORT_SYMBOL(cpu_online_map);
67EXPORT_SYMBOL(cpu_possible_map); 67EXPORT_SYMBOL(cpu_possible_map);
68EXPORT_SYMBOL(cpu_sibling_map); 68EXPORT_PER_CPU_SYMBOL(cpu_sibling_map);
69 69
70/* SMP operations for this machine */ 70/* SMP operations for this machine */
71struct smp_ops_t *smp_ops; 71struct 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 */
9OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc") 7OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
10OUTPUT_ARCH(powerpc:common) 8OUTPUT_ARCH(powerpc:common)
11ENTRY(_start) 9ENTRY(_start)
12 10
13SECTIONS 11SECTIONS
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 */
102PHDRS 115PHDRS
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 */
114VERSION 126VERSION
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)
1349: 1349:
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
11SECTIONS 11SECTIONS
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 */
101PHDRS 115PHDRS
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 */
112VERSION 126VERSION
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 *)&current->thread.fpr[(insn >> 21) & 0x1f]; 410 op0 = (void *)&current->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 */
194unsigned 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 */
207int __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
218int __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 */
136int __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
171overlap:
172 printk("%s(): memory range to be removed overlaps "
173 "multiple zones!!!\n", __func__);
174in_rmo:
175 return -1;
176}
177#endif /* CONFIG_MEMORY_HOTPLUG */ 132#endif /* CONFIG_MEMORY_HOTPLUG */
178 133
179void show_mem(void) 134void 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
118config PPC_PMI 118config 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
42long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va, 42static 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
619static int ps3_sb_map_sg(struct device *_dev, struct scatterlist *sg, int nents, 619static 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
255DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_transparent); 255DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8533, quirk_fsl_pcie_transparent);
256DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent); 256DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544E, quirk_fsl_pcie_transparent);
257DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent); 257DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8544, quirk_fsl_pcie_transparent);
258DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_transparent) 258DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572E, quirk_fsl_pcie_transparent);
259DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572, quirk_fsl_pcie_transparent); 259DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8572, quirk_fsl_pcie_transparent);
260DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent); 260DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641, quirk_fsl_pcie_transparent);
261DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641D, quirk_fsl_pcie_transparent); 261DECLARE_PCI_FIXUP_EARLY(0x1957, PCI_DEVICE_ID_MPC8641D, quirk_fsl_pcie_transparent);