aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-10-10 19:16:33 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-10 19:16:33 -0400
commit3c693024cffa5c96a20b969f4efd058675e7700f (patch)
tree2e49a90c3e67a898770fe0ea735d00326dbe3f69 /arch/powerpc
parent107c3a73e0ee037322efa00fa3cb45b3b7eb6069 (diff)
parent10270613fb4d5a44c335cfa13e9626bf5743c01d (diff)
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: [POWERPC] Fix windfarm platform device usage [POWERPC] Fix i2c-powermac platform device usage [POWERPC] Fix secondary CPU startup on old "powersurge" SMP powermacs [POWERPC] ARCH=ppc pt_regs fixes [POWERPC] Update maple defconfig [POWERPC] Fix Maple secondary IDE interrupt [POWERPC] Make U4 PCIe work on maple [POWERPC] cell: fix default zImage build target [POWERPC] Fix boot wrapper invocation if CROSS_COMPILE contains spaces [POWERPC] Fix xmon IRQ handler for pt_regs removal
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/boot/Makefile16
-rw-r--r--arch/powerpc/configs/maple_defconfig56
-rw-r--r--arch/powerpc/platforms/maple/pci.c187
-rw-r--r--arch/powerpc/platforms/powermac/smp.c7
-rw-r--r--arch/powerpc/xmon/xmon.c6
5 files changed, 241 insertions, 31 deletions
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 003520b56303..37ddfcab0003 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -105,10 +105,10 @@ wrapperbits := $(extra-y) $(addprefix $(obj)/,addnote hack-coff)
105# Bits for building various flavours of zImage 105# Bits for building various flavours of zImage
106 106
107ifneq ($(CROSS32_COMPILE),) 107ifneq ($(CROSS32_COMPILE),)
108CROSSWRAP := -C $(CROSS32_COMPILE) 108CROSSWRAP := -C "$(CROSS32_COMPILE)"
109else 109else
110ifneq ($(CROSS_COMPILE),) 110ifneq ($(CROSS_COMPILE),)
111CROSSWRAP := -C $(CROSS_COMPILE) 111CROSSWRAP := -C "$(CROSS_COMPILE)"
112endif 112endif
113endif 113endif
114 114
@@ -151,12 +151,12 @@ $(obj)/zImage.initrd.miboot: vmlinux $(wrapperbits)
151$(obj)/uImage: vmlinux $(wrapperbits) 151$(obj)/uImage: vmlinux $(wrapperbits)
152 $(call cmd,wrap,uboot) 152 $(call cmd,wrap,uboot)
153 153
154image-$(CONFIG_PPC_PSERIES) += zImage.pseries 154image-$(CONFIG_PPC_PSERIES) += zImage.pseries
155image-$(CONFIG_PPC_MAPLE) += zImage.pseries 155image-$(CONFIG_PPC_MAPLE) += zImage.pseries
156image-$(CONFIG_PPC_CELL) += zImage.pseries 156image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries
157image-$(CONFIG_PPC_CHRP) += zImage.chrp 157image-$(CONFIG_PPC_CHRP) += zImage.chrp
158image-$(CONFIG_PPC_PMAC) += zImage.pmac 158image-$(CONFIG_PPC_PMAC) += zImage.pmac
159image-$(CONFIG_DEFAULT_UIMAGE) += uImage 159image-$(CONFIG_DEFAULT_UIMAGE) += uImage
160 160
161# For 32-bit powermacs, build the COFF and miboot images 161# For 32-bit powermacs, build the COFF and miboot images
162# as well as the ELF images. 162# as well as the ELF images.
diff --git a/arch/powerpc/configs/maple_defconfig b/arch/powerpc/configs/maple_defconfig
index 62ba66091a13..ae96a5b2f00d 100644
--- a/arch/powerpc/configs/maple_defconfig
+++ b/arch/powerpc/configs/maple_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.18-rc6 3# Linux kernel version: 2.6.18
4# Sun Sep 10 10:24:55 2006 4# Mon Oct 9 11:59:34 2006
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -22,6 +22,7 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22CONFIG_PPC_OF=y 22CONFIG_PPC_OF=y
23CONFIG_PPC_UDBG_16550=y 23CONFIG_PPC_UDBG_16550=y
24CONFIG_GENERIC_TBSYNC=y 24CONFIG_GENERIC_TBSYNC=y
25CONFIG_AUDIT_ARCH=y
25# CONFIG_DEFAULT_UIMAGE is not set 26# CONFIG_DEFAULT_UIMAGE is not set
26 27
27# 28#
@@ -34,7 +35,7 @@ CONFIG_PPC_FPU=y
34CONFIG_PPC_STD_MMU=y 35CONFIG_PPC_STD_MMU=y
35CONFIG_VIRT_CPU_ACCOUNTING=y 36CONFIG_VIRT_CPU_ACCOUNTING=y
36CONFIG_SMP=y 37CONFIG_SMP=y
37CONFIG_NR_CPUS=2 38CONFIG_NR_CPUS=4
38CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 39CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
39 40
40# 41#
@@ -51,10 +52,11 @@ CONFIG_LOCALVERSION=""
51CONFIG_LOCALVERSION_AUTO=y 52CONFIG_LOCALVERSION_AUTO=y
52CONFIG_SWAP=y 53CONFIG_SWAP=y
53CONFIG_SYSVIPC=y 54CONFIG_SYSVIPC=y
55# CONFIG_IPC_NS is not set
54CONFIG_POSIX_MQUEUE=y 56CONFIG_POSIX_MQUEUE=y
55# CONFIG_BSD_PROCESS_ACCT is not set 57# CONFIG_BSD_PROCESS_ACCT is not set
56# CONFIG_TASKSTATS is not set 58# CONFIG_TASKSTATS is not set
57CONFIG_SYSCTL=y 59# CONFIG_UTS_NS is not set
58# CONFIG_AUDIT is not set 60# CONFIG_AUDIT is not set
59CONFIG_IKCONFIG=y 61CONFIG_IKCONFIG=y
60CONFIG_IKCONFIG_PROC=y 62CONFIG_IKCONFIG_PROC=y
@@ -62,7 +64,9 @@ CONFIG_IKCONFIG_PROC=y
62# CONFIG_RELAY is not set 64# CONFIG_RELAY is not set
63CONFIG_INITRAMFS_SOURCE="" 65CONFIG_INITRAMFS_SOURCE=""
64CONFIG_CC_OPTIMIZE_FOR_SIZE=y 66CONFIG_CC_OPTIMIZE_FOR_SIZE=y
67CONFIG_SYSCTL=y
65# CONFIG_EMBEDDED is not set 68# CONFIG_EMBEDDED is not set
69# CONFIG_SYSCTL_SYSCALL is not set
66CONFIG_KALLSYMS=y 70CONFIG_KALLSYMS=y
67CONFIG_KALLSYMS_ALL=y 71CONFIG_KALLSYMS_ALL=y
68# CONFIG_KALLSYMS_EXTRA_PASS is not set 72# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -71,12 +75,12 @@ CONFIG_PRINTK=y
71CONFIG_BUG=y 75CONFIG_BUG=y
72CONFIG_ELF_CORE=y 76CONFIG_ELF_CORE=y
73CONFIG_BASE_FULL=y 77CONFIG_BASE_FULL=y
74CONFIG_RT_MUTEXES=y
75CONFIG_FUTEX=y 78CONFIG_FUTEX=y
76CONFIG_EPOLL=y 79CONFIG_EPOLL=y
77CONFIG_SHMEM=y 80CONFIG_SHMEM=y
78CONFIG_SLAB=y 81CONFIG_SLAB=y
79CONFIG_VM_EVENT_COUNTERS=y 82CONFIG_VM_EVENT_COUNTERS=y
83CONFIG_RT_MUTEXES=y
80# CONFIG_TINY_SHMEM is not set 84# CONFIG_TINY_SHMEM is not set
81CONFIG_BASE_SMALL=0 85CONFIG_BASE_SMALL=0
82# CONFIG_SLOB is not set 86# CONFIG_SLOB is not set
@@ -95,6 +99,7 @@ CONFIG_STOP_MACHINE=y
95# 99#
96# Block layer 100# Block layer
97# 101#
102CONFIG_BLOCK=y
98# CONFIG_BLK_DEV_IO_TRACE is not set 103# CONFIG_BLK_DEV_IO_TRACE is not set
99 104
100# 105#
@@ -114,16 +119,16 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
114# Platform support 119# Platform support
115# 120#
116CONFIG_PPC_MULTIPLATFORM=y 121CONFIG_PPC_MULTIPLATFORM=y
117# CONFIG_PPC_ISERIES is not set
118# CONFIG_EMBEDDED6xx is not set 122# CONFIG_EMBEDDED6xx is not set
119# CONFIG_APUS is not set 123# CONFIG_APUS is not set
120# CONFIG_PPC_PSERIES is not set 124# CONFIG_PPC_PSERIES is not set
125# CONFIG_PPC_ISERIES is not set
121# CONFIG_PPC_PMAC is not set 126# CONFIG_PPC_PMAC is not set
122CONFIG_PPC_MAPLE=y 127CONFIG_PPC_MAPLE=y
128# CONFIG_PPC_PASEMI is not set
123# CONFIG_PPC_CELL is not set 129# CONFIG_PPC_CELL is not set
124# CONFIG_PPC_CELL_NATIVE is not set 130# CONFIG_PPC_CELL_NATIVE is not set
125# CONFIG_PPC_IBM_CELL_BLADE is not set 131# CONFIG_PPC_IBM_CELL_BLADE is not set
126# CONFIG_UDBG_RTAS_CONSOLE is not set
127CONFIG_U3_DART=y 132CONFIG_U3_DART=y
128# CONFIG_PPC_RTAS is not set 133# CONFIG_PPC_RTAS is not set
129# CONFIG_MMIO_NVRAM is not set 134# CONFIG_MMIO_NVRAM is not set
@@ -157,6 +162,7 @@ CONFIG_IRQ_ALL_CPUS=y
157CONFIG_ARCH_SELECT_MEMORY_MODEL=y 162CONFIG_ARCH_SELECT_MEMORY_MODEL=y
158CONFIG_ARCH_FLATMEM_ENABLE=y 163CONFIG_ARCH_FLATMEM_ENABLE=y
159CONFIG_ARCH_SPARSEMEM_ENABLE=y 164CONFIG_ARCH_SPARSEMEM_ENABLE=y
165CONFIG_ARCH_POPULATES_NODE_MAP=y
160CONFIG_SELECT_MEMORY_MODEL=y 166CONFIG_SELECT_MEMORY_MODEL=y
161CONFIG_FLATMEM_MANUAL=y 167CONFIG_FLATMEM_MANUAL=y
162# CONFIG_DISCONTIGMEM_MANUAL is not set 168# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -184,6 +190,7 @@ CONFIG_GENERIC_ISA_DMA=y
184CONFIG_PCI=y 190CONFIG_PCI=y
185CONFIG_PCI_DOMAINS=y 191CONFIG_PCI_DOMAINS=y
186# CONFIG_PCIEPORTBUS is not set 192# CONFIG_PCIEPORTBUS is not set
193# CONFIG_PCI_MULTITHREAD_PROBE is not set
187# CONFIG_PCI_DEBUG is not set 194# CONFIG_PCI_DEBUG is not set
188 195
189# 196#
@@ -211,6 +218,7 @@ CONFIG_PACKET_MMAP=y
211CONFIG_UNIX=y 218CONFIG_UNIX=y
212CONFIG_XFRM=y 219CONFIG_XFRM=y
213CONFIG_XFRM_USER=m 220CONFIG_XFRM_USER=m
221# CONFIG_XFRM_SUB_POLICY is not set
214# CONFIG_NET_KEY is not set 222# CONFIG_NET_KEY is not set
215CONFIG_INET=y 223CONFIG_INET=y
216CONFIG_IP_MULTICAST=y 224CONFIG_IP_MULTICAST=y
@@ -232,10 +240,12 @@ CONFIG_IP_PNP_DHCP=y
232# CONFIG_INET_TUNNEL is not set 240# CONFIG_INET_TUNNEL is not set
233CONFIG_INET_XFRM_MODE_TRANSPORT=y 241CONFIG_INET_XFRM_MODE_TRANSPORT=y
234CONFIG_INET_XFRM_MODE_TUNNEL=y 242CONFIG_INET_XFRM_MODE_TUNNEL=y
243CONFIG_INET_XFRM_MODE_BEET=y
235CONFIG_INET_DIAG=y 244CONFIG_INET_DIAG=y
236CONFIG_INET_TCP_DIAG=y 245CONFIG_INET_TCP_DIAG=y
237# CONFIG_TCP_CONG_ADVANCED is not set 246# CONFIG_TCP_CONG_ADVANCED is not set
238CONFIG_TCP_CONG_BIC=y 247CONFIG_TCP_CONG_CUBIC=y
248CONFIG_DEFAULT_TCP_CONG="cubic"
239# CONFIG_IPV6 is not set 249# CONFIG_IPV6 is not set
240# CONFIG_INET6_XFRM_TUNNEL is not set 250# CONFIG_INET6_XFRM_TUNNEL is not set
241# CONFIG_INET6_TUNNEL is not set 251# CONFIG_INET6_TUNNEL is not set
@@ -265,7 +275,6 @@ CONFIG_TCP_CONG_BIC=y
265# CONFIG_ATALK is not set 275# CONFIG_ATALK is not set
266# CONFIG_X25 is not set 276# CONFIG_X25 is not set
267# CONFIG_LAPB is not set 277# CONFIG_LAPB is not set
268# CONFIG_NET_DIVERT is not set
269# CONFIG_ECONET is not set 278# CONFIG_ECONET is not set
270# CONFIG_WAN_ROUTER is not set 279# CONFIG_WAN_ROUTER is not set
271 280
@@ -377,6 +386,7 @@ CONFIG_BLK_DEV_AMD74XX=y
377# CONFIG_BLK_DEV_CS5530 is not set 386# CONFIG_BLK_DEV_CS5530 is not set
378# CONFIG_BLK_DEV_HPT34X is not set 387# CONFIG_BLK_DEV_HPT34X is not set
379# CONFIG_BLK_DEV_HPT366 is not set 388# CONFIG_BLK_DEV_HPT366 is not set
389# CONFIG_BLK_DEV_JMICRON is not set
380# CONFIG_BLK_DEV_SC1200 is not set 390# CONFIG_BLK_DEV_SC1200 is not set
381# CONFIG_BLK_DEV_PIIX is not set 391# CONFIG_BLK_DEV_PIIX is not set
382# CONFIG_BLK_DEV_IT821X is not set 392# CONFIG_BLK_DEV_IT821X is not set
@@ -399,6 +409,12 @@ CONFIG_IDEDMA_AUTO=y
399# 409#
400# CONFIG_RAID_ATTRS is not set 410# CONFIG_RAID_ATTRS is not set
401# CONFIG_SCSI is not set 411# CONFIG_SCSI is not set
412# CONFIG_SCSI_NETLINK is not set
413
414#
415# Serial ATA (prod) and Parallel ATA (experimental) drivers
416#
417# CONFIG_ATA is not set
402 418
403# 419#
404# Multi-device support (RAID and LVM) 420# Multi-device support (RAID and LVM)
@@ -498,7 +514,7 @@ CONFIG_E1000=y
498# CONFIG_VIA_VELOCITY is not set 514# CONFIG_VIA_VELOCITY is not set
499CONFIG_TIGON3=y 515CONFIG_TIGON3=y
500# CONFIG_BNX2 is not set 516# CONFIG_BNX2 is not set
501# CONFIG_MV643XX_ETH is not set 517# CONFIG_QLA3XXX is not set
502 518
503# 519#
504# Ethernet (10000 Mbit) 520# Ethernet (10000 Mbit)
@@ -545,6 +561,7 @@ CONFIG_TIGON3=y
545# Input device support 561# Input device support
546# 562#
547CONFIG_INPUT=y 563CONFIG_INPUT=y
564# CONFIG_INPUT_FF_MEMLESS is not set
548 565
549# 566#
550# Userland interfaces 567# Userland interfaces
@@ -704,6 +721,7 @@ CONFIG_I2C_AMD8111=y
704# 721#
705# Misc devices 722# Misc devices
706# 723#
724# CONFIG_TIFM_CORE is not set
707 725
708# 726#
709# Multimedia devices 727# Multimedia devices
@@ -779,7 +797,6 @@ CONFIG_USB_UHCI_HCD=y
779# 797#
780# may also be needed; see USB_STORAGE Help for more information 798# may also be needed; see USB_STORAGE Help for more information
781# 799#
782# CONFIG_USB_STORAGE is not set
783# CONFIG_USB_LIBUSUAL is not set 800# CONFIG_USB_LIBUSUAL is not set
784 801
785# 802#
@@ -802,6 +819,7 @@ CONFIG_USB_HIDINPUT=y
802# CONFIG_USB_ATI_REMOTE2 is not set 819# CONFIG_USB_ATI_REMOTE2 is not set
803# CONFIG_USB_KEYSPAN_REMOTE is not set 820# CONFIG_USB_KEYSPAN_REMOTE is not set
804# CONFIG_USB_APPLETOUCH is not set 821# CONFIG_USB_APPLETOUCH is not set
822# CONFIG_USB_TRANCEVIBRATOR is not set
805 823
806# 824#
807# USB Imaging devices 825# USB Imaging devices
@@ -828,6 +846,7 @@ CONFIG_USB_MON=y
828CONFIG_USB_SERIAL=y 846CONFIG_USB_SERIAL=y
829# CONFIG_USB_SERIAL_CONSOLE is not set 847# CONFIG_USB_SERIAL_CONSOLE is not set
830CONFIG_USB_SERIAL_GENERIC=y 848CONFIG_USB_SERIAL_GENERIC=y
849# CONFIG_USB_SERIAL_AIRCABLE is not set
831# CONFIG_USB_SERIAL_AIRPRIME is not set 850# CONFIG_USB_SERIAL_AIRPRIME is not set
832# CONFIG_USB_SERIAL_ARK3116 is not set 851# CONFIG_USB_SERIAL_ARK3116 is not set
833# CONFIG_USB_SERIAL_BELKIN is not set 852# CONFIG_USB_SERIAL_BELKIN is not set
@@ -862,6 +881,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
862# CONFIG_USB_SERIAL_KLSI is not set 881# CONFIG_USB_SERIAL_KLSI is not set
863# CONFIG_USB_SERIAL_KOBIL_SCT is not set 882# CONFIG_USB_SERIAL_KOBIL_SCT is not set
864# CONFIG_USB_SERIAL_MCT_U232 is not set 883# CONFIG_USB_SERIAL_MCT_U232 is not set
884# CONFIG_USB_SERIAL_MOS7840 is not set
865# CONFIG_USB_SERIAL_NAVMAN is not set 885# CONFIG_USB_SERIAL_NAVMAN is not set
866# CONFIG_USB_SERIAL_PL2303 is not set 886# CONFIG_USB_SERIAL_PL2303 is not set
867# CONFIG_USB_SERIAL_HP4X is not set 887# CONFIG_USB_SERIAL_HP4X is not set
@@ -879,6 +899,7 @@ CONFIG_USB_EZUSB=y
879# 899#
880# CONFIG_USB_EMI62 is not set 900# CONFIG_USB_EMI62 is not set
881# CONFIG_USB_EMI26 is not set 901# CONFIG_USB_EMI26 is not set
902# CONFIG_USB_ADUTUX is not set
882# CONFIG_USB_AUERSWALD is not set 903# CONFIG_USB_AUERSWALD is not set
883# CONFIG_USB_RIO500 is not set 904# CONFIG_USB_RIO500 is not set
884# CONFIG_USB_LEGOTOWER is not set 905# CONFIG_USB_LEGOTOWER is not set
@@ -886,9 +907,9 @@ CONFIG_USB_EZUSB=y
886# CONFIG_USB_LED is not set 907# CONFIG_USB_LED is not set
887# CONFIG_USB_CYPRESS_CY7C63 is not set 908# CONFIG_USB_CYPRESS_CY7C63 is not set
888# CONFIG_USB_CYTHERM is not set 909# CONFIG_USB_CYTHERM is not set
889# CONFIG_USB_PHIDGETKIT is not set 910# CONFIG_USB_PHIDGET is not set
890# CONFIG_USB_PHIDGETSERVO is not set
891# CONFIG_USB_IDMOUSE is not set 911# CONFIG_USB_IDMOUSE is not set
912# CONFIG_USB_FTDI_ELAN is not set
892# CONFIG_USB_APPLEDISPLAY is not set 913# CONFIG_USB_APPLEDISPLAY is not set
893# CONFIG_USB_SISUSBVGA is not set 914# CONFIG_USB_SISUSBVGA is not set
894# CONFIG_USB_LD is not set 915# CONFIG_USB_LD is not set
@@ -995,8 +1016,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
995# 1016#
996CONFIG_PROC_FS=y 1017CONFIG_PROC_FS=y
997CONFIG_PROC_KCORE=y 1018CONFIG_PROC_KCORE=y
1019CONFIG_PROC_SYSCTL=y
998CONFIG_SYSFS=y 1020CONFIG_SYSFS=y
999CONFIG_TMPFS=y 1021CONFIG_TMPFS=y
1022# CONFIG_TMPFS_POSIX_ACL is not set
1000CONFIG_HUGETLBFS=y 1023CONFIG_HUGETLBFS=y
1001CONFIG_HUGETLB_PAGE=y 1024CONFIG_HUGETLB_PAGE=y
1002CONFIG_RAMFS=y 1025CONFIG_RAMFS=y
@@ -1129,6 +1152,7 @@ CONFIG_PLIST=y
1129# Kernel hacking 1152# Kernel hacking
1130# 1153#
1131# CONFIG_PRINTK_TIME is not set 1154# CONFIG_PRINTK_TIME is not set
1155CONFIG_ENABLE_MUST_CHECK=y
1132CONFIG_MAGIC_SYSRQ=y 1156CONFIG_MAGIC_SYSRQ=y
1133# CONFIG_UNUSED_SYMBOLS is not set 1157# CONFIG_UNUSED_SYMBOLS is not set
1134CONFIG_DEBUG_KERNEL=y 1158CONFIG_DEBUG_KERNEL=y
@@ -1148,6 +1172,7 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y
1148# CONFIG_DEBUG_INFO is not set 1172# CONFIG_DEBUG_INFO is not set
1149CONFIG_DEBUG_FS=y 1173CONFIG_DEBUG_FS=y
1150# CONFIG_DEBUG_VM is not set 1174# CONFIG_DEBUG_VM is not set
1175# CONFIG_DEBUG_LIST is not set
1151# CONFIG_FORCED_INLINING is not set 1176# CONFIG_FORCED_INLINING is not set
1152# CONFIG_RCU_TORTURE_TEST is not set 1177# CONFIG_RCU_TORTURE_TEST is not set
1153CONFIG_DEBUG_STACKOVERFLOW=y 1178CONFIG_DEBUG_STACKOVERFLOW=y
@@ -1169,6 +1194,9 @@ CONFIG_BOOTX_TEXT=y
1169# Cryptographic options 1194# Cryptographic options
1170# 1195#
1171CONFIG_CRYPTO=y 1196CONFIG_CRYPTO=y
1197CONFIG_CRYPTO_ALGAPI=y
1198CONFIG_CRYPTO_BLKCIPHER=m
1199CONFIG_CRYPTO_MANAGER=m
1172# CONFIG_CRYPTO_HMAC is not set 1200# CONFIG_CRYPTO_HMAC is not set
1173# CONFIG_CRYPTO_NULL is not set 1201# CONFIG_CRYPTO_NULL is not set
1174# CONFIG_CRYPTO_MD4 is not set 1202# CONFIG_CRYPTO_MD4 is not set
@@ -1178,6 +1206,8 @@ CONFIG_CRYPTO_MD5=y
1178# CONFIG_CRYPTO_SHA512 is not set 1206# CONFIG_CRYPTO_SHA512 is not set
1179# CONFIG_CRYPTO_WP512 is not set 1207# CONFIG_CRYPTO_WP512 is not set
1180# CONFIG_CRYPTO_TGR192 is not set 1208# CONFIG_CRYPTO_TGR192 is not set
1209CONFIG_CRYPTO_ECB=m
1210CONFIG_CRYPTO_CBC=m
1181CONFIG_CRYPTO_DES=y 1211CONFIG_CRYPTO_DES=y
1182# CONFIG_CRYPTO_BLOWFISH is not set 1212# CONFIG_CRYPTO_BLOWFISH is not set
1183# CONFIG_CRYPTO_TWOFISH is not set 1213# CONFIG_CRYPTO_TWOFISH is not set
diff --git a/arch/powerpc/platforms/maple/pci.c b/arch/powerpc/platforms/maple/pci.c
index 1b827618e05f..63b4d1bff359 100644
--- a/arch/powerpc/platforms/maple/pci.c
+++ b/arch/powerpc/platforms/maple/pci.c
@@ -8,7 +8,7 @@
8 * 2 of the License, or (at your option) any later version. 8 * 2 of the License, or (at your option) any later version.
9 */ 9 */
10 10
11#define DEBUG 11#undef DEBUG
12 12
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/pci.h> 14#include <linux/pci.h>
@@ -16,6 +16,7 @@
16#include <linux/string.h> 16#include <linux/string.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/bootmem.h> 18#include <linux/bootmem.h>
19#include <linux/irq.h>
19 20
20#include <asm/sections.h> 21#include <asm/sections.h>
21#include <asm/io.h> 22#include <asm/io.h>
@@ -33,7 +34,7 @@
33#define DBG(x...) 34#define DBG(x...)
34#endif 35#endif
35 36
36static struct pci_controller *u3_agp, *u3_ht; 37static struct pci_controller *u3_agp, *u3_ht, *u4_pcie;
37 38
38static int __init fixup_one_level_bus_range(struct device_node *node, int higher) 39static int __init fixup_one_level_bus_range(struct device_node *node, int higher)
39{ 40{
@@ -287,6 +288,114 @@ static struct pci_ops u3_ht_pci_ops =
287 u3_ht_write_config 288 u3_ht_write_config
288}; 289};
289 290
291static unsigned int u4_pcie_cfa0(unsigned int devfn, unsigned int off)
292{
293 return (1 << PCI_SLOT(devfn)) |
294 (PCI_FUNC(devfn) << 8) |
295 ((off >> 8) << 28) |
296 (off & 0xfcu);
297}
298
299static unsigned int u4_pcie_cfa1(unsigned int bus, unsigned int devfn,
300 unsigned int off)
301{
302 return (bus << 16) |
303 (devfn << 8) |
304 ((off >> 8) << 28) |
305 (off & 0xfcu) | 1u;
306}
307
308static volatile void __iomem *u4_pcie_cfg_access(struct pci_controller* hose,
309 u8 bus, u8 dev_fn, int offset)
310{
311 unsigned int caddr;
312
313 if (bus == hose->first_busno)
314 caddr = u4_pcie_cfa0(dev_fn, offset);
315 else
316 caddr = u4_pcie_cfa1(bus, dev_fn, offset);
317
318 /* Uninorth will return garbage if we don't read back the value ! */
319 do {
320 out_le32(hose->cfg_addr, caddr);
321 } while (in_le32(hose->cfg_addr) != caddr);
322
323 offset &= 0x03;
324 return hose->cfg_data + offset;
325}
326
327static int u4_pcie_read_config(struct pci_bus *bus, unsigned int devfn,
328 int offset, int len, u32 *val)
329{
330 struct pci_controller *hose;
331 volatile void __iomem *addr;
332
333 hose = pci_bus_to_host(bus);
334 if (hose == NULL)
335 return PCIBIOS_DEVICE_NOT_FOUND;
336 if (offset >= 0x1000)
337 return PCIBIOS_BAD_REGISTER_NUMBER;
338 addr = u4_pcie_cfg_access(hose, bus->number, devfn, offset);
339 if (!addr)
340 return PCIBIOS_DEVICE_NOT_FOUND;
341 /*
342 * Note: the caller has already checked that offset is
343 * suitably aligned and that len is 1, 2 or 4.
344 */
345 switch (len) {
346 case 1:
347 *val = in_8(addr);
348 break;
349 case 2:
350 *val = in_le16(addr);
351 break;
352 default:
353 *val = in_le32(addr);
354 break;
355 }
356 return PCIBIOS_SUCCESSFUL;
357}
358static int u4_pcie_write_config(struct pci_bus *bus, unsigned int devfn,
359 int offset, int len, u32 val)
360{
361 struct pci_controller *hose;
362 volatile void __iomem *addr;
363
364 hose = pci_bus_to_host(bus);
365 if (hose == NULL)
366 return PCIBIOS_DEVICE_NOT_FOUND;
367 if (offset >= 0x1000)
368 return PCIBIOS_BAD_REGISTER_NUMBER;
369 addr = u4_pcie_cfg_access(hose, bus->number, devfn, offset);
370 if (!addr)
371 return PCIBIOS_DEVICE_NOT_FOUND;
372 /*
373 * Note: the caller has already checked that offset is
374 * suitably aligned and that len is 1, 2 or 4.
375 */
376 switch (len) {
377 case 1:
378 out_8(addr, val);
379 (void) in_8(addr);
380 break;
381 case 2:
382 out_le16(addr, val);
383 (void) in_le16(addr);
384 break;
385 default:
386 out_le32(addr, val);
387 (void) in_le32(addr);
388 break;
389 }
390 return PCIBIOS_SUCCESSFUL;
391}
392
393static struct pci_ops u4_pcie_pci_ops =
394{
395 u4_pcie_read_config,
396 u4_pcie_write_config
397};
398
290static void __init setup_u3_agp(struct pci_controller* hose) 399static void __init setup_u3_agp(struct pci_controller* hose)
291{ 400{
292 /* On G5, we move AGP up to high bus number so we don't need 401 /* On G5, we move AGP up to high bus number so we don't need
@@ -307,6 +416,26 @@ static void __init setup_u3_agp(struct pci_controller* hose)
307 u3_agp = hose; 416 u3_agp = hose;
308} 417}
309 418
419static void __init setup_u4_pcie(struct pci_controller* hose)
420{
421 /* We currently only implement the "non-atomic" config space, to
422 * be optimised later.
423 */
424 hose->ops = &u4_pcie_pci_ops;
425 hose->cfg_addr = ioremap(0xf0000000 + 0x800000, 0x1000);
426 hose->cfg_data = ioremap(0xf0000000 + 0xc00000, 0x1000);
427
428 /* The bus contains a bridge from root -> device, we need to
429 * make it visible on bus 0 so that we pick the right type
430 * of config cycles. If we didn't, we would have to force all
431 * config cycles to be type 1. So we override the "bus-range"
432 * property here
433 */
434 hose->first_busno = 0x00;
435 hose->last_busno = 0xff;
436 u4_pcie = hose;
437}
438
310static void __init setup_u3_ht(struct pci_controller* hose) 439static void __init setup_u3_ht(struct pci_controller* hose)
311{ 440{
312 hose->ops = &u3_ht_pci_ops; 441 hose->ops = &u3_ht_pci_ops;
@@ -354,6 +483,10 @@ static int __init add_bridge(struct device_node *dev)
354 setup_u3_ht(hose); 483 setup_u3_ht(hose);
355 disp_name = "U3-HT"; 484 disp_name = "U3-HT";
356 primary = 1; 485 primary = 1;
486 } else if (device_is_compatible(dev, "u4-pcie")) {
487 setup_u4_pcie(hose);
488 disp_name = "U4-PCIE";
489 primary = 0;
357 } 490 }
358 printk(KERN_INFO "Found %s PCI host bridge. Firmware bus number: %d->%d\n", 491 printk(KERN_INFO "Found %s PCI host bridge. Firmware bus number: %d->%d\n",
359 disp_name, hose->first_busno, hose->last_busno); 492 disp_name, hose->first_busno, hose->last_busno);
@@ -361,7 +494,6 @@ static int __init add_bridge(struct device_node *dev)
361 /* Interpret the "ranges" property */ 494 /* Interpret the "ranges" property */
362 /* This also maps the I/O region and sets isa_io/mem_base */ 495 /* This also maps the I/O region and sets isa_io/mem_base */
363 pci_process_bridge_OF_ranges(hose, dev, primary); 496 pci_process_bridge_OF_ranges(hose, dev, primary);
364 pci_setup_phb_io(hose, primary);
365 497
366 /* Fixup "bus-range" OF property */ 498 /* Fixup "bus-range" OF property */
367 fixup_bus_range(dev); 499 fixup_bus_range(dev);
@@ -376,8 +508,30 @@ void __init maple_pcibios_fixup(void)
376 508
377 DBG(" -> maple_pcibios_fixup\n"); 509 DBG(" -> maple_pcibios_fixup\n");
378 510
379 for_each_pci_dev(dev) 511 for_each_pci_dev(dev) {
512 /* Fixup IRQ for PCIe host */
513 if (u4_pcie != NULL && dev->bus->number == 0 &&
514 pci_bus_to_host(dev->bus) == u4_pcie) {
515 printk(KERN_DEBUG "Fixup U4 PCIe IRQ\n");
516 dev->irq = irq_create_mapping(NULL, 1);
517 if (dev->irq != NO_IRQ)
518 set_irq_type(dev->irq, IRQ_TYPE_LEVEL_LOW);
519 continue;
520 }
521
522 /* Hide AMD8111 IDE interrupt when in legacy mode so
523 * the driver calls pci_get_legacy_ide_irq()
524 */
525 if (dev->vendor == PCI_VENDOR_ID_AMD &&
526 dev->device == PCI_DEVICE_ID_AMD_8111_IDE &&
527 (dev->class & 5) != 5) {
528 dev->irq = NO_IRQ;
529 continue;
530 }
531
532 /* For all others, map the interrupt from the device-tree */
380 pci_read_irq_line(dev); 533 pci_read_irq_line(dev);
534 }
381 535
382 DBG(" <- maple_pcibios_fixup\n"); 536 DBG(" <- maple_pcibios_fixup\n");
383} 537}
@@ -388,8 +542,10 @@ static void __init maple_fixup_phb_resources(void)
388 542
389 list_for_each_entry_safe(hose, tmp, &hose_list, list_node) { 543 list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
390 unsigned long offset = (unsigned long)hose->io_base_virt - pci_io_base; 544 unsigned long offset = (unsigned long)hose->io_base_virt - pci_io_base;
545
391 hose->io_resource.start += offset; 546 hose->io_resource.start += offset;
392 hose->io_resource.end += offset; 547 hose->io_resource.end += offset;
548
393 printk(KERN_INFO "PCI Host %d, io start: %llx; io end: %llx\n", 549 printk(KERN_INFO "PCI Host %d, io start: %llx; io end: %llx\n",
394 hose->global_number, 550 hose->global_number,
395 (unsigned long long)hose->io_resource.start, 551 (unsigned long long)hose->io_resource.start,
@@ -431,6 +587,19 @@ void __init maple_pci_init(void)
431 if (ht && add_bridge(ht) != 0) 587 if (ht && add_bridge(ht) != 0)
432 of_node_put(ht); 588 of_node_put(ht);
433 589
590 /*
591 * We need to call pci_setup_phb_io for the HT bridge first
592 * so it gets the I/O port numbers starting at 0, and we
593 * need to call it for the AGP bridge after that so it gets
594 * small positive I/O port numbers.
595 */
596 if (u3_ht)
597 pci_setup_phb_io(u3_ht, 1);
598 if (u3_agp)
599 pci_setup_phb_io(u3_agp, 0);
600 if (u4_pcie)
601 pci_setup_phb_io(u4_pcie, 0);
602
434 /* Fixup the IO resources on our host bridges as the common code 603 /* Fixup the IO resources on our host bridges as the common code
435 * does it only for childs of the host bridges 604 * does it only for childs of the host bridges
436 */ 605 */
@@ -465,8 +634,11 @@ int maple_pci_get_legacy_ide_irq(struct pci_dev *pdev, int channel)
465 return defirq; 634 return defirq;
466 635
467 np = pci_device_to_OF_node(pdev); 636 np = pci_device_to_OF_node(pdev);
468 if (np == NULL) 637 if (np == NULL) {
638 printk("Failed to locate OF node for IDE %s\n",
639 pci_name(pdev));
469 return defirq; 640 return defirq;
641 }
470 irq = irq_of_parse_and_map(np, channel & 0x1); 642 irq = irq_of_parse_and_map(np, channel & 0x1);
471 if (irq == NO_IRQ) { 643 if (irq == NO_IRQ) {
472 printk("Failed to map onboard IDE interrupt for channel %d\n", 644 printk("Failed to map onboard IDE interrupt for channel %d\n",
@@ -479,6 +651,9 @@ int maple_pci_get_legacy_ide_irq(struct pci_dev *pdev, int channel)
479/* XXX: To remove once all firmwares are ok */ 651/* XXX: To remove once all firmwares are ok */
480static void fixup_maple_ide(struct pci_dev* dev) 652static void fixup_maple_ide(struct pci_dev* dev)
481{ 653{
654 if (!machine_is(maple))
655 return;
656
482#if 0 /* Enable this to enable IDE port 0 */ 657#if 0 /* Enable this to enable IDE port 0 */
483 { 658 {
484 u8 v; 659 u8 v;
@@ -495,7 +670,7 @@ static void fixup_maple_ide(struct pci_dev* dev)
495 dev->resource[4].start = 0xcc00; 670 dev->resource[4].start = 0xcc00;
496 dev->resource[4].end = 0xcc10; 671 dev->resource[4].end = 0xcc10;
497#endif 672#endif
498#if 1 /* Enable this to fixup IDE sense/polarity of irqs in IO-APICs */ 673#if 0 /* Enable this to fixup IDE sense/polarity of irqs in IO-APICs */
499 { 674 {
500 struct pci_dev *apicdev; 675 struct pci_dev *apicdev;
501 u32 v; 676 u32 v;
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
index 574cd205b302..eeb2ae5ffc58 100644
--- a/arch/powerpc/platforms/powermac/smp.c
+++ b/arch/powerpc/platforms/powermac/smp.c
@@ -328,6 +328,7 @@ static void __init smp_psurge_kick_cpu(int nr)
328{ 328{
329 unsigned long start = __pa(__secondary_start_pmac_0) + nr * 8; 329 unsigned long start = __pa(__secondary_start_pmac_0) + nr * 8;
330 unsigned long a; 330 unsigned long a;
331 int i;
331 332
332 /* may need to flush here if secondary bats aren't setup */ 333 /* may need to flush here if secondary bats aren't setup */
333 for (a = KERNELBASE; a < KERNELBASE + 0x800000; a += 32) 334 for (a = KERNELBASE; a < KERNELBASE + 0x800000; a += 32)
@@ -340,7 +341,11 @@ static void __init smp_psurge_kick_cpu(int nr)
340 mb(); 341 mb();
341 342
342 psurge_set_ipi(nr); 343 psurge_set_ipi(nr);
343 udelay(10); 344 /*
345 * We can't use udelay here because the timebase is now frozen.
346 */
347 for (i = 0; i < 2000; ++i)
348 barrier();
344 psurge_clr_ipi(nr); 349 psurge_clr_ipi(nr);
345 350
346 if (ppc_md.progress) ppc_md.progress("smp_psurge_kick_cpu - done", 0x354); 351 if (ppc_md.progress) ppc_md.progress("smp_psurge_kick_cpu - done", 0x354);
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index 5a854f36383c..f56ffef4defa 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -36,6 +36,7 @@
36#include <asm/rtas.h> 36#include <asm/rtas.h>
37#include <asm/sstep.h> 37#include <asm/sstep.h>
38#include <asm/bug.h> 38#include <asm/bug.h>
39#include <asm/irq_regs.h>
39 40
40#ifdef CONFIG_PPC64 41#ifdef CONFIG_PPC64
41#include <asm/hvcall.h> 42#include <asm/hvcall.h>
@@ -521,13 +522,12 @@ int xmon(struct pt_regs *excp)
521} 522}
522EXPORT_SYMBOL(xmon); 523EXPORT_SYMBOL(xmon);
523 524
524irqreturn_t 525irqreturn_t xmon_irq(int irq, void *d)
525xmon_irq(int irq, void *d, struct pt_regs *regs)
526{ 526{
527 unsigned long flags; 527 unsigned long flags;
528 local_irq_save(flags); 528 local_irq_save(flags);
529 printf("Keyboard interrupt\n"); 529 printf("Keyboard interrupt\n");
530 xmon(regs); 530 xmon(get_irq_regs());
531 local_irq_restore(flags); 531 local_irq_restore(flags);
532 return IRQ_HANDLED; 532 return IRQ_HANDLED;
533} 533}