aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/Kconfig2
-rw-r--r--arch/powerpc/configs/g5_defconfig174
-rw-r--r--arch/powerpc/configs/ppc64_defconfig173
-rw-r--r--arch/powerpc/configs/pseries_defconfig127
-rw-r--r--arch/powerpc/kernel/asm-offsets.c1
-rw-r--r--arch/powerpc/kernel/cputable.c9
-rw-r--r--arch/powerpc/kernel/crash.c4
-rw-r--r--arch/powerpc/kernel/entry_32.S95
-rw-r--r--arch/powerpc/kernel/entry_64.S94
-rw-r--r--arch/powerpc/kernel/head_32.S1
-rw-r--r--arch/powerpc/kernel/head_64.S114
-rw-r--r--arch/powerpc/kernel/lparcfg.c6
-rw-r--r--arch/powerpc/kernel/machine_kexec_64.c10
-rw-r--r--arch/powerpc/kernel/ppc_ksyms.c16
-rw-r--r--arch/powerpc/kernel/process.c32
-rw-r--r--arch/powerpc/kernel/prom.c54
-rw-r--r--arch/powerpc/kernel/prom_init.c40
-rw-r--r--arch/powerpc/kernel/ptrace.c5
-rw-r--r--arch/powerpc/kernel/setup_64.c4
-rw-r--r--arch/powerpc/kernel/signal_32.c19
-rw-r--r--arch/powerpc/kernel/signal_64.c9
-rw-r--r--arch/powerpc/kernel/sys_ppc32.c4
-rw-r--r--arch/powerpc/kernel/systbl.S2
-rw-r--r--arch/powerpc/kernel/time.c282
-rw-r--r--arch/powerpc/kernel/traps.c2
-rw-r--r--arch/powerpc/kernel/vdso.c4
-rw-r--r--arch/powerpc/kernel/vdso64/gettimeofday.S4
-rw-r--r--arch/powerpc/mm/hash_native_64.c7
-rw-r--r--arch/powerpc/mm/hash_utils_64.c5
-rw-r--r--arch/powerpc/oprofile/Kconfig1
-rw-r--r--arch/powerpc/platforms/iseries/lpevents.c2
-rw-r--r--arch/powerpc/platforms/iseries/setup.c1
-rw-r--r--arch/powerpc/platforms/maple/pci.c4
-rw-r--r--arch/powerpc/platforms/powermac/feature.c10
-rw-r--r--arch/powerpc/platforms/powermac/pfunc_base.c5
-rw-r--r--arch/powerpc/platforms/powermac/pfunc_core.c6
-rw-r--r--arch/powerpc/platforms/powermac/smp.c2
-rw-r--r--arch/powerpc/platforms/pseries/Kconfig7
-rw-r--r--arch/powerpc/platforms/pseries/eeh.c14
-rw-r--r--arch/powerpc/platforms/pseries/eeh_driver.c2
-rw-r--r--arch/powerpc/platforms/pseries/pci_dlpar.c36
-rw-r--r--arch/powerpc/platforms/pseries/smp.c2
-rw-r--r--arch/powerpc/sysdev/mpic.c9
43 files changed, 519 insertions, 881 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 80d114a3a837..a834f9e0bbb3 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -963,7 +963,7 @@ source "arch/powerpc/oprofile/Kconfig"
963 963
964config KPROBES 964config KPROBES
965 bool "Kprobes (EXPERIMENTAL)" 965 bool "Kprobes (EXPERIMENTAL)"
966 depends on PPC64 966 depends on PPC64 && EXPERIMENTAL && MODULES
967 help 967 help
968 Kprobes allows you to trap at almost any kernel address and 968 Kprobes allows you to trap at almost any kernel address and
969 execute a callback function. register_kprobe() establishes 969 execute a callback function. register_kprobe() establishes
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig
index d6fed3f56580..2c3fd2007676 100644
--- a/arch/powerpc/configs/g5_defconfig
+++ b/arch/powerpc/configs/g5_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15-rc5 3# Linux kernel version: 2.6.16-rc2
4# Tue Dec 20 15:59:30 2005 4# Fri Feb 10 17:33:08 2006
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -16,6 +16,10 @@ CONFIG_COMPAT=y
16CONFIG_SYSVIPC_COMPAT=y 16CONFIG_SYSVIPC_COMPAT=y
17CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 17CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
18CONFIG_ARCH_MAY_HAVE_PC_FDC=y 18CONFIG_ARCH_MAY_HAVE_PC_FDC=y
19CONFIG_PPC_OF=y
20# CONFIG_PPC_UDBG_16550 is not set
21CONFIG_GENERIC_TBSYNC=y
22# CONFIG_DEFAULT_UIMAGE is not set
19 23
20# 24#
21# Processor support 25# Processor support
@@ -26,13 +30,12 @@ CONFIG_PPC_FPU=y
26CONFIG_ALTIVEC=y 30CONFIG_ALTIVEC=y
27CONFIG_PPC_STD_MMU=y 31CONFIG_PPC_STD_MMU=y
28CONFIG_SMP=y 32CONFIG_SMP=y
29CONFIG_NR_CPUS=2 33CONFIG_NR_CPUS=4
30 34
31# 35#
32# Code maturity level options 36# Code maturity level options
33# 37#
34CONFIG_EXPERIMENTAL=y 38CONFIG_EXPERIMENTAL=y
35CONFIG_CLEAN_COMPILE=y
36CONFIG_LOCK_KERNEL=y 39CONFIG_LOCK_KERNEL=y
37CONFIG_INIT_ENV_ARG_LIMIT=32 40CONFIG_INIT_ENV_ARG_LIMIT=32
38 41
@@ -47,8 +50,6 @@ CONFIG_POSIX_MQUEUE=y
47# CONFIG_BSD_PROCESS_ACCT is not set 50# CONFIG_BSD_PROCESS_ACCT is not set
48CONFIG_SYSCTL=y 51CONFIG_SYSCTL=y
49# CONFIG_AUDIT is not set 52# CONFIG_AUDIT is not set
50CONFIG_HOTPLUG=y
51CONFIG_KOBJECT_UEVENT=y
52CONFIG_IKCONFIG=y 53CONFIG_IKCONFIG=y
53CONFIG_IKCONFIG_PROC=y 54CONFIG_IKCONFIG_PROC=y
54# CONFIG_CPUSETS is not set 55# CONFIG_CPUSETS is not set
@@ -58,8 +59,10 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
58CONFIG_KALLSYMS=y 59CONFIG_KALLSYMS=y
59# CONFIG_KALLSYMS_ALL is not set 60# CONFIG_KALLSYMS_ALL is not set
60# CONFIG_KALLSYMS_EXTRA_PASS is not set 61# CONFIG_KALLSYMS_EXTRA_PASS is not set
62CONFIG_HOTPLUG=y
61CONFIG_PRINTK=y 63CONFIG_PRINTK=y
62CONFIG_BUG=y 64CONFIG_BUG=y
65CONFIG_ELF_CORE=y
63CONFIG_BASE_FULL=y 66CONFIG_BASE_FULL=y
64CONFIG_FUTEX=y 67CONFIG_FUTEX=y
65CONFIG_EPOLL=y 68CONFIG_EPOLL=y
@@ -68,8 +71,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
68CONFIG_CC_ALIGN_LABELS=0 71CONFIG_CC_ALIGN_LABELS=0
69CONFIG_CC_ALIGN_LOOPS=0 72CONFIG_CC_ALIGN_LOOPS=0
70CONFIG_CC_ALIGN_JUMPS=0 73CONFIG_CC_ALIGN_JUMPS=0
74CONFIG_SLAB=y
71# CONFIG_TINY_SHMEM is not set 75# CONFIG_TINY_SHMEM is not set
72CONFIG_BASE_SMALL=0 76CONFIG_BASE_SMALL=0
77# CONFIG_SLOB is not set
73 78
74# 79#
75# Loadable module support 80# Loadable module support
@@ -112,13 +117,12 @@ CONFIG_PPC_PMAC=y
112CONFIG_PPC_PMAC64=y 117CONFIG_PPC_PMAC64=y
113# CONFIG_PPC_MAPLE is not set 118# CONFIG_PPC_MAPLE is not set
114# CONFIG_PPC_CELL is not set 119# CONFIG_PPC_CELL is not set
115CONFIG_PPC_OF=y
116CONFIG_U3_DART=y 120CONFIG_U3_DART=y
117CONFIG_MPIC=y 121CONFIG_MPIC=y
118# CONFIG_PPC_RTAS is not set 122# CONFIG_PPC_RTAS is not set
119# CONFIG_MMIO_NVRAM is not set 123# CONFIG_MMIO_NVRAM is not set
124CONFIG_MPIC_BROKEN_U3=y
120# CONFIG_PPC_MPC106 is not set 125# CONFIG_PPC_MPC106 is not set
121CONFIG_GENERIC_TBSYNC=y
122CONFIG_CPU_FREQ=y 126CONFIG_CPU_FREQ=y
123CONFIG_CPU_FREQ_TABLE=y 127CONFIG_CPU_FREQ_TABLE=y
124# CONFIG_CPU_FREQ_DEBUG is not set 128# CONFIG_CPU_FREQ_DEBUG is not set
@@ -151,6 +155,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13
151CONFIG_IOMMU_VMERGE=y 155CONFIG_IOMMU_VMERGE=y
152# CONFIG_HOTPLUG_CPU is not set 156# CONFIG_HOTPLUG_CPU is not set
153CONFIG_KEXEC=y 157CONFIG_KEXEC=y
158# CONFIG_CRASH_DUMP is not set
154CONFIG_IRQ_ALL_CPUS=y 159CONFIG_IRQ_ALL_CPUS=y
155# CONFIG_NUMA is not set 160# CONFIG_NUMA is not set
156CONFIG_ARCH_SELECT_MEMORY_MODEL=y 161CONFIG_ARCH_SELECT_MEMORY_MODEL=y
@@ -202,6 +207,7 @@ CONFIG_NET=y
202# 207#
203# Networking options 208# Networking options
204# 209#
210# CONFIG_NETDEBUG is not set
205CONFIG_PACKET=y 211CONFIG_PACKET=y
206# CONFIG_PACKET_MMAP is not set 212# CONFIG_PACKET_MMAP is not set
207CONFIG_UNIX=y 213CONFIG_UNIX=y
@@ -239,6 +245,7 @@ CONFIG_NETFILTER=y
239# Core Netfilter Configuration 245# Core Netfilter Configuration
240# 246#
241# CONFIG_NETFILTER_NETLINK is not set 247# CONFIG_NETFILTER_NETLINK is not set
248# CONFIG_NETFILTER_XTABLES is not set
242 249
243# 250#
244# IP: Netfilter Configuration 251# IP: Netfilter Configuration
@@ -255,65 +262,6 @@ CONFIG_IP_NF_TFTP=m
255CONFIG_IP_NF_AMANDA=m 262CONFIG_IP_NF_AMANDA=m
256# CONFIG_IP_NF_PPTP is not set 263# CONFIG_IP_NF_PPTP is not set
257CONFIG_IP_NF_QUEUE=m 264CONFIG_IP_NF_QUEUE=m
258CONFIG_IP_NF_IPTABLES=m
259CONFIG_IP_NF_MATCH_LIMIT=m
260CONFIG_IP_NF_MATCH_IPRANGE=m
261CONFIG_IP_NF_MATCH_MAC=m
262CONFIG_IP_NF_MATCH_PKTTYPE=m
263CONFIG_IP_NF_MATCH_MARK=m
264CONFIG_IP_NF_MATCH_MULTIPORT=m
265CONFIG_IP_NF_MATCH_TOS=m
266CONFIG_IP_NF_MATCH_RECENT=m
267CONFIG_IP_NF_MATCH_ECN=m
268CONFIG_IP_NF_MATCH_DSCP=m
269CONFIG_IP_NF_MATCH_AH_ESP=m
270CONFIG_IP_NF_MATCH_LENGTH=m
271CONFIG_IP_NF_MATCH_TTL=m
272CONFIG_IP_NF_MATCH_TCPMSS=m
273CONFIG_IP_NF_MATCH_HELPER=m
274CONFIG_IP_NF_MATCH_STATE=m
275CONFIG_IP_NF_MATCH_CONNTRACK=m
276CONFIG_IP_NF_MATCH_OWNER=m
277CONFIG_IP_NF_MATCH_ADDRTYPE=m
278CONFIG_IP_NF_MATCH_REALM=m
279CONFIG_IP_NF_MATCH_SCTP=m
280# CONFIG_IP_NF_MATCH_DCCP is not set
281CONFIG_IP_NF_MATCH_COMMENT=m
282CONFIG_IP_NF_MATCH_CONNMARK=m
283CONFIG_IP_NF_MATCH_CONNBYTES=m
284CONFIG_IP_NF_MATCH_HASHLIMIT=m
285CONFIG_IP_NF_MATCH_STRING=m
286CONFIG_IP_NF_FILTER=m
287CONFIG_IP_NF_TARGET_REJECT=m
288CONFIG_IP_NF_TARGET_LOG=m
289CONFIG_IP_NF_TARGET_ULOG=m
290CONFIG_IP_NF_TARGET_TCPMSS=m
291CONFIG_IP_NF_TARGET_NFQUEUE=m
292CONFIG_IP_NF_NAT=m
293CONFIG_IP_NF_NAT_NEEDED=y
294CONFIG_IP_NF_TARGET_MASQUERADE=m
295CONFIG_IP_NF_TARGET_REDIRECT=m
296CONFIG_IP_NF_TARGET_NETMAP=m
297CONFIG_IP_NF_TARGET_SAME=m
298CONFIG_IP_NF_NAT_SNMP_BASIC=m
299CONFIG_IP_NF_NAT_IRC=m
300CONFIG_IP_NF_NAT_FTP=m
301CONFIG_IP_NF_NAT_TFTP=m
302CONFIG_IP_NF_NAT_AMANDA=m
303CONFIG_IP_NF_MANGLE=m
304CONFIG_IP_NF_TARGET_TOS=m
305CONFIG_IP_NF_TARGET_ECN=m
306CONFIG_IP_NF_TARGET_DSCP=m
307CONFIG_IP_NF_TARGET_MARK=m
308CONFIG_IP_NF_TARGET_CLASSIFY=m
309CONFIG_IP_NF_TARGET_TTL=m
310CONFIG_IP_NF_TARGET_CONNMARK=m
311CONFIG_IP_NF_TARGET_CLUSTERIP=m
312CONFIG_IP_NF_RAW=m
313CONFIG_IP_NF_TARGET_NOTRACK=m
314CONFIG_IP_NF_ARPTABLES=m
315CONFIG_IP_NF_ARPFILTER=m
316CONFIG_IP_NF_ARP_MANGLE=m
317 265
318# 266#
319# DCCP Configuration (EXPERIMENTAL) 267# DCCP Configuration (EXPERIMENTAL)
@@ -324,6 +272,11 @@ CONFIG_IP_NF_ARP_MANGLE=m
324# SCTP Configuration (EXPERIMENTAL) 272# SCTP Configuration (EXPERIMENTAL)
325# 273#
326# CONFIG_IP_SCTP is not set 274# CONFIG_IP_SCTP is not set
275
276#
277# TIPC Configuration (EXPERIMENTAL)
278#
279# CONFIG_TIPC is not set
327# CONFIG_ATM is not set 280# CONFIG_ATM is not set
328# CONFIG_BRIDGE is not set 281# CONFIG_BRIDGE is not set
329# CONFIG_VLAN_8021Q is not set 282# CONFIG_VLAN_8021Q is not set
@@ -342,7 +295,6 @@ CONFIG_LLC=y
342# QoS and/or fair queueing 295# QoS and/or fair queueing
343# 296#
344# CONFIG_NET_SCHED is not set 297# CONFIG_NET_SCHED is not set
345CONFIG_NET_CLS_ROUTE=y
346 298
347# 299#
348# Network testing 300# Network testing
@@ -545,13 +497,7 @@ CONFIG_SCSI_SATA_SVW=y
545# CONFIG_SCSI_IPR is not set 497# CONFIG_SCSI_IPR is not set
546# CONFIG_SCSI_QLOGIC_FC is not set 498# CONFIG_SCSI_QLOGIC_FC is not set
547# CONFIG_SCSI_QLOGIC_1280 is not set 499# CONFIG_SCSI_QLOGIC_1280 is not set
548CONFIG_SCSI_QLA2XXX=y 500# CONFIG_SCSI_QLA_FC is not set
549# CONFIG_SCSI_QLA21XX is not set
550# CONFIG_SCSI_QLA22XX is not set
551# CONFIG_SCSI_QLA2300 is not set
552# CONFIG_SCSI_QLA2322 is not set
553# CONFIG_SCSI_QLA6312 is not set
554# CONFIG_SCSI_QLA24XX is not set
555# CONFIG_SCSI_LPFC is not set 501# CONFIG_SCSI_LPFC is not set
556# CONFIG_SCSI_DC395x is not set 502# CONFIG_SCSI_DC395x is not set
557# CONFIG_SCSI_DC390T is not set 503# CONFIG_SCSI_DC390T is not set
@@ -614,7 +560,6 @@ CONFIG_IEEE1394_SBP2=m
614CONFIG_IEEE1394_ETH1394=m 560CONFIG_IEEE1394_ETH1394=m
615CONFIG_IEEE1394_DV1394=m 561CONFIG_IEEE1394_DV1394=m
616CONFIG_IEEE1394_RAWIO=y 562CONFIG_IEEE1394_RAWIO=y
617# CONFIG_IEEE1394_CMP is not set
618 563
619# 564#
620# I2O device support 565# I2O device support
@@ -630,6 +575,7 @@ CONFIG_THERM_PM72=y
630CONFIG_WINDFARM=y 575CONFIG_WINDFARM=y
631CONFIG_WINDFARM_PM81=y 576CONFIG_WINDFARM_PM81=y
632CONFIG_WINDFARM_PM91=y 577CONFIG_WINDFARM_PM91=y
578CONFIG_WINDFARM_PM112=y
633 579
634# 580#
635# Network device support 581# Network device support
@@ -682,8 +628,9 @@ CONFIG_E1000=y
682# CONFIG_R8169 is not set 628# CONFIG_R8169 is not set
683# CONFIG_SIS190 is not set 629# CONFIG_SIS190 is not set
684# CONFIG_SKGE is not set 630# CONFIG_SKGE is not set
631# CONFIG_SKY2 is not set
685# CONFIG_SK98LIN is not set 632# CONFIG_SK98LIN is not set
686CONFIG_TIGON3=m 633CONFIG_TIGON3=y
687# CONFIG_BNX2 is not set 634# CONFIG_BNX2 is not set
688# CONFIG_MV643XX_ETH is not set 635# CONFIG_MV643XX_ETH is not set
689 636
@@ -861,8 +808,7 @@ CONFIG_I2C_ALGOBIT=y
861# CONFIG_I2C_I801 is not set 808# CONFIG_I2C_I801 is not set
862# CONFIG_I2C_I810 is not set 809# CONFIG_I2C_I810 is not set
863# CONFIG_I2C_PIIX4 is not set 810# CONFIG_I2C_PIIX4 is not set
864CONFIG_I2C_KEYWEST=y 811CONFIG_I2C_POWERMAC=y
865CONFIG_I2C_PMAC_SMU=y
866# CONFIG_I2C_NFORCE2 is not set 812# CONFIG_I2C_NFORCE2 is not set
867# CONFIG_I2C_PARPORT_LIGHT is not set 813# CONFIG_I2C_PARPORT_LIGHT is not set
868# CONFIG_I2C_PROSAVAGE is not set 814# CONFIG_I2C_PROSAVAGE is not set
@@ -895,6 +841,12 @@ CONFIG_I2C_PMAC_SMU=y
895# CONFIG_I2C_DEBUG_CHIP is not set 841# CONFIG_I2C_DEBUG_CHIP is not set
896 842
897# 843#
844# SPI support
845#
846# CONFIG_SPI is not set
847# CONFIG_SPI_MASTER is not set
848
849#
898# Dallas's 1-wire bus 850# Dallas's 1-wire bus
899# 851#
900# CONFIG_W1 is not set 852# CONFIG_W1 is not set
@@ -961,7 +913,6 @@ CONFIG_FB_RADEON_I2C=y
961# CONFIG_FB_KYRO is not set 913# CONFIG_FB_KYRO is not set
962# CONFIG_FB_3DFX is not set 914# CONFIG_FB_3DFX is not set
963# CONFIG_FB_VOODOO1 is not set 915# CONFIG_FB_VOODOO1 is not set
964# CONFIG_FB_CYBLA is not set
965# CONFIG_FB_TRIDENT is not set 916# CONFIG_FB_TRIDENT is not set
966# CONFIG_FB_VIRTUAL is not set 917# CONFIG_FB_VIRTUAL is not set
967 918
@@ -1008,9 +959,10 @@ CONFIG_SND_OSSEMUL=y
1008CONFIG_SND_MIXER_OSS=m 959CONFIG_SND_MIXER_OSS=m
1009CONFIG_SND_PCM_OSS=m 960CONFIG_SND_PCM_OSS=m
1010CONFIG_SND_SEQUENCER_OSS=y 961CONFIG_SND_SEQUENCER_OSS=y
962# CONFIG_SND_DYNAMIC_MINORS is not set
963CONFIG_SND_SUPPORT_OLD_API=y
1011# CONFIG_SND_VERBOSE_PRINTK is not set 964# CONFIG_SND_VERBOSE_PRINTK is not set
1012# CONFIG_SND_DEBUG is not set 965# CONFIG_SND_DEBUG is not set
1013CONFIG_SND_GENERIC_DRIVER=y
1014 966
1015# 967#
1016# Generic devices 968# Generic devices
@@ -1024,6 +976,8 @@ CONFIG_SND_GENERIC_DRIVER=y
1024# 976#
1025# PCI devices 977# PCI devices
1026# 978#
979# CONFIG_SND_AD1889 is not set
980# CONFIG_SND_ALS4000 is not set
1027# CONFIG_SND_ALI5451 is not set 981# CONFIG_SND_ALI5451 is not set
1028# CONFIG_SND_ATIIXP is not set 982# CONFIG_SND_ATIIXP is not set
1029# CONFIG_SND_ATIIXP_MODEM is not set 983# CONFIG_SND_ATIIXP_MODEM is not set
@@ -1032,39 +986,38 @@ CONFIG_SND_GENERIC_DRIVER=y
1032# CONFIG_SND_AU8830 is not set 986# CONFIG_SND_AU8830 is not set
1033# CONFIG_SND_AZT3328 is not set 987# CONFIG_SND_AZT3328 is not set
1034# CONFIG_SND_BT87X is not set 988# CONFIG_SND_BT87X is not set
1035# CONFIG_SND_CS46XX is not set 989# CONFIG_SND_CA0106 is not set
990# CONFIG_SND_CMIPCI is not set
1036# CONFIG_SND_CS4281 is not set 991# CONFIG_SND_CS4281 is not set
992# CONFIG_SND_CS46XX is not set
1037# CONFIG_SND_EMU10K1 is not set 993# CONFIG_SND_EMU10K1 is not set
1038# CONFIG_SND_EMU10K1X is not set 994# CONFIG_SND_EMU10K1X is not set
1039# CONFIG_SND_CA0106 is not set
1040# CONFIG_SND_KORG1212 is not set
1041# CONFIG_SND_MIXART is not set
1042# CONFIG_SND_NM256 is not set
1043# CONFIG_SND_RME32 is not set
1044# CONFIG_SND_RME96 is not set
1045# CONFIG_SND_RME9652 is not set
1046# CONFIG_SND_HDSP is not set
1047# CONFIG_SND_HDSPM is not set
1048# CONFIG_SND_TRIDENT is not set
1049# CONFIG_SND_YMFPCI is not set
1050# CONFIG_SND_AD1889 is not set
1051# CONFIG_SND_ALS4000 is not set
1052# CONFIG_SND_CMIPCI is not set
1053# CONFIG_SND_ENS1370 is not set 995# CONFIG_SND_ENS1370 is not set
1054# CONFIG_SND_ENS1371 is not set 996# CONFIG_SND_ENS1371 is not set
1055# CONFIG_SND_ES1938 is not set 997# CONFIG_SND_ES1938 is not set
1056# CONFIG_SND_ES1968 is not set 998# CONFIG_SND_ES1968 is not set
1057# CONFIG_SND_MAESTRO3 is not set
1058# CONFIG_SND_FM801 is not set 999# CONFIG_SND_FM801 is not set
1000# CONFIG_SND_HDA_INTEL is not set
1001# CONFIG_SND_HDSP is not set
1002# CONFIG_SND_HDSPM is not set
1059# CONFIG_SND_ICE1712 is not set 1003# CONFIG_SND_ICE1712 is not set
1060# CONFIG_SND_ICE1724 is not set 1004# CONFIG_SND_ICE1724 is not set
1061# CONFIG_SND_INTEL8X0 is not set 1005# CONFIG_SND_INTEL8X0 is not set
1062# CONFIG_SND_INTEL8X0M is not set 1006# CONFIG_SND_INTEL8X0M is not set
1007# CONFIG_SND_KORG1212 is not set
1008# CONFIG_SND_MAESTRO3 is not set
1009# CONFIG_SND_MIXART is not set
1010# CONFIG_SND_NM256 is not set
1011# CONFIG_SND_PCXHR is not set
1012# CONFIG_SND_RME32 is not set
1013# CONFIG_SND_RME96 is not set
1014# CONFIG_SND_RME9652 is not set
1063# CONFIG_SND_SONICVIBES is not set 1015# CONFIG_SND_SONICVIBES is not set
1016# CONFIG_SND_TRIDENT is not set
1064# CONFIG_SND_VIA82XX is not set 1017# CONFIG_SND_VIA82XX is not set
1065# CONFIG_SND_VIA82XX_MODEM is not set 1018# CONFIG_SND_VIA82XX_MODEM is not set
1066# CONFIG_SND_VX222 is not set 1019# CONFIG_SND_VX222 is not set
1067# CONFIG_SND_HDA_INTEL is not set 1020# CONFIG_SND_YMFPCI is not set
1068 1021
1069# 1022#
1070# ALSA PowerMac devices 1023# ALSA PowerMac devices
@@ -1136,13 +1089,16 @@ CONFIG_USB_STORAGE_DPCM=y
1136CONFIG_USB_STORAGE_SDDR09=y 1089CONFIG_USB_STORAGE_SDDR09=y
1137CONFIG_USB_STORAGE_SDDR55=y 1090CONFIG_USB_STORAGE_SDDR55=y
1138CONFIG_USB_STORAGE_JUMPSHOT=y 1091CONFIG_USB_STORAGE_JUMPSHOT=y
1092# CONFIG_USB_STORAGE_ALAUDA is not set
1139# CONFIG_USB_STORAGE_ONETOUCH is not set 1093# CONFIG_USB_STORAGE_ONETOUCH is not set
1094# CONFIG_USB_LIBUSUAL is not set
1140 1095
1141# 1096#
1142# USB Input Devices 1097# USB Input Devices
1143# 1098#
1144CONFIG_USB_HID=y 1099CONFIG_USB_HID=y
1145CONFIG_USB_HIDINPUT=y 1100CONFIG_USB_HIDINPUT=y
1101# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1146CONFIG_HID_FF=y 1102CONFIG_HID_FF=y
1147CONFIG_HID_PID=y 1103CONFIG_HID_PID=y
1148CONFIG_LOGITECH_FF=y 1104CONFIG_LOGITECH_FF=y
@@ -1159,6 +1115,7 @@ CONFIG_USB_HIDDEV=y
1159# CONFIG_USB_YEALINK is not set 1115# CONFIG_USB_YEALINK is not set
1160# CONFIG_USB_XPAD is not set 1116# CONFIG_USB_XPAD is not set
1161# CONFIG_USB_ATI_REMOTE is not set 1117# CONFIG_USB_ATI_REMOTE is not set
1118# CONFIG_USB_ATI_REMOTE2 is not set
1162# CONFIG_USB_KEYSPAN_REMOTE is not set 1119# CONFIG_USB_KEYSPAN_REMOTE is not set
1163# CONFIG_USB_APPLETOUCH is not set 1120# CONFIG_USB_APPLETOUCH is not set
1164 1121
@@ -1207,6 +1164,7 @@ CONFIG_USB_SERIAL_GENERIC=y
1207# CONFIG_USB_SERIAL_AIRPRIME is not set 1164# CONFIG_USB_SERIAL_AIRPRIME is not set
1208# CONFIG_USB_SERIAL_ANYDATA is not set 1165# CONFIG_USB_SERIAL_ANYDATA is not set
1209CONFIG_USB_SERIAL_BELKIN=m 1166CONFIG_USB_SERIAL_BELKIN=m
1167# CONFIG_USB_SERIAL_WHITEHEAT is not set
1210CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m 1168CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
1211# CONFIG_USB_SERIAL_CP2101 is not set 1169# CONFIG_USB_SERIAL_CP2101 is not set
1212CONFIG_USB_SERIAL_CYPRESS_M8=m 1170CONFIG_USB_SERIAL_CYPRESS_M8=m
@@ -1288,6 +1246,10 @@ CONFIG_USB_EZUSB=y
1288# 1246#
1289 1247
1290# 1248#
1249# EDAC - error detection and reporting (RAS)
1250#
1251
1252#
1291# File systems 1253# File systems
1292# 1254#
1293CONFIG_EXT2_FS=y 1255CONFIG_EXT2_FS=y
@@ -1317,6 +1279,7 @@ CONFIG_XFS_EXPORT=y
1317CONFIG_XFS_SECURITY=y 1279CONFIG_XFS_SECURITY=y
1318CONFIG_XFS_POSIX_ACL=y 1280CONFIG_XFS_POSIX_ACL=y
1319# CONFIG_XFS_RT is not set 1281# CONFIG_XFS_RT is not set
1282# CONFIG_OCFS2_FS is not set
1320# CONFIG_MINIX_FS is not set 1283# CONFIG_MINIX_FS is not set
1321# CONFIG_ROMFS_FS is not set 1284# CONFIG_ROMFS_FS is not set
1322CONFIG_INOTIFY=y 1285CONFIG_INOTIFY=y
@@ -1357,6 +1320,7 @@ CONFIG_HUGETLBFS=y
1357CONFIG_HUGETLB_PAGE=y 1320CONFIG_HUGETLB_PAGE=y
1358CONFIG_RAMFS=y 1321CONFIG_RAMFS=y
1359# CONFIG_RELAYFS_FS is not set 1322# CONFIG_RELAYFS_FS is not set
1323# CONFIG_CONFIGFS_FS is not set
1360 1324
1361# 1325#
1362# Miscellaneous filesystems 1326# Miscellaneous filesystems
@@ -1426,6 +1390,7 @@ CONFIG_MSDOS_PARTITION=y
1426# CONFIG_SGI_PARTITION is not set 1390# CONFIG_SGI_PARTITION is not set
1427# CONFIG_ULTRIX_PARTITION is not set 1391# CONFIG_ULTRIX_PARTITION is not set
1428# CONFIG_SUN_PARTITION is not set 1392# CONFIG_SUN_PARTITION is not set
1393# CONFIG_KARMA_PARTITION is not set
1429# CONFIG_EFI_PARTITION is not set 1394# CONFIG_EFI_PARTITION is not set
1430 1395
1431# 1396#
@@ -1481,10 +1446,6 @@ CONFIG_CRC32=y
1481CONFIG_LIBCRC32C=m 1446CONFIG_LIBCRC32C=m
1482CONFIG_ZLIB_INFLATE=y 1447CONFIG_ZLIB_INFLATE=y
1483CONFIG_ZLIB_DEFLATE=m 1448CONFIG_ZLIB_DEFLATE=m
1484CONFIG_TEXTSEARCH=y
1485CONFIG_TEXTSEARCH_KMP=m
1486CONFIG_TEXTSEARCH_BM=m
1487CONFIG_TEXTSEARCH_FSM=m
1488 1449
1489# 1450#
1490# Instrumentation Support 1451# Instrumentation Support
@@ -1497,24 +1458,31 @@ CONFIG_OPROFILE=y
1497# Kernel hacking 1458# Kernel hacking
1498# 1459#
1499# CONFIG_PRINTK_TIME is not set 1460# CONFIG_PRINTK_TIME is not set
1500CONFIG_DEBUG_KERNEL=y
1501CONFIG_MAGIC_SYSRQ=y 1461CONFIG_MAGIC_SYSRQ=y
1462CONFIG_DEBUG_KERNEL=y
1502CONFIG_LOG_BUF_SHIFT=17 1463CONFIG_LOG_BUF_SHIFT=17
1503CONFIG_DETECT_SOFTLOCKUP=y 1464CONFIG_DETECT_SOFTLOCKUP=y
1504# CONFIG_SCHEDSTATS is not set 1465# CONFIG_SCHEDSTATS is not set
1505# CONFIG_DEBUG_SLAB is not set 1466# CONFIG_DEBUG_SLAB is not set
1467CONFIG_DEBUG_MUTEXES=y
1506# CONFIG_DEBUG_SPINLOCK is not set 1468# CONFIG_DEBUG_SPINLOCK is not set
1507# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1469# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1508# CONFIG_DEBUG_KOBJECT is not set 1470# CONFIG_DEBUG_KOBJECT is not set
1509# CONFIG_DEBUG_INFO is not set 1471# CONFIG_DEBUG_INFO is not set
1510CONFIG_DEBUG_FS=y 1472CONFIG_DEBUG_FS=y
1511# CONFIG_DEBUG_VM is not set 1473# CONFIG_DEBUG_VM is not set
1474CONFIG_FORCED_INLINING=y
1512# CONFIG_RCU_TORTURE_TEST is not set 1475# CONFIG_RCU_TORTURE_TEST is not set
1513# CONFIG_DEBUG_STACKOVERFLOW is not set 1476# CONFIG_DEBUG_STACKOVERFLOW is not set
1514# CONFIG_DEBUG_STACK_USAGE is not set 1477# CONFIG_DEBUG_STACK_USAGE is not set
1515# CONFIG_DEBUGGER is not set 1478# CONFIG_DEBUGGER is not set
1516CONFIG_IRQSTACKS=y 1479CONFIG_IRQSTACKS=y
1517CONFIG_BOOTX_TEXT=y 1480CONFIG_BOOTX_TEXT=y
1481# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
1482# CONFIG_PPC_EARLY_DEBUG_G5 is not set
1483# CONFIG_PPC_EARLY_DEBUG_RTAS is not set
1484# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
1485# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
1518 1486
1519# 1487#
1520# Security options 1488# Security options
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig
index 6f6c6bed1aa5..0362a70aa97c 100644
--- a/arch/powerpc/configs/ppc64_defconfig
+++ b/arch/powerpc/configs/ppc64_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15-rc5 3# Linux kernel version: 2.6.16-rc2
4# Tue Dec 20 15:59:38 2005 4# Fri Feb 10 17:32:14 2006
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -16,6 +16,10 @@ CONFIG_COMPAT=y
16CONFIG_SYSVIPC_COMPAT=y 16CONFIG_SYSVIPC_COMPAT=y
17CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 17CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
18CONFIG_ARCH_MAY_HAVE_PC_FDC=y 18CONFIG_ARCH_MAY_HAVE_PC_FDC=y
19CONFIG_PPC_OF=y
20CONFIG_PPC_UDBG_16550=y
21CONFIG_GENERIC_TBSYNC=y
22# CONFIG_DEFAULT_UIMAGE is not set
19 23
20# 24#
21# Processor support 25# Processor support
@@ -33,7 +37,6 @@ CONFIG_NR_CPUS=32
33# Code maturity level options 37# Code maturity level options
34# 38#
35CONFIG_EXPERIMENTAL=y 39CONFIG_EXPERIMENTAL=y
36CONFIG_CLEAN_COMPILE=y
37CONFIG_LOCK_KERNEL=y 40CONFIG_LOCK_KERNEL=y
38CONFIG_INIT_ENV_ARG_LIMIT=32 41CONFIG_INIT_ENV_ARG_LIMIT=32
39 42
@@ -48,8 +51,6 @@ CONFIG_POSIX_MQUEUE=y
48# CONFIG_BSD_PROCESS_ACCT is not set 51# CONFIG_BSD_PROCESS_ACCT is not set
49CONFIG_SYSCTL=y 52CONFIG_SYSCTL=y
50# CONFIG_AUDIT is not set 53# CONFIG_AUDIT is not set
51CONFIG_HOTPLUG=y
52CONFIG_KOBJECT_UEVENT=y
53CONFIG_IKCONFIG=y 54CONFIG_IKCONFIG=y
54CONFIG_IKCONFIG_PROC=y 55CONFIG_IKCONFIG_PROC=y
55CONFIG_CPUSETS=y 56CONFIG_CPUSETS=y
@@ -59,8 +60,10 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
59CONFIG_KALLSYMS=y 60CONFIG_KALLSYMS=y
60CONFIG_KALLSYMS_ALL=y 61CONFIG_KALLSYMS_ALL=y
61# CONFIG_KALLSYMS_EXTRA_PASS is not set 62# CONFIG_KALLSYMS_EXTRA_PASS is not set
63CONFIG_HOTPLUG=y
62CONFIG_PRINTK=y 64CONFIG_PRINTK=y
63CONFIG_BUG=y 65CONFIG_BUG=y
66CONFIG_ELF_CORE=y
64CONFIG_BASE_FULL=y 67CONFIG_BASE_FULL=y
65CONFIG_FUTEX=y 68CONFIG_FUTEX=y
66CONFIG_EPOLL=y 69CONFIG_EPOLL=y
@@ -69,8 +72,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
69CONFIG_CC_ALIGN_LABELS=0 72CONFIG_CC_ALIGN_LABELS=0
70CONFIG_CC_ALIGN_LOOPS=0 73CONFIG_CC_ALIGN_LOOPS=0
71CONFIG_CC_ALIGN_JUMPS=0 74CONFIG_CC_ALIGN_JUMPS=0
75CONFIG_SLAB=y
72# CONFIG_TINY_SHMEM is not set 76# CONFIG_TINY_SHMEM is not set
73CONFIG_BASE_SMALL=0 77CONFIG_BASE_SMALL=0
78# CONFIG_SLOB is not set
74 79
75# 80#
76# Loadable module support 81# Loadable module support
@@ -113,7 +118,6 @@ CONFIG_PPC_PMAC=y
113CONFIG_PPC_PMAC64=y 118CONFIG_PPC_PMAC64=y
114CONFIG_PPC_MAPLE=y 119CONFIG_PPC_MAPLE=y
115# CONFIG_PPC_CELL is not set 120# CONFIG_PPC_CELL is not set
116CONFIG_PPC_OF=y
117CONFIG_XICS=y 121CONFIG_XICS=y
118CONFIG_U3_DART=y 122CONFIG_U3_DART=y
119CONFIG_MPIC=y 123CONFIG_MPIC=y
@@ -124,8 +128,8 @@ CONFIG_RTAS_FLASH=m
124# CONFIG_MMIO_NVRAM is not set 128# CONFIG_MMIO_NVRAM is not set
125CONFIG_MPIC_BROKEN_U3=y 129CONFIG_MPIC_BROKEN_U3=y
126CONFIG_IBMVIO=y 130CONFIG_IBMVIO=y
131# CONFIG_IBMEBUS is not set
127# CONFIG_PPC_MPC106 is not set 132# CONFIG_PPC_MPC106 is not set
128CONFIG_GENERIC_TBSYNC=y
129CONFIG_CPU_FREQ=y 133CONFIG_CPU_FREQ=y
130CONFIG_CPU_FREQ_TABLE=y 134CONFIG_CPU_FREQ_TABLE=y
131# CONFIG_CPU_FREQ_DEBUG is not set 135# CONFIG_CPU_FREQ_DEBUG is not set
@@ -158,6 +162,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13
158CONFIG_IOMMU_VMERGE=y 162CONFIG_IOMMU_VMERGE=y
159CONFIG_HOTPLUG_CPU=y 163CONFIG_HOTPLUG_CPU=y
160CONFIG_KEXEC=y 164CONFIG_KEXEC=y
165# CONFIG_CRASH_DUMP is not set
161CONFIG_IRQ_ALL_CPUS=y 166CONFIG_IRQ_ALL_CPUS=y
162CONFIG_PPC_SPLPAR=y 167CONFIG_PPC_SPLPAR=y
163CONFIG_EEH=y 168CONFIG_EEH=y
@@ -178,6 +183,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y
178CONFIG_SPARSEMEM_EXTREME=y 183CONFIG_SPARSEMEM_EXTREME=y
179# CONFIG_MEMORY_HOTPLUG is not set 184# CONFIG_MEMORY_HOTPLUG is not set
180CONFIG_SPLIT_PTLOCK_CPUS=4 185CONFIG_SPLIT_PTLOCK_CPUS=4
186CONFIG_MIGRATION=y
181# CONFIG_PPC_64K_PAGES is not set 187# CONFIG_PPC_64K_PAGES is not set
182# CONFIG_SCHED_SMT is not set 188# CONFIG_SCHED_SMT is not set
183CONFIG_PROC_DEVICETREE=y 189CONFIG_PROC_DEVICETREE=y
@@ -221,6 +227,7 @@ CONFIG_NET=y
221# 227#
222# Networking options 228# Networking options
223# 229#
230# CONFIG_NETDEBUG is not set
224CONFIG_PACKET=y 231CONFIG_PACKET=y
225# CONFIG_PACKET_MMAP is not set 232# CONFIG_PACKET_MMAP is not set
226CONFIG_UNIX=y 233CONFIG_UNIX=y
@@ -260,6 +267,7 @@ CONFIG_NETFILTER=y
260CONFIG_NETFILTER_NETLINK=y 267CONFIG_NETFILTER_NETLINK=y
261CONFIG_NETFILTER_NETLINK_QUEUE=m 268CONFIG_NETFILTER_NETLINK_QUEUE=m
262CONFIG_NETFILTER_NETLINK_LOG=m 269CONFIG_NETFILTER_NETLINK_LOG=m
270# CONFIG_NETFILTER_XTABLES is not set
263 271
264# 272#
265# IP: Netfilter Configuration 273# IP: Netfilter Configuration
@@ -277,65 +285,6 @@ CONFIG_IP_NF_TFTP=m
277CONFIG_IP_NF_AMANDA=m 285CONFIG_IP_NF_AMANDA=m
278# CONFIG_IP_NF_PPTP is not set 286# CONFIG_IP_NF_PPTP is not set
279CONFIG_IP_NF_QUEUE=m 287CONFIG_IP_NF_QUEUE=m
280CONFIG_IP_NF_IPTABLES=m
281CONFIG_IP_NF_MATCH_LIMIT=m
282CONFIG_IP_NF_MATCH_IPRANGE=m
283CONFIG_IP_NF_MATCH_MAC=m
284CONFIG_IP_NF_MATCH_PKTTYPE=m
285CONFIG_IP_NF_MATCH_MARK=m
286CONFIG_IP_NF_MATCH_MULTIPORT=m
287CONFIG_IP_NF_MATCH_TOS=m
288CONFIG_IP_NF_MATCH_RECENT=m
289CONFIG_IP_NF_MATCH_ECN=m
290CONFIG_IP_NF_MATCH_DSCP=m
291CONFIG_IP_NF_MATCH_AH_ESP=m
292CONFIG_IP_NF_MATCH_LENGTH=m
293CONFIG_IP_NF_MATCH_TTL=m
294CONFIG_IP_NF_MATCH_TCPMSS=m
295CONFIG_IP_NF_MATCH_HELPER=m
296CONFIG_IP_NF_MATCH_STATE=m
297CONFIG_IP_NF_MATCH_CONNTRACK=m
298CONFIG_IP_NF_MATCH_OWNER=m
299CONFIG_IP_NF_MATCH_ADDRTYPE=m
300CONFIG_IP_NF_MATCH_REALM=m
301CONFIG_IP_NF_MATCH_SCTP=m
302CONFIG_IP_NF_MATCH_DCCP=m
303CONFIG_IP_NF_MATCH_COMMENT=m
304CONFIG_IP_NF_MATCH_CONNMARK=m
305CONFIG_IP_NF_MATCH_CONNBYTES=m
306CONFIG_IP_NF_MATCH_HASHLIMIT=m
307CONFIG_IP_NF_MATCH_STRING=m
308CONFIG_IP_NF_FILTER=m
309CONFIG_IP_NF_TARGET_REJECT=m
310CONFIG_IP_NF_TARGET_LOG=m
311CONFIG_IP_NF_TARGET_ULOG=m
312CONFIG_IP_NF_TARGET_TCPMSS=m
313CONFIG_IP_NF_TARGET_NFQUEUE=m
314CONFIG_IP_NF_NAT=m
315CONFIG_IP_NF_NAT_NEEDED=y
316CONFIG_IP_NF_TARGET_MASQUERADE=m
317CONFIG_IP_NF_TARGET_REDIRECT=m
318CONFIG_IP_NF_TARGET_NETMAP=m
319CONFIG_IP_NF_TARGET_SAME=m
320CONFIG_IP_NF_NAT_SNMP_BASIC=m
321CONFIG_IP_NF_NAT_IRC=m
322CONFIG_IP_NF_NAT_FTP=m
323CONFIG_IP_NF_NAT_TFTP=m
324CONFIG_IP_NF_NAT_AMANDA=m
325CONFIG_IP_NF_MANGLE=m
326CONFIG_IP_NF_TARGET_TOS=m
327CONFIG_IP_NF_TARGET_ECN=m
328CONFIG_IP_NF_TARGET_DSCP=m
329CONFIG_IP_NF_TARGET_MARK=m
330CONFIG_IP_NF_TARGET_CLASSIFY=m
331CONFIG_IP_NF_TARGET_TTL=m
332CONFIG_IP_NF_TARGET_CONNMARK=m
333CONFIG_IP_NF_TARGET_CLUSTERIP=m
334CONFIG_IP_NF_RAW=m
335CONFIG_IP_NF_TARGET_NOTRACK=m
336CONFIG_IP_NF_ARPTABLES=m
337CONFIG_IP_NF_ARPFILTER=m
338CONFIG_IP_NF_ARP_MANGLE=m
339 288
340# 289#
341# DCCP Configuration (EXPERIMENTAL) 290# DCCP Configuration (EXPERIMENTAL)
@@ -346,6 +295,11 @@ CONFIG_IP_NF_ARP_MANGLE=m
346# SCTP Configuration (EXPERIMENTAL) 295# SCTP Configuration (EXPERIMENTAL)
347# 296#
348# CONFIG_IP_SCTP is not set 297# CONFIG_IP_SCTP is not set
298
299#
300# TIPC Configuration (EXPERIMENTAL)
301#
302# CONFIG_TIPC is not set
349# CONFIG_ATM is not set 303# CONFIG_ATM is not set
350# CONFIG_BRIDGE is not set 304# CONFIG_BRIDGE is not set
351# CONFIG_VLAN_8021Q is not set 305# CONFIG_VLAN_8021Q is not set
@@ -364,7 +318,6 @@ CONFIG_LLC=y
364# QoS and/or fair queueing 318# QoS and/or fair queueing
365# 319#
366# CONFIG_NET_SCHED is not set 320# CONFIG_NET_SCHED is not set
367CONFIG_NET_CLS_ROUTE=y
368 321
369# 322#
370# Network testing 323# Network testing
@@ -572,13 +525,7 @@ CONFIG_SCSI_IPR_TRACE=y
572CONFIG_SCSI_IPR_DUMP=y 525CONFIG_SCSI_IPR_DUMP=y
573# CONFIG_SCSI_QLOGIC_FC is not set 526# CONFIG_SCSI_QLOGIC_FC is not set
574# CONFIG_SCSI_QLOGIC_1280 is not set 527# CONFIG_SCSI_QLOGIC_1280 is not set
575CONFIG_SCSI_QLA2XXX=y 528# CONFIG_SCSI_QLA_FC is not set
576CONFIG_SCSI_QLA21XX=m
577CONFIG_SCSI_QLA22XX=m
578CONFIG_SCSI_QLA2300=m
579CONFIG_SCSI_QLA2322=m
580CONFIG_SCSI_QLA6312=m
581CONFIG_SCSI_QLA24XX=m
582CONFIG_SCSI_LPFC=m 529CONFIG_SCSI_LPFC=m
583# CONFIG_SCSI_DC395x is not set 530# CONFIG_SCSI_DC395x is not set
584# CONFIG_SCSI_DC390T is not set 531# CONFIG_SCSI_DC390T is not set
@@ -642,8 +589,6 @@ CONFIG_IEEE1394_SBP2=m
642CONFIG_IEEE1394_ETH1394=m 589CONFIG_IEEE1394_ETH1394=m
643CONFIG_IEEE1394_DV1394=m 590CONFIG_IEEE1394_DV1394=m
644CONFIG_IEEE1394_RAWIO=y 591CONFIG_IEEE1394_RAWIO=y
645CONFIG_IEEE1394_CMP=m
646CONFIG_IEEE1394_AMDTP=m
647 592
648# 593#
649# I2O device support 594# I2O device support
@@ -659,6 +604,7 @@ CONFIG_THERM_PM72=y
659CONFIG_WINDFARM=y 604CONFIG_WINDFARM=y
660CONFIG_WINDFARM_PM81=y 605CONFIG_WINDFARM_PM81=y
661CONFIG_WINDFARM_PM91=y 606CONFIG_WINDFARM_PM91=y
607CONFIG_WINDFARM_PM112=y
662 608
663# 609#
664# Network device support 610# Network device support
@@ -731,6 +677,7 @@ CONFIG_E1000=y
731# CONFIG_R8169 is not set 677# CONFIG_R8169 is not set
732# CONFIG_SIS190 is not set 678# CONFIG_SIS190 is not set
733# CONFIG_SKGE is not set 679# CONFIG_SKGE is not set
680# CONFIG_SKY2 is not set
734# CONFIG_SK98LIN is not set 681# CONFIG_SK98LIN is not set
735# CONFIG_VIA_VELOCITY is not set 682# CONFIG_VIA_VELOCITY is not set
736CONFIG_TIGON3=y 683CONFIG_TIGON3=y
@@ -853,6 +800,7 @@ CONFIG_HW_CONSOLE=y
853CONFIG_SERIAL_8250=y 800CONFIG_SERIAL_8250=y
854CONFIG_SERIAL_8250_CONSOLE=y 801CONFIG_SERIAL_8250_CONSOLE=y
855CONFIG_SERIAL_8250_NR_UARTS=4 802CONFIG_SERIAL_8250_NR_UARTS=4
803CONFIG_SERIAL_8250_RUNTIME_UARTS=4
856# CONFIG_SERIAL_8250_EXTENDED is not set 804# CONFIG_SERIAL_8250_EXTENDED is not set
857 805
858# 806#
@@ -880,6 +828,7 @@ CONFIG_HVCS=m
880# CONFIG_WATCHDOG is not set 828# CONFIG_WATCHDOG is not set
881# CONFIG_RTC is not set 829# CONFIG_RTC is not set
882CONFIG_GEN_RTC=y 830CONFIG_GEN_RTC=y
831# CONFIG_GEN_RTC_X is not set
883# CONFIG_DTLK is not set 832# CONFIG_DTLK is not set
884# CONFIG_R3964 is not set 833# CONFIG_R3964 is not set
885# CONFIG_APPLICOM is not set 834# CONFIG_APPLICOM is not set
@@ -923,8 +872,7 @@ CONFIG_I2C_AMD8111=y
923# CONFIG_I2C_I801 is not set 872# CONFIG_I2C_I801 is not set
924# CONFIG_I2C_I810 is not set 873# CONFIG_I2C_I810 is not set
925# CONFIG_I2C_PIIX4 is not set 874# CONFIG_I2C_PIIX4 is not set
926CONFIG_I2C_KEYWEST=y 875CONFIG_I2C_POWERMAC=y
927CONFIG_I2C_PMAC_SMU=y
928# CONFIG_I2C_NFORCE2 is not set 876# CONFIG_I2C_NFORCE2 is not set
929# CONFIG_I2C_PARPORT_LIGHT is not set 877# CONFIG_I2C_PARPORT_LIGHT is not set
930# CONFIG_I2C_PROSAVAGE is not set 878# CONFIG_I2C_PROSAVAGE is not set
@@ -957,6 +905,12 @@ CONFIG_I2C_PMAC_SMU=y
957# CONFIG_I2C_DEBUG_CHIP is not set 905# CONFIG_I2C_DEBUG_CHIP is not set
958 906
959# 907#
908# SPI support
909#
910# CONFIG_SPI is not set
911# CONFIG_SPI_MASTER is not set
912
913#
960# Dallas's 1-wire bus 914# Dallas's 1-wire bus
961# 915#
962# CONFIG_W1 is not set 916# CONFIG_W1 is not set
@@ -1028,7 +982,6 @@ CONFIG_FB_RADEON_I2C=y
1028# CONFIG_FB_KYRO is not set 982# CONFIG_FB_KYRO is not set
1029# CONFIG_FB_3DFX is not set 983# CONFIG_FB_3DFX is not set
1030# CONFIG_FB_VOODOO1 is not set 984# CONFIG_FB_VOODOO1 is not set
1031# CONFIG_FB_CYBLA is not set
1032# CONFIG_FB_TRIDENT is not set 985# CONFIG_FB_TRIDENT is not set
1033# CONFIG_FB_VIRTUAL is not set 986# CONFIG_FB_VIRTUAL is not set
1034 987
@@ -1073,9 +1026,10 @@ CONFIG_SND_OSSEMUL=y
1073CONFIG_SND_MIXER_OSS=m 1026CONFIG_SND_MIXER_OSS=m
1074CONFIG_SND_PCM_OSS=m 1027CONFIG_SND_PCM_OSS=m
1075CONFIG_SND_SEQUENCER_OSS=y 1028CONFIG_SND_SEQUENCER_OSS=y
1029# CONFIG_SND_DYNAMIC_MINORS is not set
1030CONFIG_SND_SUPPORT_OLD_API=y
1076# CONFIG_SND_VERBOSE_PRINTK is not set 1031# CONFIG_SND_VERBOSE_PRINTK is not set
1077# CONFIG_SND_DEBUG is not set 1032# CONFIG_SND_DEBUG is not set
1078CONFIG_SND_GENERIC_DRIVER=y
1079 1033
1080# 1034#
1081# Generic devices 1035# Generic devices
@@ -1089,6 +1043,8 @@ CONFIG_SND_GENERIC_DRIVER=y
1089# 1043#
1090# PCI devices 1044# PCI devices
1091# 1045#
1046# CONFIG_SND_AD1889 is not set
1047# CONFIG_SND_ALS4000 is not set
1092# CONFIG_SND_ALI5451 is not set 1048# CONFIG_SND_ALI5451 is not set
1093# CONFIG_SND_ATIIXP is not set 1049# CONFIG_SND_ATIIXP is not set
1094# CONFIG_SND_ATIIXP_MODEM is not set 1050# CONFIG_SND_ATIIXP_MODEM is not set
@@ -1097,39 +1053,38 @@ CONFIG_SND_GENERIC_DRIVER=y
1097# CONFIG_SND_AU8830 is not set 1053# CONFIG_SND_AU8830 is not set
1098# CONFIG_SND_AZT3328 is not set 1054# CONFIG_SND_AZT3328 is not set
1099# CONFIG_SND_BT87X is not set 1055# CONFIG_SND_BT87X is not set
1100# CONFIG_SND_CS46XX is not set 1056# CONFIG_SND_CA0106 is not set
1057# CONFIG_SND_CMIPCI is not set
1101# CONFIG_SND_CS4281 is not set 1058# CONFIG_SND_CS4281 is not set
1059# CONFIG_SND_CS46XX is not set
1102# CONFIG_SND_EMU10K1 is not set 1060# CONFIG_SND_EMU10K1 is not set
1103# CONFIG_SND_EMU10K1X is not set 1061# CONFIG_SND_EMU10K1X is not set
1104# CONFIG_SND_CA0106 is not set
1105# CONFIG_SND_KORG1212 is not set
1106# CONFIG_SND_MIXART is not set
1107# CONFIG_SND_NM256 is not set
1108# CONFIG_SND_RME32 is not set
1109# CONFIG_SND_RME96 is not set
1110# CONFIG_SND_RME9652 is not set
1111# CONFIG_SND_HDSP is not set
1112# CONFIG_SND_HDSPM is not set
1113# CONFIG_SND_TRIDENT is not set
1114# CONFIG_SND_YMFPCI is not set
1115# CONFIG_SND_AD1889 is not set
1116# CONFIG_SND_ALS4000 is not set
1117# CONFIG_SND_CMIPCI is not set
1118# CONFIG_SND_ENS1370 is not set 1062# CONFIG_SND_ENS1370 is not set
1119# CONFIG_SND_ENS1371 is not set 1063# CONFIG_SND_ENS1371 is not set
1120# CONFIG_SND_ES1938 is not set 1064# CONFIG_SND_ES1938 is not set
1121# CONFIG_SND_ES1968 is not set 1065# CONFIG_SND_ES1968 is not set
1122# CONFIG_SND_MAESTRO3 is not set
1123# CONFIG_SND_FM801 is not set 1066# CONFIG_SND_FM801 is not set
1067# CONFIG_SND_HDA_INTEL is not set
1068# CONFIG_SND_HDSP is not set
1069# CONFIG_SND_HDSPM is not set
1124# CONFIG_SND_ICE1712 is not set 1070# CONFIG_SND_ICE1712 is not set
1125# CONFIG_SND_ICE1724 is not set 1071# CONFIG_SND_ICE1724 is not set
1126# CONFIG_SND_INTEL8X0 is not set 1072# CONFIG_SND_INTEL8X0 is not set
1127# CONFIG_SND_INTEL8X0M is not set 1073# CONFIG_SND_INTEL8X0M is not set
1074# CONFIG_SND_KORG1212 is not set
1075# CONFIG_SND_MAESTRO3 is not set
1076# CONFIG_SND_MIXART is not set
1077# CONFIG_SND_NM256 is not set
1078# CONFIG_SND_PCXHR is not set
1079# CONFIG_SND_RME32 is not set
1080# CONFIG_SND_RME96 is not set
1081# CONFIG_SND_RME9652 is not set
1128# CONFIG_SND_SONICVIBES is not set 1082# CONFIG_SND_SONICVIBES is not set
1083# CONFIG_SND_TRIDENT is not set
1129# CONFIG_SND_VIA82XX is not set 1084# CONFIG_SND_VIA82XX is not set
1130# CONFIG_SND_VIA82XX_MODEM is not set 1085# CONFIG_SND_VIA82XX_MODEM is not set
1131# CONFIG_SND_VX222 is not set 1086# CONFIG_SND_VX222 is not set
1132# CONFIG_SND_HDA_INTEL is not set 1087# CONFIG_SND_YMFPCI is not set
1133 1088
1134# 1089#
1135# ALSA PowerMac devices 1090# ALSA PowerMac devices
@@ -1201,13 +1156,16 @@ CONFIG_USB_STORAGE=m
1201# CONFIG_USB_STORAGE_SDDR09 is not set 1156# CONFIG_USB_STORAGE_SDDR09 is not set
1202# CONFIG_USB_STORAGE_SDDR55 is not set 1157# CONFIG_USB_STORAGE_SDDR55 is not set
1203# CONFIG_USB_STORAGE_JUMPSHOT is not set 1158# CONFIG_USB_STORAGE_JUMPSHOT is not set
1159# CONFIG_USB_STORAGE_ALAUDA is not set
1204# CONFIG_USB_STORAGE_ONETOUCH is not set 1160# CONFIG_USB_STORAGE_ONETOUCH is not set
1161# CONFIG_USB_LIBUSUAL is not set
1205 1162
1206# 1163#
1207# USB Input Devices 1164# USB Input Devices
1208# 1165#
1209CONFIG_USB_HID=y 1166CONFIG_USB_HID=y
1210CONFIG_USB_HIDINPUT=y 1167CONFIG_USB_HIDINPUT=y
1168# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1211# CONFIG_HID_FF is not set 1169# CONFIG_HID_FF is not set
1212CONFIG_USB_HIDDEV=y 1170CONFIG_USB_HIDDEV=y
1213# CONFIG_USB_AIPTEK is not set 1171# CONFIG_USB_AIPTEK is not set
@@ -1221,6 +1179,7 @@ CONFIG_USB_HIDDEV=y
1221# CONFIG_USB_YEALINK is not set 1179# CONFIG_USB_YEALINK is not set
1222# CONFIG_USB_XPAD is not set 1180# CONFIG_USB_XPAD is not set
1223# CONFIG_USB_ATI_REMOTE is not set 1181# CONFIG_USB_ATI_REMOTE is not set
1182# CONFIG_USB_ATI_REMOTE2 is not set
1224# CONFIG_USB_KEYSPAN_REMOTE is not set 1183# CONFIG_USB_KEYSPAN_REMOTE is not set
1225# CONFIG_USB_APPLETOUCH is not set 1184# CONFIG_USB_APPLETOUCH is not set
1226 1185
@@ -1307,6 +1266,10 @@ CONFIG_INFINIBAND_IPOIB=m
1307# 1266#
1308 1267
1309# 1268#
1269# EDAC - error detection and reporting (RAS)
1270#
1271
1272#
1310# File systems 1273# File systems
1311# 1274#
1312CONFIG_EXT2_FS=y 1275CONFIG_EXT2_FS=y
@@ -1340,6 +1303,7 @@ CONFIG_XFS_EXPORT=y
1340CONFIG_XFS_SECURITY=y 1303CONFIG_XFS_SECURITY=y
1341CONFIG_XFS_POSIX_ACL=y 1304CONFIG_XFS_POSIX_ACL=y
1342# CONFIG_XFS_RT is not set 1305# CONFIG_XFS_RT is not set
1306# CONFIG_OCFS2_FS is not set
1343# CONFIG_MINIX_FS is not set 1307# CONFIG_MINIX_FS is not set
1344# CONFIG_ROMFS_FS is not set 1308# CONFIG_ROMFS_FS is not set
1345CONFIG_INOTIFY=y 1309CONFIG_INOTIFY=y
@@ -1379,6 +1343,7 @@ CONFIG_HUGETLBFS=y
1379CONFIG_HUGETLB_PAGE=y 1343CONFIG_HUGETLB_PAGE=y
1380CONFIG_RAMFS=y 1344CONFIG_RAMFS=y
1381# CONFIG_RELAYFS_FS is not set 1345# CONFIG_RELAYFS_FS is not set
1346# CONFIG_CONFIGFS_FS is not set
1382 1347
1383# 1348#
1384# Miscellaneous filesystems 1349# Miscellaneous filesystems
@@ -1449,6 +1414,7 @@ CONFIG_MSDOS_PARTITION=y
1449# CONFIG_SGI_PARTITION is not set 1414# CONFIG_SGI_PARTITION is not set
1450# CONFIG_ULTRIX_PARTITION is not set 1415# CONFIG_ULTRIX_PARTITION is not set
1451# CONFIG_SUN_PARTITION is not set 1416# CONFIG_SUN_PARTITION is not set
1417# CONFIG_KARMA_PARTITION is not set
1452# CONFIG_EFI_PARTITION is not set 1418# CONFIG_EFI_PARTITION is not set
1453 1419
1454# 1420#
@@ -1504,10 +1470,6 @@ CONFIG_CRC32=y
1504CONFIG_LIBCRC32C=m 1470CONFIG_LIBCRC32C=m
1505CONFIG_ZLIB_INFLATE=y 1471CONFIG_ZLIB_INFLATE=y
1506CONFIG_ZLIB_DEFLATE=m 1472CONFIG_ZLIB_DEFLATE=m
1507CONFIG_TEXTSEARCH=y
1508CONFIG_TEXTSEARCH_KMP=m
1509CONFIG_TEXTSEARCH_BM=m
1510CONFIG_TEXTSEARCH_FSM=m
1511 1473
1512# 1474#
1513# Instrumentation Support 1475# Instrumentation Support
@@ -1520,18 +1482,20 @@ CONFIG_OPROFILE=y
1520# Kernel hacking 1482# Kernel hacking
1521# 1483#
1522# CONFIG_PRINTK_TIME is not set 1484# CONFIG_PRINTK_TIME is not set
1523CONFIG_DEBUG_KERNEL=y
1524CONFIG_MAGIC_SYSRQ=y 1485CONFIG_MAGIC_SYSRQ=y
1486CONFIG_DEBUG_KERNEL=y
1525CONFIG_LOG_BUF_SHIFT=17 1487CONFIG_LOG_BUF_SHIFT=17
1526CONFIG_DETECT_SOFTLOCKUP=y 1488CONFIG_DETECT_SOFTLOCKUP=y
1527# CONFIG_SCHEDSTATS is not set 1489# CONFIG_SCHEDSTATS is not set
1528# CONFIG_DEBUG_SLAB is not set 1490# CONFIG_DEBUG_SLAB is not set
1491CONFIG_DEBUG_MUTEXES=y
1529# CONFIG_DEBUG_SPINLOCK is not set 1492# CONFIG_DEBUG_SPINLOCK is not set
1530# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1493# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1531# CONFIG_DEBUG_KOBJECT is not set 1494# CONFIG_DEBUG_KOBJECT is not set
1532# CONFIG_DEBUG_INFO is not set 1495# CONFIG_DEBUG_INFO is not set
1533CONFIG_DEBUG_FS=y 1496CONFIG_DEBUG_FS=y
1534# CONFIG_DEBUG_VM is not set 1497# CONFIG_DEBUG_VM is not set
1498CONFIG_FORCED_INLINING=y
1535# CONFIG_RCU_TORTURE_TEST is not set 1499# CONFIG_RCU_TORTURE_TEST is not set
1536CONFIG_DEBUG_STACKOVERFLOW=y 1500CONFIG_DEBUG_STACKOVERFLOW=y
1537CONFIG_DEBUG_STACK_USAGE=y 1501CONFIG_DEBUG_STACK_USAGE=y
@@ -1540,6 +1504,11 @@ CONFIG_XMON=y
1540# CONFIG_XMON_DEFAULT is not set 1504# CONFIG_XMON_DEFAULT is not set
1541CONFIG_IRQSTACKS=y 1505CONFIG_IRQSTACKS=y
1542CONFIG_BOOTX_TEXT=y 1506CONFIG_BOOTX_TEXT=y
1507# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
1508# CONFIG_PPC_EARLY_DEBUG_G5 is not set
1509# CONFIG_PPC_EARLY_DEBUG_RTAS is not set
1510# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
1511# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
1543 1512
1544# 1513#
1545# Security options 1514# Security options
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig
index aa9893a1f6e8..daaf038a1faa 100644
--- a/arch/powerpc/configs/pseries_defconfig
+++ b/arch/powerpc/configs/pseries_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15-rc5 3# Linux kernel version: 2.6.16-rc2
4# Tue Dec 20 15:59:40 2005 4# Fri Feb 10 17:33:32 2006
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -16,6 +16,10 @@ CONFIG_COMPAT=y
16CONFIG_SYSVIPC_COMPAT=y 16CONFIG_SYSVIPC_COMPAT=y
17CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 17CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
18CONFIG_ARCH_MAY_HAVE_PC_FDC=y 18CONFIG_ARCH_MAY_HAVE_PC_FDC=y
19CONFIG_PPC_OF=y
20CONFIG_PPC_UDBG_16550=y
21# CONFIG_GENERIC_TBSYNC is not set
22# CONFIG_DEFAULT_UIMAGE is not set
19 23
20# 24#
21# Processor support 25# Processor support
@@ -33,7 +37,6 @@ CONFIG_NR_CPUS=128
33# Code maturity level options 37# Code maturity level options
34# 38#
35CONFIG_EXPERIMENTAL=y 39CONFIG_EXPERIMENTAL=y
36CONFIG_CLEAN_COMPILE=y
37CONFIG_LOCK_KERNEL=y 40CONFIG_LOCK_KERNEL=y
38CONFIG_INIT_ENV_ARG_LIMIT=32 41CONFIG_INIT_ENV_ARG_LIMIT=32
39 42
@@ -49,8 +52,6 @@ CONFIG_POSIX_MQUEUE=y
49CONFIG_SYSCTL=y 52CONFIG_SYSCTL=y
50CONFIG_AUDIT=y 53CONFIG_AUDIT=y
51CONFIG_AUDITSYSCALL=y 54CONFIG_AUDITSYSCALL=y
52CONFIG_HOTPLUG=y
53CONFIG_KOBJECT_UEVENT=y
54CONFIG_IKCONFIG=y 55CONFIG_IKCONFIG=y
55CONFIG_IKCONFIG_PROC=y 56CONFIG_IKCONFIG_PROC=y
56CONFIG_CPUSETS=y 57CONFIG_CPUSETS=y
@@ -60,8 +61,10 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
60CONFIG_KALLSYMS=y 61CONFIG_KALLSYMS=y
61CONFIG_KALLSYMS_ALL=y 62CONFIG_KALLSYMS_ALL=y
62# CONFIG_KALLSYMS_EXTRA_PASS is not set 63# CONFIG_KALLSYMS_EXTRA_PASS is not set
64CONFIG_HOTPLUG=y
63CONFIG_PRINTK=y 65CONFIG_PRINTK=y
64CONFIG_BUG=y 66CONFIG_BUG=y
67CONFIG_ELF_CORE=y
65CONFIG_BASE_FULL=y 68CONFIG_BASE_FULL=y
66CONFIG_FUTEX=y 69CONFIG_FUTEX=y
67CONFIG_EPOLL=y 70CONFIG_EPOLL=y
@@ -70,8 +73,10 @@ CONFIG_CC_ALIGN_FUNCTIONS=0
70CONFIG_CC_ALIGN_LABELS=0 73CONFIG_CC_ALIGN_LABELS=0
71CONFIG_CC_ALIGN_LOOPS=0 74CONFIG_CC_ALIGN_LOOPS=0
72CONFIG_CC_ALIGN_JUMPS=0 75CONFIG_CC_ALIGN_JUMPS=0
76CONFIG_SLAB=y
73# CONFIG_TINY_SHMEM is not set 77# CONFIG_TINY_SHMEM is not set
74CONFIG_BASE_SMALL=0 78CONFIG_BASE_SMALL=0
79# CONFIG_SLOB is not set
75 80
76# 81#
77# Loadable module support 82# Loadable module support
@@ -113,7 +118,6 @@ CONFIG_PPC_PSERIES=y
113# CONFIG_PPC_PMAC is not set 118# CONFIG_PPC_PMAC is not set
114# CONFIG_PPC_MAPLE is not set 119# CONFIG_PPC_MAPLE is not set
115# CONFIG_PPC_CELL is not set 120# CONFIG_PPC_CELL is not set
116CONFIG_PPC_OF=y
117CONFIG_XICS=y 121CONFIG_XICS=y
118# CONFIG_U3_DART is not set 122# CONFIG_U3_DART is not set
119CONFIG_MPIC=y 123CONFIG_MPIC=y
@@ -123,8 +127,8 @@ CONFIG_RTAS_PROC=y
123CONFIG_RTAS_FLASH=m 127CONFIG_RTAS_FLASH=m
124# CONFIG_MMIO_NVRAM is not set 128# CONFIG_MMIO_NVRAM is not set
125CONFIG_IBMVIO=y 129CONFIG_IBMVIO=y
130# CONFIG_IBMEBUS is not set
126# CONFIG_PPC_MPC106 is not set 131# CONFIG_PPC_MPC106 is not set
127# CONFIG_GENERIC_TBSYNC is not set
128# CONFIG_CPU_FREQ is not set 132# CONFIG_CPU_FREQ is not set
129# CONFIG_WANT_EARLY_SERIAL is not set 133# CONFIG_WANT_EARLY_SERIAL is not set
130 134
@@ -145,6 +149,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13
145CONFIG_IOMMU_VMERGE=y 149CONFIG_IOMMU_VMERGE=y
146CONFIG_HOTPLUG_CPU=y 150CONFIG_HOTPLUG_CPU=y
147CONFIG_KEXEC=y 151CONFIG_KEXEC=y
152# CONFIG_CRASH_DUMP is not set
148CONFIG_IRQ_ALL_CPUS=y 153CONFIG_IRQ_ALL_CPUS=y
149CONFIG_PPC_SPLPAR=y 154CONFIG_PPC_SPLPAR=y
150CONFIG_EEH=y 155CONFIG_EEH=y
@@ -165,6 +170,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y
165CONFIG_SPARSEMEM_EXTREME=y 170CONFIG_SPARSEMEM_EXTREME=y
166# CONFIG_MEMORY_HOTPLUG is not set 171# CONFIG_MEMORY_HOTPLUG is not set
167CONFIG_SPLIT_PTLOCK_CPUS=4 172CONFIG_SPLIT_PTLOCK_CPUS=4
173CONFIG_MIGRATION=y
168CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y 174CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
169# CONFIG_PPC_64K_PAGES is not set 175# CONFIG_PPC_64K_PAGES is not set
170CONFIG_SCHED_SMT=y 176CONFIG_SCHED_SMT=y
@@ -209,6 +215,7 @@ CONFIG_NET=y
209# 215#
210# Networking options 216# Networking options
211# 217#
218# CONFIG_NETDEBUG is not set
212CONFIG_PACKET=y 219CONFIG_PACKET=y
213# CONFIG_PACKET_MMAP is not set 220# CONFIG_PACKET_MMAP is not set
214CONFIG_UNIX=y 221CONFIG_UNIX=y
@@ -248,6 +255,7 @@ CONFIG_NETFILTER=y
248CONFIG_NETFILTER_NETLINK=y 255CONFIG_NETFILTER_NETLINK=y
249CONFIG_NETFILTER_NETLINK_QUEUE=m 256CONFIG_NETFILTER_NETLINK_QUEUE=m
250CONFIG_NETFILTER_NETLINK_LOG=m 257CONFIG_NETFILTER_NETLINK_LOG=m
258# CONFIG_NETFILTER_XTABLES is not set
251 259
252# 260#
253# IP: Netfilter Configuration 261# IP: Netfilter Configuration
@@ -265,65 +273,6 @@ CONFIG_IP_NF_TFTP=m
265CONFIG_IP_NF_AMANDA=m 273CONFIG_IP_NF_AMANDA=m
266# CONFIG_IP_NF_PPTP is not set 274# CONFIG_IP_NF_PPTP is not set
267CONFIG_IP_NF_QUEUE=m 275CONFIG_IP_NF_QUEUE=m
268CONFIG_IP_NF_IPTABLES=m
269CONFIG_IP_NF_MATCH_LIMIT=m
270CONFIG_IP_NF_MATCH_IPRANGE=m
271CONFIG_IP_NF_MATCH_MAC=m
272CONFIG_IP_NF_MATCH_PKTTYPE=m
273CONFIG_IP_NF_MATCH_MARK=m
274CONFIG_IP_NF_MATCH_MULTIPORT=m
275CONFIG_IP_NF_MATCH_TOS=m
276CONFIG_IP_NF_MATCH_RECENT=m
277CONFIG_IP_NF_MATCH_ECN=m
278CONFIG_IP_NF_MATCH_DSCP=m
279CONFIG_IP_NF_MATCH_AH_ESP=m
280CONFIG_IP_NF_MATCH_LENGTH=m
281CONFIG_IP_NF_MATCH_TTL=m
282CONFIG_IP_NF_MATCH_TCPMSS=m
283CONFIG_IP_NF_MATCH_HELPER=m
284CONFIG_IP_NF_MATCH_STATE=m
285CONFIG_IP_NF_MATCH_CONNTRACK=m
286CONFIG_IP_NF_MATCH_OWNER=m
287CONFIG_IP_NF_MATCH_ADDRTYPE=m
288CONFIG_IP_NF_MATCH_REALM=m
289CONFIG_IP_NF_MATCH_SCTP=m
290# CONFIG_IP_NF_MATCH_DCCP is not set
291CONFIG_IP_NF_MATCH_COMMENT=m
292CONFIG_IP_NF_MATCH_CONNMARK=m
293CONFIG_IP_NF_MATCH_CONNBYTES=m
294CONFIG_IP_NF_MATCH_HASHLIMIT=m
295CONFIG_IP_NF_MATCH_STRING=m
296CONFIG_IP_NF_FILTER=m
297CONFIG_IP_NF_TARGET_REJECT=m
298CONFIG_IP_NF_TARGET_LOG=m
299CONFIG_IP_NF_TARGET_ULOG=m
300CONFIG_IP_NF_TARGET_TCPMSS=m
301CONFIG_IP_NF_TARGET_NFQUEUE=m
302CONFIG_IP_NF_NAT=m
303CONFIG_IP_NF_NAT_NEEDED=y
304CONFIG_IP_NF_TARGET_MASQUERADE=m
305CONFIG_IP_NF_TARGET_REDIRECT=m
306CONFIG_IP_NF_TARGET_NETMAP=m
307CONFIG_IP_NF_TARGET_SAME=m
308CONFIG_IP_NF_NAT_SNMP_BASIC=m
309CONFIG_IP_NF_NAT_IRC=m
310CONFIG_IP_NF_NAT_FTP=m
311CONFIG_IP_NF_NAT_TFTP=m
312CONFIG_IP_NF_NAT_AMANDA=m
313CONFIG_IP_NF_MANGLE=m
314CONFIG_IP_NF_TARGET_TOS=m
315CONFIG_IP_NF_TARGET_ECN=m
316CONFIG_IP_NF_TARGET_DSCP=m
317CONFIG_IP_NF_TARGET_MARK=m
318CONFIG_IP_NF_TARGET_CLASSIFY=m
319CONFIG_IP_NF_TARGET_TTL=m
320CONFIG_IP_NF_TARGET_CONNMARK=m
321CONFIG_IP_NF_TARGET_CLUSTERIP=m
322CONFIG_IP_NF_RAW=m
323CONFIG_IP_NF_TARGET_NOTRACK=m
324CONFIG_IP_NF_ARPTABLES=m
325CONFIG_IP_NF_ARPFILTER=m
326CONFIG_IP_NF_ARP_MANGLE=m
327 276
328# 277#
329# DCCP Configuration (EXPERIMENTAL) 278# DCCP Configuration (EXPERIMENTAL)
@@ -334,6 +283,11 @@ CONFIG_IP_NF_ARP_MANGLE=m
334# SCTP Configuration (EXPERIMENTAL) 283# SCTP Configuration (EXPERIMENTAL)
335# 284#
336# CONFIG_IP_SCTP is not set 285# CONFIG_IP_SCTP is not set
286
287#
288# TIPC Configuration (EXPERIMENTAL)
289#
290# CONFIG_TIPC is not set
337# CONFIG_ATM is not set 291# CONFIG_ATM is not set
338# CONFIG_BRIDGE is not set 292# CONFIG_BRIDGE is not set
339# CONFIG_VLAN_8021Q is not set 293# CONFIG_VLAN_8021Q is not set
@@ -352,7 +306,6 @@ CONFIG_LLC=y
352# QoS and/or fair queueing 306# QoS and/or fair queueing
353# 307#
354# CONFIG_NET_SCHED is not set 308# CONFIG_NET_SCHED is not set
355CONFIG_NET_CLS_ROUTE=y
356 309
357# 310#
358# Network testing 311# Network testing
@@ -550,13 +503,7 @@ CONFIG_SCSI_IPR_TRACE=y
550CONFIG_SCSI_IPR_DUMP=y 503CONFIG_SCSI_IPR_DUMP=y
551# CONFIG_SCSI_QLOGIC_FC is not set 504# CONFIG_SCSI_QLOGIC_FC is not set
552# CONFIG_SCSI_QLOGIC_1280 is not set 505# CONFIG_SCSI_QLOGIC_1280 is not set
553CONFIG_SCSI_QLA2XXX=y 506# CONFIG_SCSI_QLA_FC is not set
554CONFIG_SCSI_QLA21XX=m
555CONFIG_SCSI_QLA22XX=m
556CONFIG_SCSI_QLA2300=m
557CONFIG_SCSI_QLA2322=m
558CONFIG_SCSI_QLA6312=m
559CONFIG_SCSI_QLA24XX=m
560CONFIG_SCSI_LPFC=m 507CONFIG_SCSI_LPFC=m
561# CONFIG_SCSI_DC395x is not set 508# CONFIG_SCSI_DC395x is not set
562# CONFIG_SCSI_DC390T is not set 509# CONFIG_SCSI_DC390T is not set
@@ -678,6 +625,7 @@ CONFIG_E1000=y
678# CONFIG_R8169 is not set 625# CONFIG_R8169 is not set
679# CONFIG_SIS190 is not set 626# CONFIG_SIS190 is not set
680# CONFIG_SKGE is not set 627# CONFIG_SKGE is not set
628# CONFIG_SKY2 is not set
681# CONFIG_SK98LIN is not set 629# CONFIG_SK98LIN is not set
682# CONFIG_VIA_VELOCITY is not set 630# CONFIG_VIA_VELOCITY is not set
683CONFIG_TIGON3=y 631CONFIG_TIGON3=y
@@ -803,6 +751,7 @@ CONFIG_HW_CONSOLE=y
803CONFIG_SERIAL_8250=y 751CONFIG_SERIAL_8250=y
804CONFIG_SERIAL_8250_CONSOLE=y 752CONFIG_SERIAL_8250_CONSOLE=y
805CONFIG_SERIAL_8250_NR_UARTS=4 753CONFIG_SERIAL_8250_NR_UARTS=4
754CONFIG_SERIAL_8250_RUNTIME_UARTS=4
806# CONFIG_SERIAL_8250_EXTENDED is not set 755# CONFIG_SERIAL_8250_EXTENDED is not set
807 756
808# 757#
@@ -909,6 +858,12 @@ CONFIG_I2C_ALGOBIT=y
909# CONFIG_I2C_DEBUG_CHIP is not set 858# CONFIG_I2C_DEBUG_CHIP is not set
910 859
911# 860#
861# SPI support
862#
863# CONFIG_SPI is not set
864# CONFIG_SPI_MASTER is not set
865
866#
912# Dallas's 1-wire bus 867# Dallas's 1-wire bus
913# 868#
914# CONFIG_W1 is not set 869# CONFIG_W1 is not set
@@ -976,7 +931,6 @@ CONFIG_FB_RADEON_I2C=y
976# CONFIG_FB_KYRO is not set 931# CONFIG_FB_KYRO is not set
977# CONFIG_FB_3DFX is not set 932# CONFIG_FB_3DFX is not set
978# CONFIG_FB_VOODOO1 is not set 933# CONFIG_FB_VOODOO1 is not set
979# CONFIG_FB_CYBLA is not set
980# CONFIG_FB_TRIDENT is not set 934# CONFIG_FB_TRIDENT is not set
981# CONFIG_FB_VIRTUAL is not set 935# CONFIG_FB_VIRTUAL is not set
982 936
@@ -1061,12 +1015,15 @@ CONFIG_USB_STORAGE=y
1061# CONFIG_USB_STORAGE_SDDR09 is not set 1015# CONFIG_USB_STORAGE_SDDR09 is not set
1062# CONFIG_USB_STORAGE_SDDR55 is not set 1016# CONFIG_USB_STORAGE_SDDR55 is not set
1063# CONFIG_USB_STORAGE_JUMPSHOT is not set 1017# CONFIG_USB_STORAGE_JUMPSHOT is not set
1018# CONFIG_USB_STORAGE_ALAUDA is not set
1019# CONFIG_USB_LIBUSUAL is not set
1064 1020
1065# 1021#
1066# USB Input Devices 1022# USB Input Devices
1067# 1023#
1068CONFIG_USB_HID=y 1024CONFIG_USB_HID=y
1069CONFIG_USB_HIDINPUT=y 1025CONFIG_USB_HIDINPUT=y
1026# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1070# CONFIG_HID_FF is not set 1027# CONFIG_HID_FF is not set
1071CONFIG_USB_HIDDEV=y 1028CONFIG_USB_HIDDEV=y
1072# CONFIG_USB_AIPTEK is not set 1029# CONFIG_USB_AIPTEK is not set
@@ -1080,6 +1037,7 @@ CONFIG_USB_HIDDEV=y
1080# CONFIG_USB_YEALINK is not set 1037# CONFIG_USB_YEALINK is not set
1081# CONFIG_USB_XPAD is not set 1038# CONFIG_USB_XPAD is not set
1082# CONFIG_USB_ATI_REMOTE is not set 1039# CONFIG_USB_ATI_REMOTE is not set
1040# CONFIG_USB_ATI_REMOTE2 is not set
1083# CONFIG_USB_KEYSPAN_REMOTE is not set 1041# CONFIG_USB_KEYSPAN_REMOTE is not set
1084# CONFIG_USB_APPLETOUCH is not set 1042# CONFIG_USB_APPLETOUCH is not set
1085 1043
@@ -1167,6 +1125,10 @@ CONFIG_INFINIBAND_IPOIB=m
1167# 1125#
1168 1126
1169# 1127#
1128# EDAC - error detection and reporting (RAS)
1129#
1130
1131#
1170# File systems 1132# File systems
1171# 1133#
1172CONFIG_EXT2_FS=y 1134CONFIG_EXT2_FS=y
@@ -1200,6 +1162,7 @@ CONFIG_XFS_EXPORT=y
1200CONFIG_XFS_SECURITY=y 1162CONFIG_XFS_SECURITY=y
1201CONFIG_XFS_POSIX_ACL=y 1163CONFIG_XFS_POSIX_ACL=y
1202# CONFIG_XFS_RT is not set 1164# CONFIG_XFS_RT is not set
1165# CONFIG_OCFS2_FS is not set
1203# CONFIG_MINIX_FS is not set 1166# CONFIG_MINIX_FS is not set
1204# CONFIG_ROMFS_FS is not set 1167# CONFIG_ROMFS_FS is not set
1205CONFIG_INOTIFY=y 1168CONFIG_INOTIFY=y
@@ -1240,6 +1203,7 @@ CONFIG_HUGETLBFS=y
1240CONFIG_HUGETLB_PAGE=y 1203CONFIG_HUGETLB_PAGE=y
1241CONFIG_RAMFS=y 1204CONFIG_RAMFS=y
1242# CONFIG_RELAYFS_FS is not set 1205# CONFIG_RELAYFS_FS is not set
1206# CONFIG_CONFIGFS_FS is not set
1243 1207
1244# 1208#
1245# Miscellaneous filesystems 1209# Miscellaneous filesystems
@@ -1351,10 +1315,6 @@ CONFIG_CRC32=y
1351CONFIG_LIBCRC32C=m 1315CONFIG_LIBCRC32C=m
1352CONFIG_ZLIB_INFLATE=y 1316CONFIG_ZLIB_INFLATE=y
1353CONFIG_ZLIB_DEFLATE=m 1317CONFIG_ZLIB_DEFLATE=m
1354CONFIG_TEXTSEARCH=y
1355CONFIG_TEXTSEARCH_KMP=m
1356CONFIG_TEXTSEARCH_BM=m
1357CONFIG_TEXTSEARCH_FSM=m
1358 1318
1359# 1319#
1360# Instrumentation Support 1320# Instrumentation Support
@@ -1367,18 +1327,20 @@ CONFIG_OPROFILE=y
1367# Kernel hacking 1327# Kernel hacking
1368# 1328#
1369# CONFIG_PRINTK_TIME is not set 1329# CONFIG_PRINTK_TIME is not set
1370CONFIG_DEBUG_KERNEL=y
1371CONFIG_MAGIC_SYSRQ=y 1330CONFIG_MAGIC_SYSRQ=y
1331CONFIG_DEBUG_KERNEL=y
1372CONFIG_LOG_BUF_SHIFT=17 1332CONFIG_LOG_BUF_SHIFT=17
1373CONFIG_DETECT_SOFTLOCKUP=y 1333CONFIG_DETECT_SOFTLOCKUP=y
1374# CONFIG_SCHEDSTATS is not set 1334# CONFIG_SCHEDSTATS is not set
1375# CONFIG_DEBUG_SLAB is not set 1335# CONFIG_DEBUG_SLAB is not set
1336CONFIG_DEBUG_MUTEXES=y
1376# CONFIG_DEBUG_SPINLOCK is not set 1337# CONFIG_DEBUG_SPINLOCK is not set
1377# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1338# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1378# CONFIG_DEBUG_KOBJECT is not set 1339# CONFIG_DEBUG_KOBJECT is not set
1379# CONFIG_DEBUG_INFO is not set 1340# CONFIG_DEBUG_INFO is not set
1380CONFIG_DEBUG_FS=y 1341CONFIG_DEBUG_FS=y
1381# CONFIG_DEBUG_VM is not set 1342# CONFIG_DEBUG_VM is not set
1343CONFIG_FORCED_INLINING=y
1382# CONFIG_RCU_TORTURE_TEST is not set 1344# CONFIG_RCU_TORTURE_TEST is not set
1383CONFIG_DEBUG_STACKOVERFLOW=y 1345CONFIG_DEBUG_STACKOVERFLOW=y
1384CONFIG_DEBUG_STACK_USAGE=y 1346CONFIG_DEBUG_STACK_USAGE=y
@@ -1387,6 +1349,11 @@ CONFIG_XMON=y
1387CONFIG_XMON_DEFAULT=y 1349CONFIG_XMON_DEFAULT=y
1388CONFIG_IRQSTACKS=y 1350CONFIG_IRQSTACKS=y
1389# CONFIG_BOOTX_TEXT is not set 1351# CONFIG_BOOTX_TEXT is not set
1352# CONFIG_PPC_EARLY_DEBUG_LPAR is not set
1353# CONFIG_PPC_EARLY_DEBUG_G5 is not set
1354# CONFIG_PPC_EARLY_DEBUG_RTAS is not set
1355# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
1356# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
1390 1357
1391# 1358#
1392# Security options 1359# Security options
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c
index 840aad43a98b..c9a660e4c2db 100644
--- a/arch/powerpc/kernel/asm-offsets.c
+++ b/arch/powerpc/kernel/asm-offsets.c
@@ -92,7 +92,6 @@ int main(void)
92 92
93 DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); 93 DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
94 DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count)); 94 DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count));
95 DEFINE(TI_SIGFRAME, offsetof(struct thread_info, nvgprs_frame));
96 DEFINE(TI_TASK, offsetof(struct thread_info, task)); 95 DEFINE(TI_TASK, offsetof(struct thread_info, task));
97#ifdef CONFIG_PPC32 96#ifdef CONFIG_PPC32
98 DEFINE(TI_EXECDOMAIN, offsetof(struct thread_info, exec_domain)); 97 DEFINE(TI_EXECDOMAIN, offsetof(struct thread_info, exec_domain));
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index 10696456a4c6..e4e81374cb9a 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -53,8 +53,10 @@ extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
53 PPC_FEATURE_HAS_MMU) 53 PPC_FEATURE_HAS_MMU)
54#define COMMON_USER_PPC64 (COMMON_USER | PPC_FEATURE_64) 54#define COMMON_USER_PPC64 (COMMON_USER | PPC_FEATURE_64)
55#define COMMON_USER_POWER4 (COMMON_USER_PPC64 | PPC_FEATURE_POWER4) 55#define COMMON_USER_POWER4 (COMMON_USER_PPC64 | PPC_FEATURE_POWER4)
56#define COMMON_USER_POWER5 (COMMON_USER_PPC64 | PPC_FEATURE_POWER5) 56#define COMMON_USER_POWER5 (COMMON_USER_PPC64 | PPC_FEATURE_POWER5 |\
57#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS) 57 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
58#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
59 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
58#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ 60#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
59 PPC_FEATURE_BOOKE) 61 PPC_FEATURE_BOOKE)
60 62
@@ -267,7 +269,8 @@ struct cpu_spec cpu_specs[] = {
267 .cpu_name = "Cell Broadband Engine", 269 .cpu_name = "Cell Broadband Engine",
268 .cpu_features = CPU_FTRS_CELL, 270 .cpu_features = CPU_FTRS_CELL,
269 .cpu_user_features = COMMON_USER_PPC64 | 271 .cpu_user_features = COMMON_USER_PPC64 |
270 PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP, 272 PPC_FEATURE_CELL | PPC_FEATURE_HAS_ALTIVEC_COMP |
273 PPC_FEATURE_SMT,
271 .icache_bsize = 128, 274 .icache_bsize = 128,
272 .dcache_bsize = 128, 275 .dcache_bsize = 128,
273 .cpu_setup = __setup_cpu_be, 276 .cpu_setup = __setup_cpu_be,
diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c
index 8c21d378f5d2..778f22fd85d2 100644
--- a/arch/powerpc/kernel/crash.c
+++ b/arch/powerpc/kernel/crash.c
@@ -134,8 +134,10 @@ static void crash_kexec_prepare_cpus(void)
134 * the crash CPU will send an IPI and wait for other CPUs to 134 * the crash CPU will send an IPI and wait for other CPUs to
135 * respond. If not, proceed the kexec boot even though we failed to 135 * respond. If not, proceed the kexec boot even though we failed to
136 * capture other CPU states. 136 * capture other CPU states.
137 * Delay of at least 10 seconds.
137 */ 138 */
138 msecs = 1000000; 139 printk(KERN_ALERT "Sending IPI to other cpus...\n");
140 msecs = 10000;
139 while ((atomic_read(&waiting_for_crash_ipi) > 0) && (--msecs > 0)) { 141 while ((atomic_read(&waiting_for_crash_ipi) > 0) && (--msecs > 0)) {
140 barrier(); 142 barrier();
141 mdelay(1); 143 mdelay(1);
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
index f20a67261ec7..4827ca1ec89b 100644
--- a/arch/powerpc/kernel/entry_32.S
+++ b/arch/powerpc/kernel/entry_32.S
@@ -227,7 +227,7 @@ ret_from_syscall:
227 MTMSRD(r10) 227 MTMSRD(r10)
228 lwz r9,TI_FLAGS(r12) 228 lwz r9,TI_FLAGS(r12)
229 li r8,-_LAST_ERRNO 229 li r8,-_LAST_ERRNO
230 andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SIGPENDING|_TIF_NEED_RESCHED|_TIF_RESTOREALL|_TIF_RESTORE_SIGMASK) 230 andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK)
231 bne- syscall_exit_work 231 bne- syscall_exit_work
232 cmplw 0,r3,r8 232 cmplw 0,r3,r8
233 blt+ syscall_exit_cont 233 blt+ syscall_exit_cont
@@ -287,8 +287,10 @@ syscall_dotrace:
287 287
288syscall_exit_work: 288syscall_exit_work:
289 andi. r0,r9,_TIF_RESTOREALL 289 andi. r0,r9,_TIF_RESTOREALL
290 bne- 2f 290 beq+ 0f
291 cmplw 0,r3,r8 291 REST_NVGPRS(r1)
292 b 2f
2930: cmplw 0,r3,r8
292 blt+ 1f 294 blt+ 1f
293 andi. r0,r9,_TIF_NOERROR 295 andi. r0,r9,_TIF_NOERROR
294 bne- 1f 296 bne- 1f
@@ -302,9 +304,7 @@ syscall_exit_work:
3022: andi. r0,r9,(_TIF_PERSYSCALL_MASK) 3042: andi. r0,r9,(_TIF_PERSYSCALL_MASK)
303 beq 4f 305 beq 4f
304 306
305 /* Clear per-syscall TIF flags if any are set, but _leave_ 307 /* Clear per-syscall TIF flags if any are set. */
306 _TIF_SAVE_NVGPRS set in r9 since we haven't dealt with that
307 yet. */
308 308
309 li r11,_TIF_PERSYSCALL_MASK 309 li r11,_TIF_PERSYSCALL_MASK
310 addi r12,r12,TI_FLAGS 310 addi r12,r12,TI_FLAGS
@@ -318,8 +318,13 @@ syscall_exit_work:
318 subi r12,r12,TI_FLAGS 318 subi r12,r12,TI_FLAGS
319 319
3204: /* Anything which requires enabling interrupts? */ 3204: /* Anything which requires enabling interrupts? */
321 andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP|_TIF_SAVE_NVGPRS) 321 andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP)
322 beq 7f 322 beq ret_from_except
323
324 /* Re-enable interrupts */
325 ori r10,r10,MSR_EE
326 SYNC
327 MTMSRD(r10)
323 328
324 /* Save NVGPRS if they're not saved already */ 329 /* Save NVGPRS if they're not saved already */
325 lwz r4,_TRAP(r1) 330 lwz r4,_TRAP(r1)
@@ -328,71 +333,11 @@ syscall_exit_work:
328 SAVE_NVGPRS(r1) 333 SAVE_NVGPRS(r1)
329 li r4,0xc00 334 li r4,0xc00
330 stw r4,_TRAP(r1) 335 stw r4,_TRAP(r1)
331 3365:
332 /* Re-enable interrupts */
3335: ori r10,r10,MSR_EE
334 SYNC
335 MTMSRD(r10)
336
337 andi. r0,r9,_TIF_SAVE_NVGPRS
338 bne save_user_nvgprs
339
340save_user_nvgprs_cont:
341 andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP)
342 beq 7f
343
344 addi r3,r1,STACK_FRAME_OVERHEAD 337 addi r3,r1,STACK_FRAME_OVERHEAD
345 bl do_syscall_trace_leave 338 bl do_syscall_trace_leave
346 REST_NVGPRS(r1) 339 b ret_from_except_full
347
3486: lwz r3,GPR3(r1)
349 LOAD_MSR_KERNEL(r10,MSR_KERNEL) /* doesn't include MSR_EE */
350 SYNC
351 MTMSRD(r10) /* disable interrupts again */
352 rlwinm r12,r1,0,0,(31-THREAD_SHIFT) /* current_thread_info() */
353 lwz r9,TI_FLAGS(r12)
3547:
355 andi. r0,r9,_TIF_NEED_RESCHED
356 bne 8f
357 lwz r5,_MSR(r1)
358 andi. r5,r5,MSR_PR
359 beq ret_from_except
360 andi. r0,r9,_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK
361 beq ret_from_except
362 b do_user_signal
3638:
364 ori r10,r10,MSR_EE
365 SYNC
366 MTMSRD(r10) /* re-enable interrupts */
367 bl schedule
368 b 6b
369
370save_user_nvgprs:
371 lwz r8,TI_SIGFRAME(r12)
372
373.macro savewords start, end
374 1: stw \start,4*(\start)(r8)
375 .section __ex_table,"a"
376 .align 2
377 .long 1b,save_user_nvgprs_fault
378 .previous
379 .if \end - \start
380 savewords "(\start+1)",\end
381 .endif
382.endm
383 savewords 14,31
384 b save_user_nvgprs_cont
385
386
387save_user_nvgprs_fault:
388 li r3,11 /* SIGSEGV */
389 lwz r4,TI_TASK(r12)
390 bl force_sigsegv
391 340
392 rlwinm r12,r1,0,0,(31-THREAD_SHIFT) /* current_thread_info() */
393 lwz r9,TI_FLAGS(r12)
394 b save_user_nvgprs_cont
395
396#ifdef SHOW_SYSCALLS 341#ifdef SHOW_SYSCALLS
397do_show_syscall: 342do_show_syscall:
398#ifdef SHOW_SYSCALLS_TASK 343#ifdef SHOW_SYSCALLS_TASK
@@ -490,6 +435,14 @@ ppc_clone:
490 stw r0,_TRAP(r1) /* register set saved */ 435 stw r0,_TRAP(r1) /* register set saved */
491 b sys_clone 436 b sys_clone
492 437
438 .globl ppc_swapcontext
439ppc_swapcontext:
440 SAVE_NVGPRS(r1)
441 lwz r0,_TRAP(r1)
442 rlwinm r0,r0,0,0,30 /* clear LSB to indicate full */
443 stw r0,_TRAP(r1) /* register set saved */
444 b sys_swapcontext
445
493/* 446/*
494 * Top-level page fault handling. 447 * Top-level page fault handling.
495 * This is in assembler because if do_page_fault tells us that 448 * This is in assembler because if do_page_fault tells us that
@@ -683,7 +636,7 @@ user_exc_return: /* r10 contains MSR_KERNEL here */
683 /* Check current_thread_info()->flags */ 636 /* Check current_thread_info()->flags */
684 rlwinm r9,r1,0,0,(31-THREAD_SHIFT) 637 rlwinm r9,r1,0,0,(31-THREAD_SHIFT)
685 lwz r9,TI_FLAGS(r9) 638 lwz r9,TI_FLAGS(r9)
686 andi. r0,r9,(_TIF_SIGPENDING|_TIF_NEED_RESCHED|_TIF_RESTOREALL|_TIF_RESTORE_SIGMASK) 639 andi. r0,r9,(_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK|_TIF_NEED_RESCHED)
687 bne do_work 640 bne do_work
688 641
689restore_user: 642restore_user:
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index 388f861b8ed1..24be0cf86d7f 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -160,7 +160,7 @@ syscall_exit:
160 mtmsrd r10,1 160 mtmsrd r10,1
161 ld r9,TI_FLAGS(r12) 161 ld r9,TI_FLAGS(r12)
162 li r11,-_LAST_ERRNO 162 li r11,-_LAST_ERRNO
163 andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP|_TIF_SIGPENDING|_TIF_NEED_RESCHED|_TIF_RESTOREALL|_TIF_SAVE_NVGPRS|_TIF_NOERROR|_TIF_RESTORE_SIGMASK) 163 andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK)
164 bne- syscall_exit_work 164 bne- syscall_exit_work
165 cmpld r3,r11 165 cmpld r3,r11
166 ld r5,_CCR(r1) 166 ld r5,_CCR(r1)
@@ -216,8 +216,10 @@ syscall_exit_work:
216 If TIF_NOERROR is set, just save r3 as it is. */ 216 If TIF_NOERROR is set, just save r3 as it is. */
217 217
218 andi. r0,r9,_TIF_RESTOREALL 218 andi. r0,r9,_TIF_RESTOREALL
219 bne- 2f 219 beq+ 0f
220 cmpld r3,r11 /* r10 is -LAST_ERRNO */ 220 REST_NVGPRS(r1)
221 b 2f
2220: cmpld r3,r11 /* r10 is -LAST_ERRNO */
221 blt+ 1f 223 blt+ 1f
222 andi. r0,r9,_TIF_NOERROR 224 andi. r0,r9,_TIF_NOERROR
223 bne- 1f 225 bne- 1f
@@ -229,9 +231,7 @@ syscall_exit_work:
2292: andi. r0,r9,(_TIF_PERSYSCALL_MASK) 2312: andi. r0,r9,(_TIF_PERSYSCALL_MASK)
230 beq 4f 232 beq 4f
231 233
232 /* Clear per-syscall TIF flags if any are set, but _leave_ 234 /* Clear per-syscall TIF flags if any are set. */
233 _TIF_SAVE_NVGPRS set in r9 since we haven't dealt with that
234 yet. */
235 235
236 li r11,_TIF_PERSYSCALL_MASK 236 li r11,_TIF_PERSYSCALL_MASK
237 addi r12,r12,TI_FLAGS 237 addi r12,r12,TI_FLAGS
@@ -240,10 +240,9 @@ syscall_exit_work:
240 stdcx. r10,0,r12 240 stdcx. r10,0,r12
241 bne- 3b 241 bne- 3b
242 subi r12,r12,TI_FLAGS 242 subi r12,r12,TI_FLAGS
243 243
2444: bl .save_nvgprs 2444: /* Anything else left to do? */
245 /* Anything else left to do? */ 245 andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP)
246 andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP|_TIF_SAVE_NVGPRS)
247 beq .ret_from_except_lite 246 beq .ret_from_except_lite
248 247
249 /* Re-enable interrupts */ 248 /* Re-enable interrupts */
@@ -251,26 +250,10 @@ syscall_exit_work:
251 ori r10,r10,MSR_EE 250 ori r10,r10,MSR_EE
252 mtmsrd r10,1 251 mtmsrd r10,1
253 252
254 andi. r0,r9,_TIF_SAVE_NVGPRS 253 bl .save_nvgprs
255 bne save_user_nvgprs
256
257 /* If tracing, re-enable interrupts and do it */
258save_user_nvgprs_cont:
259 andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP)
260 beq 5f
261
262 addi r3,r1,STACK_FRAME_OVERHEAD 254 addi r3,r1,STACK_FRAME_OVERHEAD
263 bl .do_syscall_trace_leave 255 bl .do_syscall_trace_leave
264 REST_NVGPRS(r1) 256 b .ret_from_except
265 clrrdi r12,r1,THREAD_SHIFT
266
267 /* Disable interrupts again and handle other work if any */
2685: mfmsr r10
269 rldicl r10,r10,48,1
270 rotldi r10,r10,16
271 mtmsrd r10,1
272
273 b .ret_from_except_lite
274 257
275/* Save non-volatile GPRs, if not already saved. */ 258/* Save non-volatile GPRs, if not already saved. */
276_GLOBAL(save_nvgprs) 259_GLOBAL(save_nvgprs)
@@ -282,51 +265,6 @@ _GLOBAL(save_nvgprs)
282 std r0,_TRAP(r1) 265 std r0,_TRAP(r1)
283 blr 266 blr
284 267
285
286save_user_nvgprs:
287 ld r10,TI_SIGFRAME(r12)
288 andi. r0,r9,_TIF_32BIT
289 beq- save_user_nvgprs_64
290
291 /* 32-bit save to userspace */
292
293.macro savewords start, end
294 1: stw \start,4*(\start)(r10)
295 .section __ex_table,"a"
296 .align 3
297 .llong 1b,save_user_nvgprs_fault
298 .previous
299 .if \end - \start
300 savewords "(\start+1)",\end
301 .endif
302.endm
303 savewords 14,31
304 b save_user_nvgprs_cont
305
306save_user_nvgprs_64:
307 /* 64-bit save to userspace */
308
309.macro savelongs start, end
310 1: std \start,8*(\start)(r10)
311 .section __ex_table,"a"
312 .align 3
313 .llong 1b,save_user_nvgprs_fault
314 .previous
315 .if \end - \start
316 savelongs "(\start+1)",\end
317 .endif
318.endm
319 savelongs 14,31
320 b save_user_nvgprs_cont
321
322save_user_nvgprs_fault:
323 li r3,11 /* SIGSEGV */
324 ld r4,TI_TASK(r12)
325 bl .force_sigsegv
326
327 clrrdi r12,r1,THREAD_SHIFT
328 ld r9,TI_FLAGS(r12)
329 b save_user_nvgprs_cont
330 268
331/* 269/*
332 * The sigsuspend and rt_sigsuspend system calls can call do_signal 270 * The sigsuspend and rt_sigsuspend system calls can call do_signal
@@ -352,6 +290,16 @@ _GLOBAL(ppc_clone)
352 bl .sys_clone 290 bl .sys_clone
353 b syscall_exit 291 b syscall_exit
354 292
293_GLOBAL(ppc32_swapcontext)
294 bl .save_nvgprs
295 bl .compat_sys_swapcontext
296 b syscall_exit
297
298_GLOBAL(ppc64_swapcontext)
299 bl .save_nvgprs
300 bl .sys_swapcontext
301 b syscall_exit
302
355_GLOBAL(ret_from_fork) 303_GLOBAL(ret_from_fork)
356 bl .schedule_tail 304 bl .schedule_tail
357 REST_NVGPRS(r1) 305 REST_NVGPRS(r1)
diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
index 03b25f9359f8..a0579e859b21 100644
--- a/arch/powerpc/kernel/head_32.S
+++ b/arch/powerpc/kernel/head_32.S
@@ -714,6 +714,7 @@ AltiVecUnavailable:
714#ifdef CONFIG_ALTIVEC 714#ifdef CONFIG_ALTIVEC
715 bne load_up_altivec /* if from user, just load it up */ 715 bne load_up_altivec /* if from user, just load it up */
716#endif /* CONFIG_ALTIVEC */ 716#endif /* CONFIG_ALTIVEC */
717 addi r3,r1,STACK_FRAME_OVERHEAD
717 EXC_XFER_EE_LITE(0xf20, altivec_unavailable_exception) 718 EXC_XFER_EE_LITE(0xf20, altivec_unavailable_exception)
718 719
719PerformanceMonitor: 720PerformanceMonitor:
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S
index 415659629394..9b65029dd2a3 100644
--- a/arch/powerpc/kernel/head_64.S
+++ b/arch/powerpc/kernel/head_64.S
@@ -139,7 +139,7 @@ _GLOBAL(__secondary_hold)
139 ori r24,r24,MSR_RI 139 ori r24,r24,MSR_RI
140 mtmsrd r24 /* RI on */ 140 mtmsrd r24 /* RI on */
141 141
142 /* Grab our linux cpu number */ 142 /* Grab our physical cpu number */
143 mr r24,r3 143 mr r24,r3
144 144
145 /* Tell the master cpu we're here */ 145 /* Tell the master cpu we're here */
@@ -153,12 +153,7 @@ _GLOBAL(__secondary_hold)
153 cmpdi 0,r4,1 153 cmpdi 0,r4,1
154 bne 100b 154 bne 100b
155 155
156#ifdef CONFIG_HMT 156#if defined(CONFIG_SMP) || defined(CONFIG_KEXEC)
157 SET_REG_IMMEDIATE(r4, .hmt_init)
158 mtctr r4
159 bctr
160#else
161#ifdef CONFIG_SMP
162 LOAD_REG_IMMEDIATE(r4, .pSeries_secondary_smp_init) 157 LOAD_REG_IMMEDIATE(r4, .pSeries_secondary_smp_init)
163 mtctr r4 158 mtctr r4
164 mr r3,r24 159 mr r3,r24
@@ -166,7 +161,6 @@ _GLOBAL(__secondary_hold)
166#else 161#else
167 BUG_OPCODE 162 BUG_OPCODE
168#endif 163#endif
169#endif
170 164
171/* This value is used to mark exception frames on the stack. */ 165/* This value is used to mark exception frames on the stack. */
172 .section ".toc","aw" 166 .section ".toc","aw"
@@ -321,7 +315,6 @@ exception_marker:
321label##_pSeries: \ 315label##_pSeries: \
322 HMT_MEDIUM; \ 316 HMT_MEDIUM; \
323 mtspr SPRN_SPRG1,r13; /* save r13 */ \ 317 mtspr SPRN_SPRG1,r13; /* save r13 */ \
324 RUNLATCH_ON(r13); \
325 EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, label##_common) 318 EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, label##_common)
326 319
327#define STD_EXCEPTION_ISERIES(n, label, area) \ 320#define STD_EXCEPTION_ISERIES(n, label, area) \
@@ -329,7 +322,6 @@ label##_pSeries: \
329label##_iSeries: \ 322label##_iSeries: \
330 HMT_MEDIUM; \ 323 HMT_MEDIUM; \
331 mtspr SPRN_SPRG1,r13; /* save r13 */ \ 324 mtspr SPRN_SPRG1,r13; /* save r13 */ \
332 RUNLATCH_ON(r13); \
333 EXCEPTION_PROLOG_ISERIES_1(area); \ 325 EXCEPTION_PROLOG_ISERIES_1(area); \
334 EXCEPTION_PROLOG_ISERIES_2; \ 326 EXCEPTION_PROLOG_ISERIES_2; \
335 b label##_common 327 b label##_common
@@ -339,7 +331,6 @@ label##_iSeries: \
339label##_iSeries: \ 331label##_iSeries: \
340 HMT_MEDIUM; \ 332 HMT_MEDIUM; \
341 mtspr SPRN_SPRG1,r13; /* save r13 */ \ 333 mtspr SPRN_SPRG1,r13; /* save r13 */ \
342 RUNLATCH_ON(r13); \
343 EXCEPTION_PROLOG_ISERIES_1(PACA_EXGEN); \ 334 EXCEPTION_PROLOG_ISERIES_1(PACA_EXGEN); \
344 lbz r10,PACAPROCENABLED(r13); \ 335 lbz r10,PACAPROCENABLED(r13); \
345 cmpwi 0,r10,0; \ 336 cmpwi 0,r10,0; \
@@ -392,6 +383,7 @@ label##_common: \
392label##_common: \ 383label##_common: \
393 EXCEPTION_PROLOG_COMMON(trap, PACA_EXGEN); \ 384 EXCEPTION_PROLOG_COMMON(trap, PACA_EXGEN); \
394 DISABLE_INTS; \ 385 DISABLE_INTS; \
386 bl .ppc64_runlatch_on; \
395 addi r3,r1,STACK_FRAME_OVERHEAD; \ 387 addi r3,r1,STACK_FRAME_OVERHEAD; \
396 bl hdlr; \ 388 bl hdlr; \
397 b .ret_from_except_lite 389 b .ret_from_except_lite
@@ -409,7 +401,6 @@ __start_interrupts:
409_machine_check_pSeries: 401_machine_check_pSeries:
410 HMT_MEDIUM 402 HMT_MEDIUM
411 mtspr SPRN_SPRG1,r13 /* save r13 */ 403 mtspr SPRN_SPRG1,r13 /* save r13 */
412 RUNLATCH_ON(r13)
413 EXCEPTION_PROLOG_PSERIES(PACA_EXMC, machine_check_common) 404 EXCEPTION_PROLOG_PSERIES(PACA_EXMC, machine_check_common)
414 405
415 . = 0x300 406 . = 0x300
@@ -436,7 +427,6 @@ END_FTR_SECTION_IFCLR(CPU_FTR_SLB)
436data_access_slb_pSeries: 427data_access_slb_pSeries:
437 HMT_MEDIUM 428 HMT_MEDIUM
438 mtspr SPRN_SPRG1,r13 429 mtspr SPRN_SPRG1,r13
439 RUNLATCH_ON(r13)
440 mfspr r13,SPRN_SPRG3 /* get paca address into r13 */ 430 mfspr r13,SPRN_SPRG3 /* get paca address into r13 */
441 std r3,PACA_EXSLB+EX_R3(r13) 431 std r3,PACA_EXSLB+EX_R3(r13)
442 mfspr r3,SPRN_DAR 432 mfspr r3,SPRN_DAR
@@ -462,7 +452,6 @@ data_access_slb_pSeries:
462instruction_access_slb_pSeries: 452instruction_access_slb_pSeries:
463 HMT_MEDIUM 453 HMT_MEDIUM
464 mtspr SPRN_SPRG1,r13 454 mtspr SPRN_SPRG1,r13
465 RUNLATCH_ON(r13)
466 mfspr r13,SPRN_SPRG3 /* get paca address into r13 */ 455 mfspr r13,SPRN_SPRG3 /* get paca address into r13 */
467 std r3,PACA_EXSLB+EX_R3(r13) 456 std r3,PACA_EXSLB+EX_R3(r13)
468 mfspr r3,SPRN_SRR0 /* SRR0 is faulting address */ 457 mfspr r3,SPRN_SRR0 /* SRR0 is faulting address */
@@ -493,7 +482,6 @@ instruction_access_slb_pSeries:
493 .globl system_call_pSeries 482 .globl system_call_pSeries
494system_call_pSeries: 483system_call_pSeries:
495 HMT_MEDIUM 484 HMT_MEDIUM
496 RUNLATCH_ON(r9)
497 mr r9,r13 485 mr r9,r13
498 mfmsr r10 486 mfmsr r10
499 mfspr r13,SPRN_SPRG3 487 mfspr r13,SPRN_SPRG3
@@ -577,7 +565,6 @@ slb_miss_user_pseries:
577system_reset_fwnmi: 565system_reset_fwnmi:
578 HMT_MEDIUM 566 HMT_MEDIUM
579 mtspr SPRN_SPRG1,r13 /* save r13 */ 567 mtspr SPRN_SPRG1,r13 /* save r13 */
580 RUNLATCH_ON(r13)
581 EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, system_reset_common) 568 EXCEPTION_PROLOG_PSERIES(PACA_EXGEN, system_reset_common)
582 569
583 .globl machine_check_fwnmi 570 .globl machine_check_fwnmi
@@ -585,7 +572,6 @@ system_reset_fwnmi:
585machine_check_fwnmi: 572machine_check_fwnmi:
586 HMT_MEDIUM 573 HMT_MEDIUM
587 mtspr SPRN_SPRG1,r13 /* save r13 */ 574 mtspr SPRN_SPRG1,r13 /* save r13 */
588 RUNLATCH_ON(r13)
589 EXCEPTION_PROLOG_PSERIES(PACA_EXMC, machine_check_common) 575 EXCEPTION_PROLOG_PSERIES(PACA_EXMC, machine_check_common)
590 576
591#ifdef CONFIG_PPC_ISERIES 577#ifdef CONFIG_PPC_ISERIES
@@ -896,7 +882,6 @@ unrecov_fer:
896 .align 7 882 .align 7
897 .globl data_access_common 883 .globl data_access_common
898data_access_common: 884data_access_common:
899 RUNLATCH_ON(r10) /* It wont fit in the 0x300 handler */
900 mfspr r10,SPRN_DAR 885 mfspr r10,SPRN_DAR
901 std r10,PACA_EXGEN+EX_DAR(r13) 886 std r10,PACA_EXGEN+EX_DAR(r13)
902 mfspr r10,SPRN_DSISR 887 mfspr r10,SPRN_DSISR
@@ -1044,6 +1029,7 @@ hardware_interrupt_common:
1044 EXCEPTION_PROLOG_COMMON(0x500, PACA_EXGEN) 1029 EXCEPTION_PROLOG_COMMON(0x500, PACA_EXGEN)
1045hardware_interrupt_entry: 1030hardware_interrupt_entry:
1046 DISABLE_INTS 1031 DISABLE_INTS
1032 bl .ppc64_runlatch_on
1047 addi r3,r1,STACK_FRAME_OVERHEAD 1033 addi r3,r1,STACK_FRAME_OVERHEAD
1048 bl .do_IRQ 1034 bl .do_IRQ
1049 b .ret_from_except_lite 1035 b .ret_from_except_lite
@@ -1551,6 +1537,9 @@ _STATIC(__boot_from_prom)
1551 mr r28,r6 1537 mr r28,r6
1552 mr r27,r7 1538 mr r27,r7
1553 1539
1540 /* Align the stack to 16-byte boundary for broken yaboot */
1541 rldicr r1,r1,0,59
1542
1554 /* Make sure we are running in 64 bits mode */ 1543 /* Make sure we are running in 64 bits mode */
1555 bl .enable_64b_mode 1544 bl .enable_64b_mode
1556 1545
@@ -1818,22 +1807,6 @@ _STATIC(start_here_multiplatform)
1818 ori r6,r6,MSR_RI 1807 ori r6,r6,MSR_RI
1819 mtmsrd r6 /* RI on */ 1808 mtmsrd r6 /* RI on */
1820 1809
1821#ifdef CONFIG_HMT
1822 /* Start up the second thread on cpu 0 */
1823 mfspr r3,SPRN_PVR
1824 srwi r3,r3,16
1825 cmpwi r3,0x34 /* Pulsar */
1826 beq 90f
1827 cmpwi r3,0x36 /* Icestar */
1828 beq 90f
1829 cmpwi r3,0x37 /* SStar */
1830 beq 90f
1831 b 91f /* HMT not supported */
183290: li r3,0
1833 bl .hmt_start_secondary
183491:
1835#endif
1836
1837 /* The following gets the stack and TOC set up with the regs */ 1810 /* The following gets the stack and TOC set up with the regs */
1838 /* pointing to the real addr of the kernel stack. This is */ 1811 /* pointing to the real addr of the kernel stack. This is */
1839 /* all done to support the C function call below which sets */ 1812 /* all done to support the C function call below which sets */
@@ -1947,77 +1920,8 @@ _STATIC(start_here_common)
1947 1920
1948 bl .start_kernel 1921 bl .start_kernel
1949 1922
1950_GLOBAL(hmt_init) 1923 /* Not reached */
1951#ifdef CONFIG_HMT 1924 BUG_OPCODE
1952 LOAD_REG_IMMEDIATE(r5, hmt_thread_data)
1953 mfspr r7,SPRN_PVR
1954 srwi r7,r7,16
1955 cmpwi r7,0x34 /* Pulsar */
1956 beq 90f
1957 cmpwi r7,0x36 /* Icestar */
1958 beq 91f
1959 cmpwi r7,0x37 /* SStar */
1960 beq 91f
1961 b 101f
196290: mfspr r6,SPRN_PIR
1963 andi. r6,r6,0x1f
1964 b 92f
196591: mfspr r6,SPRN_PIR
1966 andi. r6,r6,0x3ff
196792: sldi r4,r24,3
1968 stwx r6,r5,r4
1969 bl .hmt_start_secondary
1970 b 101f
1971
1972__hmt_secondary_hold:
1973 LOAD_REG_IMMEDIATE(r5, hmt_thread_data)
1974 clrldi r5,r5,4
1975 li r7,0
1976 mfspr r6,SPRN_PIR
1977 mfspr r8,SPRN_PVR
1978 srwi r8,r8,16
1979 cmpwi r8,0x34
1980 bne 93f
1981 andi. r6,r6,0x1f
1982 b 103f
198393: andi. r6,r6,0x3f
1984
1985103: lwzx r8,r5,r7
1986 cmpw r8,r6
1987 beq 104f
1988 addi r7,r7,8
1989 b 103b
1990
1991104: addi r7,r7,4
1992 lwzx r9,r5,r7
1993 mr r24,r9
1994101:
1995#endif
1996 mr r3,r24
1997 b .pSeries_secondary_smp_init
1998
1999#ifdef CONFIG_HMT
2000_GLOBAL(hmt_start_secondary)
2001 LOAD_REG_IMMEDIATE(r4,__hmt_secondary_hold)
2002 clrldi r4,r4,4
2003 mtspr SPRN_NIADORM, r4
2004 mfspr r4, SPRN_MSRDORM
2005 li r5, -65
2006 and r4, r4, r5
2007 mtspr SPRN_MSRDORM, r4
2008 lis r4,0xffef
2009 ori r4,r4,0x7403
2010 mtspr SPRN_TSC, r4
2011 li r4,0x1f4
2012 mtspr SPRN_TST, r4
2013 mfspr r4, SPRN_HID0
2014 ori r4, r4, 0x1
2015 mtspr SPRN_HID0, r4
2016 mfspr r4, SPRN_CTRLF
2017 oris r4, r4, 0x40
2018 mtspr SPRN_CTRLT, r4
2019 blr
2020#endif
2021 1925
2022/* 1926/*
2023 * We put a few things here that have to be page-aligned. 1927 * We put a few things here that have to be page-aligned.
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c
index 1ae96a8ed7e2..e789fef4eb8a 100644
--- a/arch/powerpc/kernel/lparcfg.c
+++ b/arch/powerpc/kernel/lparcfg.c
@@ -341,7 +341,7 @@ static int lparcfg_data(struct seq_file *m, void *v)
341 const char *system_id = ""; 341 const char *system_id = "";
342 unsigned int *lp_index_ptr, lp_index = 0; 342 unsigned int *lp_index_ptr, lp_index = 0;
343 struct device_node *rtas_node; 343 struct device_node *rtas_node;
344 int *lrdrp; 344 int *lrdrp = NULL;
345 345
346 rootdn = find_path_device("/"); 346 rootdn = find_path_device("/");
347 if (rootdn) { 347 if (rootdn) {
@@ -362,7 +362,9 @@ static int lparcfg_data(struct seq_file *m, void *v)
362 seq_printf(m, "partition_id=%d\n", (int)lp_index); 362 seq_printf(m, "partition_id=%d\n", (int)lp_index);
363 363
364 rtas_node = find_path_device("/rtas"); 364 rtas_node = find_path_device("/rtas");
365 lrdrp = (int *)get_property(rtas_node, "ibm,lrdr-capacity", NULL); 365 if (rtas_node)
366 lrdrp = (int *)get_property(rtas_node, "ibm,lrdr-capacity",
367 NULL);
366 368
367 if (lrdrp == NULL) { 369 if (lrdrp == NULL) {
368 partition_potential_processors = vdso_data->processorCount; 370 partition_potential_processors = vdso_data->processorCount;
diff --git a/arch/powerpc/kernel/machine_kexec_64.c b/arch/powerpc/kernel/machine_kexec_64.c
index d6431440c54f..ee166c586642 100644
--- a/arch/powerpc/kernel/machine_kexec_64.c
+++ b/arch/powerpc/kernel/machine_kexec_64.c
@@ -26,8 +26,6 @@
26#include <asm/prom.h> 26#include <asm/prom.h>
27#include <asm/smp.h> 27#include <asm/smp.h>
28 28
29#define HASH_GROUP_SIZE 0x80 /* size of each hash group, asm/mmu.h */
30
31int default_machine_kexec_prepare(struct kimage *image) 29int default_machine_kexec_prepare(struct kimage *image)
32{ 30{
33 int i; 31 int i;
@@ -61,7 +59,7 @@ int default_machine_kexec_prepare(struct kimage *image)
61 */ 59 */
62 if (htab_address) { 60 if (htab_address) {
63 low = __pa(htab_address); 61 low = __pa(htab_address);
64 high = low + (htab_hash_mask + 1) * HASH_GROUP_SIZE; 62 high = low + htab_size_bytes;
65 63
66 for (i = 0; i < image->nr_segments; i++) { 64 for (i = 0; i < image->nr_segments; i++) {
67 begin = image->segment[i].mem; 65 begin = image->segment[i].mem;
@@ -294,7 +292,7 @@ void default_machine_kexec(struct kimage *image)
294} 292}
295 293
296/* Values we need to export to the second kernel via the device tree. */ 294/* Values we need to export to the second kernel via the device tree. */
297static unsigned long htab_base, htab_size, kernel_end; 295static unsigned long htab_base, kernel_end;
298 296
299static struct property htab_base_prop = { 297static struct property htab_base_prop = {
300 .name = "linux,htab-base", 298 .name = "linux,htab-base",
@@ -305,7 +303,7 @@ static struct property htab_base_prop = {
305static struct property htab_size_prop = { 303static struct property htab_size_prop = {
306 .name = "linux,htab-size", 304 .name = "linux,htab-size",
307 .length = sizeof(unsigned long), 305 .length = sizeof(unsigned long),
308 .value = (unsigned char *)&htab_size, 306 .value = (unsigned char *)&htab_size_bytes,
309}; 307};
310 308
311static struct property kernel_end_prop = { 309static struct property kernel_end_prop = {
@@ -331,8 +329,6 @@ static void __init export_htab_values(void)
331 329
332 htab_base = __pa(htab_address); 330 htab_base = __pa(htab_address);
333 prom_add_property(node, &htab_base_prop); 331 prom_add_property(node, &htab_base_prop);
334
335 htab_size = 1UL << ppc64_pft_size;
336 prom_add_property(node, &htab_size_prop); 332 prom_add_property(node, &htab_size_prop);
337 333
338 out: 334 out:
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
index d9a459c144d8..8a731ea877b7 100644
--- a/arch/powerpc/kernel/ppc_ksyms.c
+++ b/arch/powerpc/kernel/ppc_ksyms.c
@@ -79,15 +79,8 @@ EXPORT_SYMBOL(sys_sigreturn);
79EXPORT_SYMBOL(strcpy); 79EXPORT_SYMBOL(strcpy);
80EXPORT_SYMBOL(strncpy); 80EXPORT_SYMBOL(strncpy);
81EXPORT_SYMBOL(strcat); 81EXPORT_SYMBOL(strcat);
82EXPORT_SYMBOL(strncat);
83EXPORT_SYMBOL(strchr);
84EXPORT_SYMBOL(strrchr);
85EXPORT_SYMBOL(strpbrk);
86EXPORT_SYMBOL(strstr);
87EXPORT_SYMBOL(strlen); 82EXPORT_SYMBOL(strlen);
88EXPORT_SYMBOL(strnlen);
89EXPORT_SYMBOL(strcmp); 83EXPORT_SYMBOL(strcmp);
90EXPORT_SYMBOL(strncmp);
91EXPORT_SYMBOL(strcasecmp); 84EXPORT_SYMBOL(strcasecmp);
92 85
93EXPORT_SYMBOL(csum_partial); 86EXPORT_SYMBOL(csum_partial);
@@ -185,9 +178,6 @@ EXPORT_SYMBOL(adb_try_handler_change);
185EXPORT_SYMBOL(cuda_request); 178EXPORT_SYMBOL(cuda_request);
186EXPORT_SYMBOL(cuda_poll); 179EXPORT_SYMBOL(cuda_poll);
187#endif /* CONFIG_ADB_CUDA */ 180#endif /* CONFIG_ADB_CUDA */
188#ifdef CONFIG_PPC_PMAC
189EXPORT_SYMBOL(sys_ctrler);
190#endif
191#ifdef CONFIG_VT 181#ifdef CONFIG_VT
192EXPORT_SYMBOL(kd_mksound); 182EXPORT_SYMBOL(kd_mksound);
193#endif 183#endif
@@ -205,7 +195,6 @@ EXPORT_SYMBOL(__lshrdi3);
205EXPORT_SYMBOL(memcpy); 195EXPORT_SYMBOL(memcpy);
206EXPORT_SYMBOL(memset); 196EXPORT_SYMBOL(memset);
207EXPORT_SYMBOL(memmove); 197EXPORT_SYMBOL(memmove);
208EXPORT_SYMBOL(memscan);
209EXPORT_SYMBOL(memcmp); 198EXPORT_SYMBOL(memcmp);
210EXPORT_SYMBOL(memchr); 199EXPORT_SYMBOL(memchr);
211 200
@@ -214,7 +203,6 @@ EXPORT_SYMBOL(screen_info);
214#endif 203#endif
215 204
216#ifdef CONFIG_PPC32 205#ifdef CONFIG_PPC32
217EXPORT_SYMBOL(__delay);
218EXPORT_SYMBOL(timer_interrupt); 206EXPORT_SYMBOL(timer_interrupt);
219EXPORT_SYMBOL(irq_desc); 207EXPORT_SYMBOL(irq_desc);
220EXPORT_SYMBOL(tb_ticks_per_jiffy); 208EXPORT_SYMBOL(tb_ticks_per_jiffy);
@@ -222,10 +210,6 @@ EXPORT_SYMBOL(console_drivers);
222EXPORT_SYMBOL(cacheable_memcpy); 210EXPORT_SYMBOL(cacheable_memcpy);
223#endif 211#endif
224 212
225EXPORT_SYMBOL(__up);
226EXPORT_SYMBOL(__down);
227EXPORT_SYMBOL(__down_interruptible);
228
229#ifdef CONFIG_8xx 213#ifdef CONFIG_8xx
230EXPORT_SYMBOL(cpm_install_handler); 214EXPORT_SYMBOL(cpm_install_handler);
231EXPORT_SYMBOL(cpm_free_handler); 215EXPORT_SYMBOL(cpm_free_handler);
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 57703994a063..c225cf154bfe 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -888,3 +888,35 @@ void dump_stack(void)
888 show_stack(current, NULL); 888 show_stack(current, NULL);
889} 889}
890EXPORT_SYMBOL(dump_stack); 890EXPORT_SYMBOL(dump_stack);
891
892#ifdef CONFIG_PPC64
893void ppc64_runlatch_on(void)
894{
895 unsigned long ctrl;
896
897 if (cpu_has_feature(CPU_FTR_CTRL) && !test_thread_flag(TIF_RUNLATCH)) {
898 HMT_medium();
899
900 ctrl = mfspr(SPRN_CTRLF);
901 ctrl |= CTRL_RUNLATCH;
902 mtspr(SPRN_CTRLT, ctrl);
903
904 set_thread_flag(TIF_RUNLATCH);
905 }
906}
907
908void ppc64_runlatch_off(void)
909{
910 unsigned long ctrl;
911
912 if (cpu_has_feature(CPU_FTR_CTRL) && test_thread_flag(TIF_RUNLATCH)) {
913 HMT_medium();
914
915 clear_thread_flag(TIF_RUNLATCH);
916
917 ctrl = mfspr(SPRN_CTRLF);
918 ctrl &= ~CTRL_RUNLATCH;
919 mtspr(SPRN_CTRLT, ctrl);
920 }
921}
922#endif
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 294832a7e0a6..6dbd21726770 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -816,8 +816,6 @@ void __init unflatten_device_tree(void)
816{ 816{
817 unsigned long start, mem, size; 817 unsigned long start, mem, size;
818 struct device_node **allnextp = &allnodes; 818 struct device_node **allnextp = &allnodes;
819 char *p = NULL;
820 int l = 0;
821 819
822 DBG(" -> unflatten_device_tree()\n"); 820 DBG(" -> unflatten_device_tree()\n");
823 821
@@ -857,19 +855,6 @@ void __init unflatten_device_tree(void)
857 if (of_chosen == NULL) 855 if (of_chosen == NULL)
858 of_chosen = of_find_node_by_path("/chosen@0"); 856 of_chosen = of_find_node_by_path("/chosen@0");
859 857
860 /* Retreive command line */
861 if (of_chosen != NULL) {
862 p = (char *)get_property(of_chosen, "bootargs", &l);
863 if (p != NULL && l > 0)
864 strlcpy(cmd_line, p, min(l, COMMAND_LINE_SIZE));
865 }
866#ifdef CONFIG_CMDLINE
867 if (l == 0 || (l == 1 && (*p) == 0))
868 strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
869#endif /* CONFIG_CMDLINE */
870
871 DBG("Command line is: %s\n", cmd_line);
872
873 DBG(" <- unflatten_device_tree()\n"); 858 DBG(" <- unflatten_device_tree()\n");
874} 859}
875 860
@@ -940,6 +925,8 @@ static int __init early_init_dt_scan_chosen(unsigned long node,
940{ 925{
941 u32 *prop; 926 u32 *prop;
942 unsigned long *lprop; 927 unsigned long *lprop;
928 unsigned long l;
929 char *p;
943 930
944 DBG("search \"chosen\", depth: %d, uname: %s\n", depth, uname); 931 DBG("search \"chosen\", depth: %d, uname: %s\n", depth, uname);
945 932
@@ -1004,6 +991,41 @@ static int __init early_init_dt_scan_chosen(unsigned long node,
1004 crashk_res.end = crashk_res.start + *lprop - 1; 991 crashk_res.end = crashk_res.start + *lprop - 1;
1005#endif 992#endif
1006 993
994 /* Retreive command line */
995 p = of_get_flat_dt_prop(node, "bootargs", &l);
996 if (p != NULL && l > 0)
997 strlcpy(cmd_line, p, min((int)l, COMMAND_LINE_SIZE));
998
999#ifdef CONFIG_CMDLINE
1000 if (l == 0 || (l == 1 && (*p) == 0))
1001 strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
1002#endif /* CONFIG_CMDLINE */
1003
1004 DBG("Command line is: %s\n", cmd_line);
1005
1006 if (strstr(cmd_line, "mem=")) {
1007 char *p, *q;
1008 unsigned long maxmem = 0;
1009
1010 for (q = cmd_line; (p = strstr(q, "mem=")) != 0; ) {
1011 q = p + 4;
1012 if (p > cmd_line && p[-1] != ' ')
1013 continue;
1014 maxmem = simple_strtoul(q, &q, 0);
1015 if (*q == 'k' || *q == 'K') {
1016 maxmem <<= 10;
1017 ++q;
1018 } else if (*q == 'm' || *q == 'M') {
1019 maxmem <<= 20;
1020 ++q;
1021 } else if (*q == 'g' || *q == 'G') {
1022 maxmem <<= 30;
1023 ++q;
1024 }
1025 }
1026 memory_limit = maxmem;
1027 }
1028
1007 /* break now */ 1029 /* break now */
1008 return 1; 1030 return 1;
1009} 1031}
@@ -1124,7 +1146,7 @@ static void __init early_reserve_mem(void)
1124 size_32 = *(reserve_map_32++); 1146 size_32 = *(reserve_map_32++);
1125 if (size_32 == 0) 1147 if (size_32 == 0)
1126 break; 1148 break;
1127 DBG("reserving: %lx -> %lx\n", base_32, size_32); 1149 DBG("reserving: %x -> %x\n", base_32, size_32);
1128 lmb_reserve(base_32, size_32); 1150 lmb_reserve(base_32, size_32);
1129 } 1151 }
1130 return; 1152 return;
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
index ec7153f4d47c..813c2cd194c2 100644
--- a/arch/powerpc/kernel/prom_init.c
+++ b/arch/powerpc/kernel/prom_init.c
@@ -205,14 +205,6 @@ static cell_t __initdata regbuf[1024];
205 205
206#define MAX_CPU_THREADS 2 206#define MAX_CPU_THREADS 2
207 207
208/* TO GO */
209#ifdef CONFIG_HMT
210struct {
211 unsigned int pir;
212 unsigned int threadid;
213} hmt_thread_data[NR_CPUS];
214#endif /* CONFIG_HMT */
215
216/* 208/*
217 * Error results ... some OF calls will return "-1" on error, some 209 * Error results ... some OF calls will return "-1" on error, some
218 * will return 0, some will return either. To simplify, here are 210 * will return 0, some will return either. To simplify, here are
@@ -986,7 +978,7 @@ static void __init prom_init_mem(void)
986 if (size == 0) 978 if (size == 0)
987 continue; 979 continue;
988 prom_debug(" %x %x\n", base, size); 980 prom_debug(" %x %x\n", base, size);
989 if (base == 0) 981 if (base == 0 && (RELOC(of_platform) & PLATFORM_LPAR))
990 RELOC(rmo_top) = size; 982 RELOC(rmo_top) = size;
991 if ((base + size) > RELOC(ram_top)) 983 if ((base + size) > RELOC(ram_top))
992 RELOC(ram_top) = base + size; 984 RELOC(ram_top) = base + size;
@@ -1319,10 +1311,6 @@ static void __init prom_hold_cpus(void)
1319 */ 1311 */
1320 *spinloop = 0; 1312 *spinloop = 0;
1321 1313
1322#ifdef CONFIG_HMT
1323 for (i = 0; i < NR_CPUS; i++)
1324 RELOC(hmt_thread_data)[i].pir = 0xdeadbeef;
1325#endif
1326 /* look for cpus */ 1314 /* look for cpus */
1327 for (node = 0; prom_next_node(&node); ) { 1315 for (node = 0; prom_next_node(&node); ) {
1328 type[0] = 0; 1316 type[0] = 0;
@@ -1389,32 +1377,6 @@ static void __init prom_hold_cpus(void)
1389 /* Reserve cpu #s for secondary threads. They start later. */ 1377 /* Reserve cpu #s for secondary threads. They start later. */
1390 cpuid += cpu_threads; 1378 cpuid += cpu_threads;
1391 } 1379 }
1392#ifdef CONFIG_HMT
1393 /* Only enable HMT on processors that provide support. */
1394 if (__is_processor(PV_PULSAR) ||
1395 __is_processor(PV_ICESTAR) ||
1396 __is_processor(PV_SSTAR)) {
1397 prom_printf(" starting secondary threads\n");
1398
1399 for (i = 0; i < NR_CPUS; i += 2) {
1400 if (!cpu_online(i))
1401 continue;
1402
1403 if (i == 0) {
1404 unsigned long pir = mfspr(SPRN_PIR);
1405 if (__is_processor(PV_PULSAR)) {
1406 RELOC(hmt_thread_data)[i].pir =
1407 pir & 0x1f;
1408 } else {
1409 RELOC(hmt_thread_data)[i].pir =
1410 pir & 0x3ff;
1411 }
1412 }
1413 }
1414 } else {
1415 prom_printf("Processor is not HMT capable\n");
1416 }
1417#endif
1418 1380
1419 if (cpuid > NR_CPUS) 1381 if (cpuid > NR_CPUS)
1420 prom_printf("WARNING: maximum CPUs (" __stringify(NR_CPUS) 1382 prom_printf("WARNING: maximum CPUs (" __stringify(NR_CPUS)
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
index 400793c71304..bcb83574335b 100644
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -561,10 +561,7 @@ void do_syscall_trace_leave(struct pt_regs *regs)
561 regs->result); 561 regs->result);
562 562
563 if ((test_thread_flag(TIF_SYSCALL_TRACE) 563 if ((test_thread_flag(TIF_SYSCALL_TRACE)
564#ifdef CONFIG_PPC64 564 || test_thread_flag(TIF_SINGLESTEP))
565 || test_thread_flag(TIF_SINGLESTEP)
566#endif
567 )
568 && (current->ptrace & PT_PTRACED)) 565 && (current->ptrace & PT_PTRACED))
569 do_syscall_trace(); 566 do_syscall_trace();
570} 567}
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index a717dff695ef..f96c49b03ba0 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -311,8 +311,6 @@ void smp_release_cpus(void)
311 311
312 DBG(" <- smp_release_cpus()\n"); 312 DBG(" <- smp_release_cpus()\n");
313} 313}
314#else
315#define smp_release_cpus()
316#endif /* CONFIG_SMP || CONFIG_KEXEC */ 314#endif /* CONFIG_SMP || CONFIG_KEXEC */
317 315
318/* 316/*
@@ -473,10 +471,12 @@ void __init setup_system(void)
473 check_smt_enabled(); 471 check_smt_enabled();
474 smp_setup_cpu_maps(); 472 smp_setup_cpu_maps();
475 473
474#ifdef CONFIG_SMP
476 /* Release secondary cpus out of their spinloops at 0x60 now that 475 /* Release secondary cpus out of their spinloops at 0x60 now that
477 * we can map physical -> logical CPU ids 476 * we can map physical -> logical CPU ids
478 */ 477 */
479 smp_release_cpus(); 478 smp_release_cpus();
479#endif
480 480
481 printk("Starting Linux PPC64 %s\n", system_utsname.version); 481 printk("Starting Linux PPC64 %s\n", system_utsname.version);
482 482
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c
index bd837b5dbf06..d7a4e814974d 100644
--- a/arch/powerpc/kernel/signal_32.c
+++ b/arch/powerpc/kernel/signal_32.c
@@ -151,10 +151,7 @@ static inline int save_general_regs(struct pt_regs *regs,
151 elf_greg_t64 *gregs = (elf_greg_t64 *)regs; 151 elf_greg_t64 *gregs = (elf_greg_t64 *)regs;
152 int i; 152 int i;
153 153
154 if (!FULL_REGS(regs)) { 154 WARN_ON(!FULL_REGS(regs));
155 set_thread_flag(TIF_SAVE_NVGPRS);
156 current_thread_info()->nvgprs_frame = frame->mc_gregs;
157 }
158 155
159 for (i = 0; i <= PT_RESULT; i ++) { 156 for (i = 0; i <= PT_RESULT; i ++) {
160 if (i == 14 && !FULL_REGS(regs)) 157 if (i == 14 && !FULL_REGS(regs))
@@ -215,15 +212,7 @@ static inline int get_old_sigaction(struct k_sigaction *new_ka,
215static inline int save_general_regs(struct pt_regs *regs, 212static inline int save_general_regs(struct pt_regs *regs,
216 struct mcontext __user *frame) 213 struct mcontext __user *frame)
217{ 214{
218 if (!FULL_REGS(regs)) { 215 WARN_ON(!FULL_REGS(regs));
219 /* Zero out the unsaved GPRs to avoid information
220 leak, and set TIF_SAVE_NVGPRS to ensure that the
221 registers do actually get saved later. */
222 memset(&regs->gpr[14], 0, 18 * sizeof(unsigned long));
223 current_thread_info()->nvgprs_frame = &frame->mc_gregs;
224 set_thread_flag(TIF_SAVE_NVGPRS);
225 }
226
227 return __copy_to_user(&frame->mc_gregs, regs, GP_REGS_SIZE); 216 return __copy_to_user(&frame->mc_gregs, regs, GP_REGS_SIZE);
228} 217}
229 218
@@ -826,8 +815,8 @@ static int do_setcontext(struct ucontext __user *ucp, struct pt_regs *regs, int
826} 815}
827 816
828long sys_swapcontext(struct ucontext __user *old_ctx, 817long sys_swapcontext(struct ucontext __user *old_ctx,
829 struct ucontext __user *new_ctx, 818 struct ucontext __user *new_ctx,
830 int ctx_size, int r6, int r7, int r8, struct pt_regs *regs) 819 int ctx_size, int r6, int r7, int r8, struct pt_regs *regs)
831{ 820{
832 unsigned char tmp; 821 unsigned char tmp;
833 822
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c
index 497a5d3df359..4324f8a8ba24 100644
--- a/arch/powerpc/kernel/signal_64.c
+++ b/arch/powerpc/kernel/signal_64.c
@@ -118,14 +118,7 @@ static long setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs,
118 err |= __put_user(0, &sc->v_regs); 118 err |= __put_user(0, &sc->v_regs);
119#endif /* CONFIG_ALTIVEC */ 119#endif /* CONFIG_ALTIVEC */
120 err |= __put_user(&sc->gp_regs, &sc->regs); 120 err |= __put_user(&sc->gp_regs, &sc->regs);
121 if (!FULL_REGS(regs)) { 121 WARN_ON(!FULL_REGS(regs));
122 /* Zero out the unsaved GPRs to avoid information
123 leak, and set TIF_SAVE_NVGPRS to ensure that the
124 registers do actually get saved later. */
125 memset(&regs->gpr[14], 0, 18 * sizeof(unsigned long));
126 set_thread_flag(TIF_SAVE_NVGPRS);
127 current_thread_info()->nvgprs_frame = &sc->gp_regs;
128 }
129 err |= __copy_to_user(&sc->gp_regs, regs, GP_REGS_SIZE); 122 err |= __copy_to_user(&sc->gp_regs, regs, GP_REGS_SIZE);
130 err |= __copy_to_user(&sc->fp_regs, &current->thread.fpr, FP_REGS_SIZE); 123 err |= __copy_to_user(&sc->fp_regs, &current->thread.fpr, FP_REGS_SIZE);
131 err |= __put_user(signr, &sc->signal); 124 err |= __put_user(signr, &sc->signal);
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c
index 475249dc2350..cd75ab2908fa 100644
--- a/arch/powerpc/kernel/sys_ppc32.c
+++ b/arch/powerpc/kernel/sys_ppc32.c
@@ -176,7 +176,6 @@ struct timex32 {
176}; 176};
177 177
178extern int do_adjtimex(struct timex *); 178extern int do_adjtimex(struct timex *);
179extern void ppc_adjtimex(void);
180 179
181asmlinkage long compat_sys_adjtimex(struct timex32 __user *utp) 180asmlinkage long compat_sys_adjtimex(struct timex32 __user *utp)
182{ 181{
@@ -209,9 +208,6 @@ asmlinkage long compat_sys_adjtimex(struct timex32 __user *utp)
209 208
210 ret = do_adjtimex(&txc); 209 ret = do_adjtimex(&txc);
211 210
212 /* adjust the conversion of TB to time of day to track adjtimex */
213 ppc_adjtimex();
214
215 if(put_user(txc.modes, &utp->modes) || 211 if(put_user(txc.modes, &utp->modes) ||
216 __put_user(txc.offset, &utp->offset) || 212 __put_user(txc.offset, &utp->offset) ||
217 __put_user(txc.freq, &utp->freq) || 213 __put_user(txc.freq, &utp->freq) ||
diff --git a/arch/powerpc/kernel/systbl.S b/arch/powerpc/kernel/systbl.S
index 8a9f994ed917..1ad55f0466fd 100644
--- a/arch/powerpc/kernel/systbl.S
+++ b/arch/powerpc/kernel/systbl.S
@@ -288,7 +288,7 @@ COMPAT_SYS(clock_settime)
288COMPAT_SYS(clock_gettime) 288COMPAT_SYS(clock_gettime)
289COMPAT_SYS(clock_getres) 289COMPAT_SYS(clock_getres)
290COMPAT_SYS(clock_nanosleep) 290COMPAT_SYS(clock_nanosleep)
291COMPAT_SYS(swapcontext) 291SYSX(ppc64_swapcontext,ppc32_swapcontext,ppc_swapcontext)
292COMPAT_SYS(tgkill) 292COMPAT_SYS(tgkill)
293COMPAT_SYS(utimes) 293COMPAT_SYS(utimes)
294COMPAT_SYS(statfs64) 294COMPAT_SYS(statfs64)
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 1886045a2fd8..2a7ddc579379 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -50,6 +50,7 @@
50#include <linux/security.h> 50#include <linux/security.h>
51#include <linux/percpu.h> 51#include <linux/percpu.h>
52#include <linux/rtc.h> 52#include <linux/rtc.h>
53#include <linux/jiffies.h>
53 54
54#include <asm/io.h> 55#include <asm/io.h>
55#include <asm/processor.h> 56#include <asm/processor.h>
@@ -99,7 +100,15 @@ EXPORT_SYMBOL(tb_ticks_per_usec);
99unsigned long tb_ticks_per_sec; 100unsigned long tb_ticks_per_sec;
100u64 tb_to_xs; 101u64 tb_to_xs;
101unsigned tb_to_us; 102unsigned tb_to_us;
102unsigned long processor_freq; 103
104#define TICKLEN_SCALE (SHIFT_SCALE - 10)
105u64 last_tick_len; /* units are ns / 2^TICKLEN_SCALE */
106u64 ticklen_to_xs; /* 0.64 fraction */
107
108/* If last_tick_len corresponds to about 1/HZ seconds, then
109 last_tick_len << TICKLEN_SHIFT will be about 2^63. */
110#define TICKLEN_SHIFT (63 - 30 - TICKLEN_SCALE + SHIFT_HZ)
111
103DEFINE_SPINLOCK(rtc_lock); 112DEFINE_SPINLOCK(rtc_lock);
104EXPORT_SYMBOL_GPL(rtc_lock); 113EXPORT_SYMBOL_GPL(rtc_lock);
105 114
@@ -113,10 +122,6 @@ extern unsigned long wall_jiffies;
113extern struct timezone sys_tz; 122extern struct timezone sys_tz;
114static long timezone_offset; 123static long timezone_offset;
115 124
116void ppc_adjtimex(void);
117
118static unsigned adjusting_time = 0;
119
120unsigned long ppc_proc_freq; 125unsigned long ppc_proc_freq;
121unsigned long ppc_tb_freq; 126unsigned long ppc_tb_freq;
122 127
@@ -178,8 +183,7 @@ static __inline__ void timer_check_rtc(void)
178 */ 183 */
179 if (ppc_md.set_rtc_time && ntp_synced() && 184 if (ppc_md.set_rtc_time && ntp_synced() &&
180 xtime.tv_sec - last_rtc_update >= 659 && 185 xtime.tv_sec - last_rtc_update >= 659 &&
181 abs((xtime.tv_nsec/1000) - (1000000-1000000/HZ)) < 500000/HZ && 186 abs((xtime.tv_nsec/1000) - (1000000-1000000/HZ)) < 500000/HZ) {
182 jiffies - wall_jiffies == 1) {
183 struct rtc_time tm; 187 struct rtc_time tm;
184 to_tm(xtime.tv_sec + 1 + timezone_offset, &tm); 188 to_tm(xtime.tv_sec + 1 + timezone_offset, &tm);
185 tm.tm_year -= 1900; 189 tm.tm_year -= 1900;
@@ -226,15 +230,14 @@ void do_gettimeofday(struct timeval *tv)
226 if (__USE_RTC()) { 230 if (__USE_RTC()) {
227 /* do this the old way */ 231 /* do this the old way */
228 unsigned long flags, seq; 232 unsigned long flags, seq;
229 unsigned int sec, nsec, usec, lost; 233 unsigned int sec, nsec, usec;
230 234
231 do { 235 do {
232 seq = read_seqbegin_irqsave(&xtime_lock, flags); 236 seq = read_seqbegin_irqsave(&xtime_lock, flags);
233 sec = xtime.tv_sec; 237 sec = xtime.tv_sec;
234 nsec = xtime.tv_nsec + tb_ticks_since(tb_last_stamp); 238 nsec = xtime.tv_nsec + tb_ticks_since(tb_last_stamp);
235 lost = jiffies - wall_jiffies;
236 } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); 239 } while (read_seqretry_irqrestore(&xtime_lock, seq, flags));
237 usec = nsec / 1000 + lost * (1000000 / HZ); 240 usec = nsec / 1000;
238 while (usec >= 1000000) { 241 while (usec >= 1000000) {
239 usec -= 1000000; 242 usec -= 1000000;
240 ++sec; 243 ++sec;
@@ -248,23 +251,6 @@ void do_gettimeofday(struct timeval *tv)
248 251
249EXPORT_SYMBOL(do_gettimeofday); 252EXPORT_SYMBOL(do_gettimeofday);
250 253
251/* Synchronize xtime with do_gettimeofday */
252
253static inline void timer_sync_xtime(unsigned long cur_tb)
254{
255#ifdef CONFIG_PPC64
256 /* why do we do this? */
257 struct timeval my_tv;
258
259 __do_gettimeofday(&my_tv, cur_tb);
260
261 if (xtime.tv_sec <= my_tv.tv_sec) {
262 xtime.tv_sec = my_tv.tv_sec;
263 xtime.tv_nsec = my_tv.tv_usec * 1000;
264 }
265#endif
266}
267
268/* 254/*
269 * There are two copies of tb_to_xs and stamp_xsec so that no 255 * There are two copies of tb_to_xs and stamp_xsec so that no
270 * lock is needed to access and use these values in 256 * lock is needed to access and use these values in
@@ -323,15 +309,30 @@ static __inline__ void timer_recalc_offset(u64 cur_tb)
323{ 309{
324 unsigned long offset; 310 unsigned long offset;
325 u64 new_stamp_xsec; 311 u64 new_stamp_xsec;
312 u64 tlen, t2x;
326 313
327 if (__USE_RTC()) 314 if (__USE_RTC())
328 return; 315 return;
316 tlen = current_tick_length();
329 offset = cur_tb - do_gtod.varp->tb_orig_stamp; 317 offset = cur_tb - do_gtod.varp->tb_orig_stamp;
330 if ((offset & 0x80000000u) == 0) 318 if (tlen == last_tick_len && offset < 0x80000000u) {
331 return; 319 /* check that we're still in sync; if not, resync */
332 new_stamp_xsec = do_gtod.varp->stamp_xsec 320 struct timeval tv;
333 + mulhdu(offset, do_gtod.varp->tb_to_xs); 321 __do_gettimeofday(&tv, cur_tb);
334 update_gtod(cur_tb, new_stamp_xsec, do_gtod.varp->tb_to_xs); 322 if (tv.tv_sec <= xtime.tv_sec &&
323 (tv.tv_sec < xtime.tv_sec ||
324 tv.tv_usec * 1000 <= xtime.tv_nsec))
325 return;
326 }
327 if (tlen != last_tick_len) {
328 t2x = mulhdu(tlen << TICKLEN_SHIFT, ticklen_to_xs);
329 last_tick_len = tlen;
330 } else
331 t2x = do_gtod.varp->tb_to_xs;
332 new_stamp_xsec = (u64) xtime.tv_nsec * XSEC_PER_SEC;
333 do_div(new_stamp_xsec, 1000000000);
334 new_stamp_xsec += (u64) xtime.tv_sec * XSEC_PER_SEC;
335 update_gtod(cur_tb, new_stamp_xsec, t2x);
335} 336}
336 337
337#ifdef CONFIG_SMP 338#ifdef CONFIG_SMP
@@ -462,13 +463,10 @@ void timer_interrupt(struct pt_regs * regs)
462 write_seqlock(&xtime_lock); 463 write_seqlock(&xtime_lock);
463 tb_last_jiffy += tb_ticks_per_jiffy; 464 tb_last_jiffy += tb_ticks_per_jiffy;
464 tb_last_stamp = per_cpu(last_jiffy, cpu); 465 tb_last_stamp = per_cpu(last_jiffy, cpu);
465 timer_recalc_offset(tb_last_jiffy);
466 do_timer(regs); 466 do_timer(regs);
467 timer_sync_xtime(tb_last_jiffy); 467 timer_recalc_offset(tb_last_jiffy);
468 timer_check_rtc(); 468 timer_check_rtc();
469 write_sequnlock(&xtime_lock); 469 write_sequnlock(&xtime_lock);
470 if (adjusting_time && (time_adjust == 0))
471 ppc_adjtimex();
472 } 470 }
473 471
474 next_dec = tb_ticks_per_jiffy - ticks; 472 next_dec = tb_ticks_per_jiffy - ticks;
@@ -492,16 +490,18 @@ void timer_interrupt(struct pt_regs * regs)
492 490
493void wakeup_decrementer(void) 491void wakeup_decrementer(void)
494{ 492{
495 int i; 493 unsigned long ticks;
496 494
497 set_dec(tb_ticks_per_jiffy);
498 /* 495 /*
499 * We don't expect this to be called on a machine with a 601, 496 * The timebase gets saved on sleep and restored on wakeup,
500 * so using get_tbl is fine. 497 * so all we need to do is to reset the decrementer.
501 */ 498 */
502 tb_last_stamp = tb_last_jiffy = get_tb(); 499 ticks = tb_ticks_since(__get_cpu_var(last_jiffy));
503 for_each_cpu(i) 500 if (ticks < tb_ticks_per_jiffy)
504 per_cpu(last_jiffy, i) = tb_last_stamp; 501 ticks = tb_ticks_per_jiffy - ticks;
502 else
503 ticks = 1;
504 set_dec(ticks);
505} 505}
506 506
507#ifdef CONFIG_SMP 507#ifdef CONFIG_SMP
@@ -541,8 +541,8 @@ int do_settimeofday(struct timespec *tv)
541 time_t wtm_sec, new_sec = tv->tv_sec; 541 time_t wtm_sec, new_sec = tv->tv_sec;
542 long wtm_nsec, new_nsec = tv->tv_nsec; 542 long wtm_nsec, new_nsec = tv->tv_nsec;
543 unsigned long flags; 543 unsigned long flags;
544 long int tb_delta; 544 u64 new_xsec;
545 u64 new_xsec, tb_delta_xs; 545 unsigned long tb_delta;
546 546
547 if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) 547 if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC)
548 return -EINVAL; 548 return -EINVAL;
@@ -563,9 +563,19 @@ int do_settimeofday(struct timespec *tv)
563 first_settimeofday = 0; 563 first_settimeofday = 0;
564 } 564 }
565#endif 565#endif
566
567 /*
568 * Subtract off the number of nanoseconds since the
569 * beginning of the last tick.
570 * Note that since we don't increment jiffies_64 anywhere other
571 * than in do_timer (since we don't have a lost tick problem),
572 * wall_jiffies will always be the same as jiffies,
573 * and therefore the (jiffies - wall_jiffies) computation
574 * has been removed.
575 */
566 tb_delta = tb_ticks_since(tb_last_stamp); 576 tb_delta = tb_ticks_since(tb_last_stamp);
567 tb_delta += (jiffies - wall_jiffies) * tb_ticks_per_jiffy; 577 tb_delta = mulhdu(tb_delta, do_gtod.varp->tb_to_xs); /* in xsec */
568 tb_delta_xs = mulhdu(tb_delta, do_gtod.varp->tb_to_xs); 578 new_nsec -= SCALE_XSEC(tb_delta, 1000000000);
569 579
570 wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - new_sec); 580 wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - new_sec);
571 wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - new_nsec); 581 wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - new_nsec);
@@ -580,12 +590,12 @@ int do_settimeofday(struct timespec *tv)
580 590
581 ntp_clear(); 591 ntp_clear();
582 592
583 new_xsec = 0; 593 new_xsec = xtime.tv_nsec;
584 if (new_nsec != 0) { 594 if (new_xsec != 0) {
585 new_xsec = (u64)new_nsec * XSEC_PER_SEC; 595 new_xsec *= XSEC_PER_SEC;
586 do_div(new_xsec, NSEC_PER_SEC); 596 do_div(new_xsec, NSEC_PER_SEC);
587 } 597 }
588 new_xsec += (u64)new_sec * XSEC_PER_SEC - tb_delta_xs; 598 new_xsec += (u64)xtime.tv_sec * XSEC_PER_SEC;
589 update_gtod(tb_last_jiffy, new_xsec, do_gtod.varp->tb_to_xs); 599 update_gtod(tb_last_jiffy, new_xsec, do_gtod.varp->tb_to_xs);
590 600
591 vdso_data->tz_minuteswest = sys_tz.tz_minuteswest; 601 vdso_data->tz_minuteswest = sys_tz.tz_minuteswest;
@@ -671,7 +681,7 @@ void __init time_init(void)
671 unsigned long flags; 681 unsigned long flags;
672 unsigned long tm = 0; 682 unsigned long tm = 0;
673 struct div_result res; 683 struct div_result res;
674 u64 scale; 684 u64 scale, x;
675 unsigned shift; 685 unsigned shift;
676 686
677 if (ppc_md.time_init != NULL) 687 if (ppc_md.time_init != NULL)
@@ -693,11 +703,36 @@ void __init time_init(void)
693 } 703 }
694 704
695 tb_ticks_per_jiffy = ppc_tb_freq / HZ; 705 tb_ticks_per_jiffy = ppc_tb_freq / HZ;
696 tb_ticks_per_sec = tb_ticks_per_jiffy * HZ; 706 tb_ticks_per_sec = ppc_tb_freq;
697 tb_ticks_per_usec = ppc_tb_freq / 1000000; 707 tb_ticks_per_usec = ppc_tb_freq / 1000000;
698 tb_to_us = mulhwu_scale_factor(ppc_tb_freq, 1000000); 708 tb_to_us = mulhwu_scale_factor(ppc_tb_freq, 1000000);
699 div128_by_32(1024*1024, 0, tb_ticks_per_sec, &res); 709
700 tb_to_xs = res.result_low; 710 /*
711 * Calculate the length of each tick in ns. It will not be
712 * exactly 1e9/HZ unless ppc_tb_freq is divisible by HZ.
713 * We compute 1e9 * tb_ticks_per_jiffy / ppc_tb_freq,
714 * rounded up.
715 */
716 x = (u64) NSEC_PER_SEC * tb_ticks_per_jiffy + ppc_tb_freq - 1;
717 do_div(x, ppc_tb_freq);
718 tick_nsec = x;
719 last_tick_len = x << TICKLEN_SCALE;
720
721 /*
722 * Compute ticklen_to_xs, which is a factor which gets multiplied
723 * by (last_tick_len << TICKLEN_SHIFT) to get a tb_to_xs value.
724 * It is computed as:
725 * ticklen_to_xs = 2^N / (tb_ticks_per_jiffy * 1e9)
726 * where N = 64 + 20 - TICKLEN_SCALE - TICKLEN_SHIFT
727 * so as to give the result as a 0.64 fixed-point fraction.
728 */
729 div128_by_32(1ULL << (64 + 20 - TICKLEN_SCALE - TICKLEN_SHIFT), 0,
730 tb_ticks_per_jiffy, &res);
731 div128_by_32(res.result_high, res.result_low, NSEC_PER_SEC, &res);
732 ticklen_to_xs = res.result_low;
733
734 /* Compute tb_to_xs from tick_nsec */
735 tb_to_xs = mulhdu(last_tick_len << TICKLEN_SHIFT, ticklen_to_xs);
701 736
702 /* 737 /*
703 * Compute scale factor for sched_clock. 738 * Compute scale factor for sched_clock.
@@ -724,6 +759,14 @@ void __init time_init(void)
724 tm = get_boot_time(); 759 tm = get_boot_time();
725 760
726 write_seqlock_irqsave(&xtime_lock, flags); 761 write_seqlock_irqsave(&xtime_lock, flags);
762
763 /* If platform provided a timezone (pmac), we correct the time */
764 if (timezone_offset) {
765 sys_tz.tz_minuteswest = -timezone_offset / 60;
766 sys_tz.tz_dsttime = 0;
767 tm -= timezone_offset;
768 }
769
727 xtime.tv_sec = tm; 770 xtime.tv_sec = tm;
728 xtime.tv_nsec = 0; 771 xtime.tv_nsec = 0;
729 do_gtod.varp = &do_gtod.vars[0]; 772 do_gtod.varp = &do_gtod.vars[0];
@@ -738,18 +781,11 @@ void __init time_init(void)
738 vdso_data->tb_orig_stamp = tb_last_jiffy; 781 vdso_data->tb_orig_stamp = tb_last_jiffy;
739 vdso_data->tb_update_count = 0; 782 vdso_data->tb_update_count = 0;
740 vdso_data->tb_ticks_per_sec = tb_ticks_per_sec; 783 vdso_data->tb_ticks_per_sec = tb_ticks_per_sec;
741 vdso_data->stamp_xsec = xtime.tv_sec * XSEC_PER_SEC; 784 vdso_data->stamp_xsec = (u64) xtime.tv_sec * XSEC_PER_SEC;
742 vdso_data->tb_to_xs = tb_to_xs; 785 vdso_data->tb_to_xs = tb_to_xs;
743 786
744 time_freq = 0; 787 time_freq = 0;
745 788
746 /* If platform provided a timezone (pmac), we correct the time */
747 if (timezone_offset) {
748 sys_tz.tz_minuteswest = -timezone_offset / 60;
749 sys_tz.tz_dsttime = 0;
750 xtime.tv_sec -= timezone_offset;
751 }
752
753 last_rtc_update = xtime.tv_sec; 789 last_rtc_update = xtime.tv_sec;
754 set_normalized_timespec(&wall_to_monotonic, 790 set_normalized_timespec(&wall_to_monotonic,
755 -xtime.tv_sec, -xtime.tv_nsec); 791 -xtime.tv_sec, -xtime.tv_nsec);
@@ -759,126 +795,6 @@ void __init time_init(void)
759 set_dec(tb_ticks_per_jiffy); 795 set_dec(tb_ticks_per_jiffy);
760} 796}
761 797
762/*
763 * After adjtimex is called, adjust the conversion of tb ticks
764 * to microseconds to keep do_gettimeofday synchronized
765 * with ntpd.
766 *
767 * Use the time_adjust, time_freq and time_offset computed by adjtimex to
768 * adjust the frequency.
769 */
770
771/* #define DEBUG_PPC_ADJTIMEX 1 */
772
773void ppc_adjtimex(void)
774{
775#ifdef CONFIG_PPC64
776 unsigned long den, new_tb_ticks_per_sec, tb_ticks, old_xsec,
777 new_tb_to_xs, new_xsec, new_stamp_xsec;
778 unsigned long tb_ticks_per_sec_delta;
779 long delta_freq, ltemp;
780 struct div_result divres;
781 unsigned long flags;
782 long singleshot_ppm = 0;
783
784 /*
785 * Compute parts per million frequency adjustment to
786 * accomplish the time adjustment implied by time_offset to be
787 * applied over the elapsed time indicated by time_constant.
788 * Use SHIFT_USEC to get it into the same units as
789 * time_freq.
790 */
791 if ( time_offset < 0 ) {
792 ltemp = -time_offset;
793 ltemp <<= SHIFT_USEC - SHIFT_UPDATE;
794 ltemp >>= SHIFT_KG + time_constant;
795 ltemp = -ltemp;
796 } else {
797 ltemp = time_offset;
798 ltemp <<= SHIFT_USEC - SHIFT_UPDATE;
799 ltemp >>= SHIFT_KG + time_constant;
800 }
801
802 /* If there is a single shot time adjustment in progress */
803 if ( time_adjust ) {
804#ifdef DEBUG_PPC_ADJTIMEX
805 printk("ppc_adjtimex: ");
806 if ( adjusting_time == 0 )
807 printk("starting ");
808 printk("single shot time_adjust = %ld\n", time_adjust);
809#endif
810
811 adjusting_time = 1;
812
813 /*
814 * Compute parts per million frequency adjustment
815 * to match time_adjust
816 */
817 singleshot_ppm = tickadj * HZ;
818 /*
819 * The adjustment should be tickadj*HZ to match the code in
820 * linux/kernel/timer.c, but experiments show that this is too
821 * large. 3/4 of tickadj*HZ seems about right
822 */
823 singleshot_ppm -= singleshot_ppm / 4;
824 /* Use SHIFT_USEC to get it into the same units as time_freq */
825 singleshot_ppm <<= SHIFT_USEC;
826 if ( time_adjust < 0 )
827 singleshot_ppm = -singleshot_ppm;
828 }
829 else {
830#ifdef DEBUG_PPC_ADJTIMEX
831 if ( adjusting_time )
832 printk("ppc_adjtimex: ending single shot time_adjust\n");
833#endif
834 adjusting_time = 0;
835 }
836
837 /* Add up all of the frequency adjustments */
838 delta_freq = time_freq + ltemp + singleshot_ppm;
839
840 /*
841 * Compute a new value for tb_ticks_per_sec based on
842 * the frequency adjustment
843 */
844 den = 1000000 * (1 << (SHIFT_USEC - 8));
845 if ( delta_freq < 0 ) {
846 tb_ticks_per_sec_delta = ( tb_ticks_per_sec * ( (-delta_freq) >> (SHIFT_USEC - 8))) / den;
847 new_tb_ticks_per_sec = tb_ticks_per_sec + tb_ticks_per_sec_delta;
848 }
849 else {
850 tb_ticks_per_sec_delta = ( tb_ticks_per_sec * ( delta_freq >> (SHIFT_USEC - 8))) / den;
851 new_tb_ticks_per_sec = tb_ticks_per_sec - tb_ticks_per_sec_delta;
852 }
853
854#ifdef DEBUG_PPC_ADJTIMEX
855 printk("ppc_adjtimex: ltemp = %ld, time_freq = %ld, singleshot_ppm = %ld\n", ltemp, time_freq, singleshot_ppm);
856 printk("ppc_adjtimex: tb_ticks_per_sec - base = %ld new = %ld\n", tb_ticks_per_sec, new_tb_ticks_per_sec);
857#endif
858
859 /*
860 * Compute a new value of tb_to_xs (used to convert tb to
861 * microseconds) and a new value of stamp_xsec which is the
862 * time (in 1/2^20 second units) corresponding to
863 * tb_orig_stamp. This new value of stamp_xsec compensates
864 * for the change in frequency (implied by the new tb_to_xs)
865 * which guarantees that the current time remains the same.
866 */
867 write_seqlock_irqsave( &xtime_lock, flags );
868 tb_ticks = get_tb() - do_gtod.varp->tb_orig_stamp;
869 div128_by_32(1024*1024, 0, new_tb_ticks_per_sec, &divres);
870 new_tb_to_xs = divres.result_low;
871 new_xsec = mulhdu(tb_ticks, new_tb_to_xs);
872
873 old_xsec = mulhdu(tb_ticks, do_gtod.varp->tb_to_xs);
874 new_stamp_xsec = do_gtod.varp->stamp_xsec + old_xsec - new_xsec;
875
876 update_gtod(do_gtod.varp->tb_orig_stamp, new_stamp_xsec, new_tb_to_xs);
877
878 write_sequnlock_irqrestore( &xtime_lock, flags );
879#endif /* CONFIG_PPC64 */
880}
881
882 798
883#define FEBRUARY 2 799#define FEBRUARY 2
884#define STARTOFTIME 1970 800#define STARTOFTIME 1970
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index 7509aa6474f2..98660aedeeb7 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -814,6 +814,8 @@ void __kprobes program_check_exception(struct pt_regs *regs)
814 return; 814 return;
815 } 815 }
816 816
817 local_irq_enable();
818
817 /* Try to emulate it if we should. */ 819 /* Try to emulate it if we should. */
818 if (reason & (REASON_ILLEGAL | REASON_PRIVILEGED)) { 820 if (reason & (REASON_ILLEGAL | REASON_PRIVILEGED)) {
819 switch (emulate_instruction(regs)) { 821 switch (emulate_instruction(regs)) {
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index f0c47dab0903..04f7df39ffbb 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -182,8 +182,8 @@ static struct page * vdso_vma_nopage(struct vm_area_struct * vma,
182 unsigned long offset = address - vma->vm_start; 182 unsigned long offset = address - vma->vm_start;
183 struct page *pg; 183 struct page *pg;
184#ifdef CONFIG_PPC64 184#ifdef CONFIG_PPC64
185 void *vbase = test_thread_flag(TIF_32BIT) ? 185 void *vbase = (vma->vm_mm->task_size > TASK_SIZE_USER32) ?
186 vdso32_kbase : vdso64_kbase; 186 vdso64_kbase : vdso32_kbase;
187#else 187#else
188 void *vbase = vdso32_kbase; 188 void *vbase = vdso32_kbase;
189#endif 189#endif
diff --git a/arch/powerpc/kernel/vdso64/gettimeofday.S b/arch/powerpc/kernel/vdso64/gettimeofday.S
index ccaeda5136d1..4ee871f1cadb 100644
--- a/arch/powerpc/kernel/vdso64/gettimeofday.S
+++ b/arch/powerpc/kernel/vdso64/gettimeofday.S
@@ -225,9 +225,9 @@ V_FUNCTION_BEGIN(__do_get_xsec)
225 .cfi_startproc 225 .cfi_startproc
226 /* check for update count & load values */ 226 /* check for update count & load values */
2271: ld r8,CFG_TB_UPDATE_COUNT(r3) 2271: ld r8,CFG_TB_UPDATE_COUNT(r3)
228 andi. r0,r4,1 /* pending update ? loop */ 228 andi. r0,r8,1 /* pending update ? loop */
229 bne- 1b 229 bne- 1b
230 xor r0,r4,r4 /* create dependency */ 230 xor r0,r8,r8 /* create dependency */
231 add r3,r3,r0 231 add r3,r3,r0
232 232
233 /* Get TB & offset it */ 233 /* Get TB & offset it */
diff --git a/arch/powerpc/mm/hash_native_64.c b/arch/powerpc/mm/hash_native_64.c
index d96bcfe4c6f6..33654d1b1b43 100644
--- a/arch/powerpc/mm/hash_native_64.c
+++ b/arch/powerpc/mm/hash_native_64.c
@@ -403,12 +403,17 @@ static void native_hpte_clear(void)
403 */ 403 */
404 hpte_v = hptep->v; 404 hpte_v = hptep->v;
405 405
406 /*
407 * Call __tlbie() here rather than tlbie() since we
408 * already hold the native_tlbie_lock.
409 */
406 if (hpte_v & HPTE_V_VALID) { 410 if (hpte_v & HPTE_V_VALID) {
407 hptep->v = 0; 411 hptep->v = 0;
408 tlbie(slot2va(hpte_v, slot), MMU_PAGE_4K, 0); 412 __tlbie(slot2va(hpte_v, slot), MMU_PAGE_4K);
409 } 413 }
410 } 414 }
411 415
416 asm volatile("eieio; tlbsync; ptesync":::"memory");
412 spin_unlock(&native_tlbie_lock); 417 spin_unlock(&native_tlbie_lock);
413 local_irq_restore(flags); 418 local_irq_restore(flags);
414} 419}
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 149351a84b94..e9d589eefc14 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -88,6 +88,7 @@ static unsigned long _SDR1;
88struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT]; 88struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT];
89 89
90hpte_t *htab_address; 90hpte_t *htab_address;
91unsigned long htab_size_bytes;
91unsigned long htab_hash_mask; 92unsigned long htab_hash_mask;
92int mmu_linear_psize = MMU_PAGE_4K; 93int mmu_linear_psize = MMU_PAGE_4K;
93int mmu_virtual_psize = MMU_PAGE_4K; 94int mmu_virtual_psize = MMU_PAGE_4K;
@@ -168,7 +169,7 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
168#ifdef CONFIG_PPC_ISERIES 169#ifdef CONFIG_PPC_ISERIES
169 if (_machine == PLATFORM_ISERIES_LPAR) 170 if (_machine == PLATFORM_ISERIES_LPAR)
170 ret = iSeries_hpte_insert(hpteg, va, 171 ret = iSeries_hpte_insert(hpteg, va,
171 virt_to_abs(paddr), 172 __pa(vaddr),
172 tmp_mode, 173 tmp_mode,
173 HPTE_V_BOLTED, 174 HPTE_V_BOLTED,
174 psize); 175 psize);
@@ -399,7 +400,7 @@ void create_section_mapping(unsigned long start, unsigned long end)
399 400
400void __init htab_initialize(void) 401void __init htab_initialize(void)
401{ 402{
402 unsigned long table, htab_size_bytes; 403 unsigned long table;
403 unsigned long pteg_count; 404 unsigned long pteg_count;
404 unsigned long mode_rw; 405 unsigned long mode_rw;
405 unsigned long base = 0, size = 0; 406 unsigned long base = 0, size = 0;
diff --git a/arch/powerpc/oprofile/Kconfig b/arch/powerpc/oprofile/Kconfig
index eb2dece76a54..d03c0e5ca870 100644
--- a/arch/powerpc/oprofile/Kconfig
+++ b/arch/powerpc/oprofile/Kconfig
@@ -1,4 +1,5 @@
1config PROFILING 1config PROFILING
2 depends on !PPC_ISERIES
2 bool "Profiling support (EXPERIMENTAL)" 3 bool "Profiling support (EXPERIMENTAL)"
3 help 4 help
4 Say Y here to enable the extended profiling support mechanisms used 5 Say Y here to enable the extended profiling support mechanisms used
diff --git a/arch/powerpc/platforms/iseries/lpevents.c b/arch/powerpc/platforms/iseries/lpevents.c
index 0b885300d1d1..8ca7b9396355 100644
--- a/arch/powerpc/platforms/iseries/lpevents.c
+++ b/arch/powerpc/platforms/iseries/lpevents.c
@@ -184,6 +184,8 @@ void setup_hvlpevent_queue(void)
184{ 184{
185 void *eventStack; 185 void *eventStack;
186 186
187 spin_lock_init(&hvlpevent_queue.lock);
188
187 /* Allocate a page for the Event Stack. */ 189 /* Allocate a page for the Event Stack. */
188 eventStack = alloc_bootmem_pages(LpEventStackSize); 190 eventStack = alloc_bootmem_pages(LpEventStackSize);
189 memset(eventStack, 0, LpEventStackSize); 191 memset(eventStack, 0, LpEventStackSize);
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c
index 3f8790146b00..3ecc4a652d82 100644
--- a/arch/powerpc/platforms/iseries/setup.c
+++ b/arch/powerpc/platforms/iseries/setup.c
@@ -648,6 +648,7 @@ static void yield_shared_processor(void)
648 * here and let the timer_interrupt code sort out the actual time. 648 * here and let the timer_interrupt code sort out the actual time.
649 */ 649 */
650 get_lppaca()->int_dword.fields.decr_int = 1; 650 get_lppaca()->int_dword.fields.decr_int = 1;
651 ppc64_runlatch_on();
651 process_iSeries_events(); 652 process_iSeries_events();
652} 653}
653 654
diff --git a/arch/powerpc/platforms/maple/pci.c b/arch/powerpc/platforms/maple/pci.c
index 7d4099a34f92..85d6c93659cc 100644
--- a/arch/powerpc/platforms/maple/pci.c
+++ b/arch/powerpc/platforms/maple/pci.c
@@ -435,8 +435,8 @@ void __init maple_pci_init(void)
435 PCI_DN(np)->busno = 0xf0; 435 PCI_DN(np)->busno = 0xf0;
436 } 436 }
437 437
438 /* Tell pci.c to use the common resource allocation mecanism */ 438 /* Tell pci.c to not change any resource allocations. */
439 pci_probe_only = 0; 439 pci_probe_only = 1;
440 440
441 /* Allow all IO */ 441 /* Allow all IO */
442 io_page_mask = -1; 442 io_page_mask = -1;
diff --git a/arch/powerpc/platforms/powermac/feature.c b/arch/powerpc/platforms/powermac/feature.c
index 558dd0692092..34714d3ea69a 100644
--- a/arch/powerpc/platforms/powermac/feature.c
+++ b/arch/powerpc/platforms/powermac/feature.c
@@ -1646,10 +1646,10 @@ static void intrepid_shutdown(struct macio_chip *macio, int sleep_mode)
1646 KL0_SCC_CELL_ENABLE); 1646 KL0_SCC_CELL_ENABLE);
1647 1647
1648 MACIO_BIC(KEYLARGO_FCR1, 1648 MACIO_BIC(KEYLARGO_FCR1,
1649 /*KL1_USB2_CELL_ENABLE |*/
1650 KL1_I2S0_CELL_ENABLE | KL1_I2S0_CLK_ENABLE_BIT | 1649 KL1_I2S0_CELL_ENABLE | KL1_I2S0_CLK_ENABLE_BIT |
1651 KL1_I2S0_ENABLE | KL1_I2S1_CELL_ENABLE | 1650 KL1_I2S0_ENABLE | KL1_I2S1_CELL_ENABLE |
1652 KL1_I2S1_CLK_ENABLE_BIT | KL1_I2S1_ENABLE); 1651 KL1_I2S1_CLK_ENABLE_BIT | KL1_I2S1_ENABLE |
1652 KL1_EIDE0_ENABLE);
1653 if (pmac_mb.board_flags & PMAC_MB_MOBILE) 1653 if (pmac_mb.board_flags & PMAC_MB_MOBILE)
1654 MACIO_BIC(KEYLARGO_FCR1, KL1_UIDE_RESET_N); 1654 MACIO_BIC(KEYLARGO_FCR1, KL1_UIDE_RESET_N);
1655 1655
@@ -2183,7 +2183,7 @@ static struct pmac_mb_def pmac_mb_defs[] = {
2183 }, 2183 },
2184 { "PowerMac10,1", "Mac mini", 2184 { "PowerMac10,1", "Mac mini",
2185 PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features, 2185 PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features,
2186 PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER, 2186 PMAC_MB_MAY_SLEEP,
2187 }, 2187 },
2188 { "iMac,1", "iMac (first generation)", 2188 { "iMac,1", "iMac (first generation)",
2189 PMAC_TYPE_ORIG_IMAC, paddington_features, 2189 PMAC_TYPE_ORIG_IMAC, paddington_features,
@@ -2295,11 +2295,11 @@ static struct pmac_mb_def pmac_mb_defs[] = {
2295 }, 2295 },
2296 { "PowerBook5,8", "PowerBook G4 15\"", 2296 { "PowerBook5,8", "PowerBook G4 15\"",
2297 PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features, 2297 PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features,
2298 PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE, 2298 PMAC_MB_MAY_SLEEP | PMAC_MB_MOBILE,
2299 }, 2299 },
2300 { "PowerBook5,9", "PowerBook G4 17\"", 2300 { "PowerBook5,9", "PowerBook G4 17\"",
2301 PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features, 2301 PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features,
2302 PMAC_MB_MAY_SLEEP | PMAC_MB_HAS_FW_POWER | PMAC_MB_MOBILE, 2302 PMAC_MB_MAY_SLEEP | PMAC_MB_MOBILE,
2303 }, 2303 },
2304 { "PowerBook6,1", "PowerBook G4 12\"", 2304 { "PowerBook6,1", "PowerBook G4 12\"",
2305 PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features, 2305 PMAC_TYPE_UNKNOWN_INTREPID, intrepid_features,
diff --git a/arch/powerpc/platforms/powermac/pfunc_base.c b/arch/powerpc/platforms/powermac/pfunc_base.c
index 4ffd2a9832a0..9b7150f10414 100644
--- a/arch/powerpc/platforms/powermac/pfunc_base.c
+++ b/arch/powerpc/platforms/powermac/pfunc_base.c
@@ -9,7 +9,12 @@
9#include <asm/pmac_feature.h> 9#include <asm/pmac_feature.h>
10#include <asm/pmac_pfunc.h> 10#include <asm/pmac_pfunc.h>
11 11
12#undef DEBUG
13#ifdef DEBUG
12#define DBG(fmt...) printk(fmt) 14#define DBG(fmt...) printk(fmt)
15#else
16#define DBG(fmt...)
17#endif
13 18
14static irqreturn_t macio_gpio_irq(int irq, void *data, struct pt_regs *regs) 19static irqreturn_t macio_gpio_irq(int irq, void *data, struct pt_regs *regs)
15{ 20{
diff --git a/arch/powerpc/platforms/powermac/pfunc_core.c b/arch/powerpc/platforms/powermac/pfunc_core.c
index 356a739e52b2..4baa75b1d36f 100644
--- a/arch/powerpc/platforms/powermac/pfunc_core.c
+++ b/arch/powerpc/platforms/powermac/pfunc_core.c
@@ -20,7 +20,13 @@
20#define LOG_PARSE(fmt...) 20#define LOG_PARSE(fmt...)
21#define LOG_ERROR(fmt...) printk(fmt) 21#define LOG_ERROR(fmt...) printk(fmt)
22#define LOG_BLOB(t,b,c) 22#define LOG_BLOB(t,b,c)
23
24#undef DEBUG
25#ifdef DEBUG
23#define DBG(fmt...) printk(fmt) 26#define DBG(fmt...) printk(fmt)
27#else
28#define DBG(fmt...)
29#endif
24 30
25/* Command numbers */ 31/* Command numbers */
26#define PMF_CMD_LIST 0 32#define PMF_CMD_LIST 0
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index 0df2cdcd805c..6d64a9bf3474 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -435,7 +435,7 @@ struct smp_ops_t psurge_smp_ops = {
435 */ 435 */
436 436
437static void (*pmac_tb_freeze)(int freeze); 437static void (*pmac_tb_freeze)(int freeze);
438static unsigned long timebase; 438static u64 timebase;
439static int tb_req; 439static int tb_req;
440 440
441static void smp_core99_give_timebase(void) 441static void smp_core99_give_timebase(void)
diff --git a/arch/powerpc/platforms/pseries/Kconfig b/arch/powerpc/platforms/pseries/Kconfig
index e3fc3407bb1f..4e5c8f8d869d 100644
--- a/arch/powerpc/platforms/pseries/Kconfig
+++ b/arch/powerpc/platforms/pseries/Kconfig
@@ -9,13 +9,6 @@ config PPC_SPLPAR
9 processors, that is, which share physical processors between 9 processors, that is, which share physical processors between
10 two or more partitions. 10 two or more partitions.
11 11
12config HMT
13 bool "Hardware multithreading"
14 depends on SMP && PPC_PSERIES && BROKEN
15 help
16 This option enables hardware multithreading on RS64 cpus.
17 pSeries systems p620 and p660 have such a cpu type.
18
19config EEH 12config EEH
20 bool "PCI Extended Error Handling (EEH)" if EMBEDDED 13 bool "PCI Extended Error Handling (EEH)" if EMBEDDED
21 depends on PPC_PSERIES 14 depends on PPC_PSERIES
diff --git a/arch/powerpc/platforms/pseries/eeh.c b/arch/powerpc/platforms/pseries/eeh.c
index 83578313ee7e..2ab9dcdfb415 100644
--- a/arch/powerpc/platforms/pseries/eeh.c
+++ b/arch/powerpc/platforms/pseries/eeh.c
@@ -893,6 +893,20 @@ void eeh_add_device_tree_early(struct device_node *dn)
893} 893}
894EXPORT_SYMBOL_GPL(eeh_add_device_tree_early); 894EXPORT_SYMBOL_GPL(eeh_add_device_tree_early);
895 895
896void eeh_add_device_tree_late(struct pci_bus *bus)
897{
898 struct pci_dev *dev;
899
900 list_for_each_entry(dev, &bus->devices, bus_list) {
901 eeh_add_device_late(dev);
902 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) {
903 struct pci_bus *subbus = dev->subordinate;
904 if (subbus)
905 eeh_add_device_tree_late(subbus);
906 }
907 }
908}
909
896/** 910/**
897 * eeh_add_device_late - perform EEH initialization for the indicated pci device 911 * eeh_add_device_late - perform EEH initialization for the indicated pci device
898 * @dev: pci device for which to set up EEH 912 * @dev: pci device for which to set up EEH
diff --git a/arch/powerpc/platforms/pseries/eeh_driver.c b/arch/powerpc/platforms/pseries/eeh_driver.c
index e3cbba49fd6e..b811d5ff92fe 100644
--- a/arch/powerpc/platforms/pseries/eeh_driver.c
+++ b/arch/powerpc/platforms/pseries/eeh_driver.c
@@ -37,7 +37,7 @@
37 37
38static inline const char * pcid_name (struct pci_dev *pdev) 38static inline const char * pcid_name (struct pci_dev *pdev)
39{ 39{
40 if (pdev->dev.driver) 40 if (pdev && pdev->dev.driver)
41 return pdev->dev.driver->name; 41 return pdev->dev.driver->name;
42 return ""; 42 return "";
43} 43}
diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c
index bdaa8aabdaa6..f3bad900bbcf 100644
--- a/arch/powerpc/platforms/pseries/pci_dlpar.c
+++ b/arch/powerpc/platforms/pseries/pci_dlpar.c
@@ -106,6 +106,8 @@ pcibios_fixup_new_pci_devices(struct pci_bus *bus, int fix_bus)
106 } 106 }
107 } 107 }
108 } 108 }
109
110 eeh_add_device_tree_late(bus);
109} 111}
110EXPORT_SYMBOL_GPL(pcibios_fixup_new_pci_devices); 112EXPORT_SYMBOL_GPL(pcibios_fixup_new_pci_devices);
111 113
@@ -114,7 +116,6 @@ pcibios_pci_config_bridge(struct pci_dev *dev)
114{ 116{
115 u8 sec_busno; 117 u8 sec_busno;
116 struct pci_bus *child_bus; 118 struct pci_bus *child_bus;
117 struct pci_dev *child_dev;
118 119
119 /* Get busno of downstream bus */ 120 /* Get busno of downstream bus */
120 pci_read_config_byte(dev, PCI_SECONDARY_BUS, &sec_busno); 121 pci_read_config_byte(dev, PCI_SECONDARY_BUS, &sec_busno);
@@ -129,10 +130,6 @@ pcibios_pci_config_bridge(struct pci_dev *dev)
129 130
130 pci_scan_child_bus(child_bus); 131 pci_scan_child_bus(child_bus);
131 132
132 list_for_each_entry(child_dev, &child_bus->devices, bus_list) {
133 eeh_add_device_late(child_dev);
134 }
135
136 /* Fixup new pci devices without touching bus struct */ 133 /* Fixup new pci devices without touching bus struct */
137 pcibios_fixup_new_pci_devices(child_bus, 0); 134 pcibios_fixup_new_pci_devices(child_bus, 0);
138 135
@@ -160,18 +157,25 @@ pcibios_add_pci_devices(struct pci_bus * bus)
160 157
161 eeh_add_device_tree_early(dn); 158 eeh_add_device_tree_early(dn);
162 159
163 /* pci_scan_slot should find all children */ 160 if (_machine == PLATFORM_PSERIES_LPAR) {
164 slotno = PCI_SLOT(PCI_DN(dn->child)->devfn); 161 /* use ofdt-based probe */
165 num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0)); 162 of_scan_bus(dn, bus);
166 if (num) { 163 if (!list_empty(&bus->devices)) {
167 pcibios_fixup_new_pci_devices(bus, 1); 164 pcibios_fixup_new_pci_devices(bus, 0);
168 pci_bus_add_devices(bus); 165 pci_bus_add_devices(bus);
169 } 166 }
167 } else {
168 /* use legacy probe */
169 slotno = PCI_SLOT(PCI_DN(dn->child)->devfn);
170 num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
171 if (num) {
172 pcibios_fixup_new_pci_devices(bus, 1);
173 pci_bus_add_devices(bus);
174 }
170 175
171 list_for_each_entry(dev, &bus->devices, bus_list) { 176 list_for_each_entry(dev, &bus->devices, bus_list)
172 eeh_add_device_late (dev); 177 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE)
173 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) 178 pcibios_pci_config_bridge(dev);
174 pcibios_pci_config_bridge(dev);
175 } 179 }
176} 180}
177EXPORT_SYMBOL_GPL(pcibios_add_pci_devices); 181EXPORT_SYMBOL_GPL(pcibios_add_pci_devices);
diff --git a/arch/powerpc/platforms/pseries/smp.c b/arch/powerpc/platforms/pseries/smp.c
index 8e6b1ed1396e..8d710af50756 100644
--- a/arch/powerpc/platforms/pseries/smp.c
+++ b/arch/powerpc/platforms/pseries/smp.c
@@ -292,7 +292,7 @@ static inline int __devinit smp_startup_cpu(unsigned int lcpu)
292 if (start_cpu == RTAS_UNKNOWN_SERVICE) 292 if (start_cpu == RTAS_UNKNOWN_SERVICE)
293 return 1; 293 return 1;
294 294
295 status = rtas_call(start_cpu, 3, 1, NULL, pcpu, start_here, lcpu); 295 status = rtas_call(start_cpu, 3, 1, NULL, pcpu, start_here, pcpu);
296 if (status != 0) { 296 if (status != 0) {
297 printk(KERN_ERR "start-cpu failed: %i\n", status); 297 printk(KERN_ERR "start-cpu failed: %i\n", status);
298 return 0; 298 return 0;
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 4f26304d0263..7dcdfcb3c984 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -234,7 +234,7 @@ static void mpic_shutdown_ht_interrupt(struct mpic *mpic, unsigned int source,
234 spin_lock_irqsave(&mpic->fixup_lock, flags); 234 spin_lock_irqsave(&mpic->fixup_lock, flags);
235 writeb(0x10 + 2 * fixup->index, fixup->base + 2); 235 writeb(0x10 + 2 * fixup->index, fixup->base + 2);
236 tmp = readl(fixup->base + 4); 236 tmp = readl(fixup->base + 4);
237 tmp &= ~1U; 237 tmp |= 1;
238 writel(tmp, fixup->base + 4); 238 writel(tmp, fixup->base + 4);
239 spin_unlock_irqrestore(&mpic->fixup_lock, flags); 239 spin_unlock_irqrestore(&mpic->fixup_lock, flags);
240} 240}
@@ -446,14 +446,15 @@ static unsigned int mpic_startup_irq(unsigned int irq)
446#ifdef CONFIG_MPIC_BROKEN_U3 446#ifdef CONFIG_MPIC_BROKEN_U3
447 struct mpic *mpic = mpic_from_irq(irq); 447 struct mpic *mpic = mpic_from_irq(irq);
448 unsigned int src = irq - mpic->irq_offset; 448 unsigned int src = irq - mpic->irq_offset;
449#endif /* CONFIG_MPIC_BROKEN_U3 */
450
451 mpic_enable_irq(irq);
449 452
453#ifdef CONFIG_MPIC_BROKEN_U3
450 if (mpic_is_ht_interrupt(mpic, src)) 454 if (mpic_is_ht_interrupt(mpic, src))
451 mpic_startup_ht_interrupt(mpic, src, irq_desc[irq].status); 455 mpic_startup_ht_interrupt(mpic, src, irq_desc[irq].status);
452
453#endif /* CONFIG_MPIC_BROKEN_U3 */ 456#endif /* CONFIG_MPIC_BROKEN_U3 */
454 457
455 mpic_enable_irq(irq);
456
457 return 0; 458 return 0;
458} 459}
459 460