From ed8ed9ac06604513edd6be6b1c81b6270296b7fc Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Tue, 19 Dec 2006 15:32:41 +0100 Subject: [PATCH 01/18] [POWERPC] cell: update cell_defconfig New options appeared in the kernel, and new hardware became available for us to use. Signed-off-by: Arnd Bergmann --- arch/powerpc/configs/cell_defconfig | 358 ++++++++++++++++++++++++---- 1 file changed, 314 insertions(+), 44 deletions(-) diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig index a98c982c73ad..d1d25152f74f 100644 --- a/arch/powerpc/configs/cell_defconfig +++ b/arch/powerpc/configs/cell_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.19-rc6 -# Wed Nov 22 15:33:04 2006 +# Linux kernel version: 2.6.20-rc1 +# Tue Dec 19 14:59:53 2006 # CONFIG_PPC64=y CONFIG_64BIT=y @@ -10,6 +10,8 @@ CONFIG_MMU=y CONFIG_GENERIC_HARDIRQS=y CONFIG_IRQ_PER_CPU=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_ARCH_HAS_ILOG2_U32=y +CONFIG_ARCH_HAS_ILOG2_U64=y CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_FIND_NEXT_BIT=y @@ -23,6 +25,7 @@ CONFIG_PPC_OF=y CONFIG_PPC_UDBG_16550=y # CONFIG_GENERIC_TBSYNC is not set CONFIG_AUDIT_ARCH=y +CONFIG_GENERIC_BUG=y # CONFIG_DEFAULT_UIMAGE is not set # @@ -66,6 +69,7 @@ CONFIG_SYSVIPC=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_CPUSETS=y +CONFIG_SYSFS_DEPRECATED=y # CONFIG_RELAY is not set CONFIG_INITRAMFS_SOURCE="" CONFIG_CC_OPTIMIZE_FOR_SIZE=y @@ -128,14 +132,16 @@ CONFIG_PPC_MULTIPLATFORM=y # CONFIG_APUS is not set # CONFIG_PPC_PSERIES is not set # CONFIG_PPC_ISERIES is not set +# CONFIG_PPC_MPC52xx is not set # CONFIG_PPC_PMAC is not set # CONFIG_PPC_MAPLE is not set # CONFIG_PPC_PASEMI is not set CONFIG_PPC_CELL=y CONFIG_PPC_CELL_NATIVE=y CONFIG_PPC_IBM_CELL_BLADE=y -CONFIG_UDBG_RTAS_CONSOLE=y CONFIG_PPC_PS3=y +CONFIG_PPC_NATIVE=y +CONFIG_UDBG_RTAS_CONSOLE=y # CONFIG_U3_DART is not set CONFIG_PPC_RTAS=y # CONFIG_RTAS_ERROR_LOGGING is not set @@ -177,12 +183,14 @@ CONFIG_CBE_CPUFREQ=m CONFIG_PS3_HTAB_SIZE=20 # CONFIG_PS3_DYNAMIC_DMA is not set CONFIG_PS3_USE_LPAR_ADDR=y +CONFIG_PS3_VUART=y # # Kernel options # # CONFIG_HZ_100 is not set CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set # CONFIG_HZ_1000 is not set CONFIG_HZ=250 CONFIG_PREEMPT_NONE=y @@ -237,6 +245,7 @@ CONFIG_GENERIC_ISA_DMA=y CONFIG_PCI=y CONFIG_PCI_DOMAINS=y CONFIG_PCIEPORTBUS=y +# CONFIG_PCI_MULTITHREAD_PROBE is not set # CONFIG_PCI_DEBUG is not set # @@ -270,7 +279,10 @@ CONFIG_INET=y CONFIG_IP_MULTICAST=y # CONFIG_IP_ADVANCED_ROUTER is not set CONFIG_IP_FIB_HASH=y -# CONFIG_IP_PNP is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y CONFIG_NET_IPIP=y # CONFIG_NET_IPGRE is not set # CONFIG_IP_MROUTE is not set @@ -289,6 +301,7 @@ CONFIG_INET_TCP_DIAG=y # CONFIG_TCP_CONG_ADVANCED is not set CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set # # IP: Virtual Server Configuration @@ -317,31 +330,67 @@ CONFIG_NETFILTER=y # # Core Netfilter Configuration # -# CONFIG_NETFILTER_NETLINK is not set -# CONFIG_NETFILTER_XTABLES is not set +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +# CONFIG_NF_CONNTRACK_ENABLED is not set +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m # # IP: Netfilter Configuration # -CONFIG_IP_NF_CONNTRACK=y -# CONFIG_IP_NF_CT_ACCT is not set -# CONFIG_IP_NF_CONNTRACK_MARK is not set -# CONFIG_IP_NF_CONNTRACK_EVENTS is not set -CONFIG_IP_NF_CT_PROTO_SCTP=y -CONFIG_IP_NF_FTP=m -CONFIG_IP_NF_IRC=m -# CONFIG_IP_NF_NETBIOS_NS is not set -CONFIG_IP_NF_TFTP=m -CONFIG_IP_NF_AMANDA=m -# CONFIG_IP_NF_PPTP is not set -# CONFIG_IP_NF_H323 is not set -# CONFIG_IP_NF_SIP is not set CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m # # IPv6: Netfilter Configuration (EXPERIMENTAL) # # CONFIG_IP6_NF_QUEUE is not set +# CONFIG_IP6_NF_IPTABLES is not set # # DCCP Configuration (EXPERIMENTAL) @@ -373,6 +422,7 @@ CONFIG_IP_NF_QUEUE=m # QoS and/or fair queueing # # CONFIG_NET_SCHED is not set +CONFIG_NET_CLS_ROUTE=y # # Network testing @@ -428,6 +478,7 @@ CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set # CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_UB is not set CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=131072 @@ -457,6 +508,7 @@ CONFIG_IDEDISK_MULTI_MODE=y # CONFIG_BLK_DEV_IDECD is not set # CONFIG_BLK_DEV_IDETAPE is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set # CONFIG_IDE_TASK_IOCTL is not set # @@ -468,7 +520,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y # CONFIG_BLK_DEV_OFFBOARD is not set CONFIG_BLK_DEV_GENERIC=y # CONFIG_BLK_DEV_OPTI621 is not set -# CONFIG_BLK_DEV_SL82C105 is not set CONFIG_BLK_DEV_IDEDMA_PCI=y # CONFIG_BLK_DEV_IDEDMA_FORCED is not set CONFIG_IDEDMA_PCI_AUTO=y @@ -492,6 +543,7 @@ CONFIG_BLK_DEV_AEC62XX=y # CONFIG_BLK_DEV_PDC202XX_NEW is not set # CONFIG_BLK_DEV_SVWKS is not set CONFIG_BLK_DEV_SIIMAGE=y +# CONFIG_BLK_DEV_SL82C105 is not set # CONFIG_BLK_DEV_SLC90E66 is not set # CONFIG_BLK_DEV_TRM290 is not set # CONFIG_BLK_DEV_VIA82CXXX is not set @@ -505,8 +557,74 @@ CONFIG_IDEDMA_AUTO=y # SCSI device support # # CONFIG_RAID_ATTRS is not set -# CONFIG_SCSI is not set +CONFIG_SCSI=m +# CONFIG_SCSI_TGT is not set # CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +# CONFIG_CHR_DEV_SCH is not set + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set + +# +# SCSI low-level drivers +# +# CONFIG_ISCSI_TCP is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_FC is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_SRP is not set # # Serial ATA (prod) and Parallel ATA (experimental) drivers @@ -538,6 +656,9 @@ CONFIG_DM_MULTIPATH=m # Fusion MPT device support # # CONFIG_FUSION is not set +# CONFIG_FUSION_SPI is not set +# CONFIG_FUSION_FC is not set +# CONFIG_FUSION_SAS is not set # # IEEE 1394 (FireWire) support @@ -552,6 +673,7 @@ CONFIG_DM_MULTIPATH=m # # Macintosh device drivers # +# CONFIG_MAC_EMUMOUSEBTN is not set # CONFIG_WINDFARM is not set # @@ -559,7 +681,7 @@ CONFIG_DM_MULTIPATH=m # CONFIG_NETDEVICES=y # CONFIG_DUMMY is not set -CONFIG_BONDING=y +CONFIG_BONDING=m # CONFIG_EQUALIZER is not set CONFIG_TUN=y @@ -604,11 +726,11 @@ CONFIG_E1000_NAPI=y # CONFIG_R8169 is not set # CONFIG_SIS190 is not set CONFIG_SKGE=m -# CONFIG_SKY2 is not set +CONFIG_SKY2=m # CONFIG_SK98LIN is not set -# CONFIG_TIGON3 is not set +CONFIG_TIGON3=y # CONFIG_BNX2 is not set -CONFIG_SPIDER_NET=m +CONFIG_SPIDER_NET=y # CONFIG_QLA3XXX is not set # @@ -618,6 +740,7 @@ CONFIG_SPIDER_NET=m # CONFIG_IXGB is not set # CONFIG_S2IO is not set # CONFIG_MYRI10GE is not set +# CONFIG_NETXEN_NIC is not set # # Token Ring devices @@ -637,6 +760,7 @@ CONFIG_SPIDER_NET=m # CONFIG_HIPPI is not set # CONFIG_PPP is not set # CONFIG_SLIP is not set +# CONFIG_NET_FC is not set # CONFIG_SHAPER is not set # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set @@ -703,6 +827,7 @@ CONFIG_SERIAL_NONSTANDARD=y # CONFIG_DIGIEPCA is not set # CONFIG_MOXA_INTELLIO is not set # CONFIG_MOXA_SMARTIO is not set +# CONFIG_MOXA_SMARTIO_NEW is not set # CONFIG_ISI is not set # CONFIG_SYNCLINK is not set # CONFIG_SYNCLINKMP is not set @@ -729,6 +854,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_JSM is not set +CONFIG_SERIAL_OF_PLATFORM=y CONFIG_UNIX98_PTYS=y # CONFIG_LEGACY_PTYS is not set CONFIG_HVC_DRIVER=y @@ -756,16 +882,17 @@ CONFIG_WATCHDOG_RTAS=y # # CONFIG_PCIPCWATCHDOG is not set # CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set # CONFIG_HW_RANDOM is not set CONFIG_GEN_RTC=y # CONFIG_GEN_RTC_X is not set # CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set - -# -# Ftape, the floppy tape device driver -# # CONFIG_AGP is not set # CONFIG_DRM is not set # CONFIG_RAW_DRIVER is not set @@ -855,12 +982,14 @@ CONFIG_I2C_ALGOBIT=y # Digital Video Broadcasting Devices # # CONFIG_DVB is not set +# CONFIG_USB_DABUSB is not set # # Graphics support # CONFIG_FIRMWARE_EDID=y # CONFIG_FB is not set +# CONFIG_FB_IBM_GXT4500 is not set # # Console display driver support @@ -874,18 +1003,145 @@ CONFIG_DUMMY_CONSOLE=y # # CONFIG_SOUND is not set +# +# HID Devices +# +CONFIG_HID=m + # # USB support # CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_EHCI=y -# CONFIG_USB is not set +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_MULTITHREAD_PROBE is not set +# CONFIG_USB_OTG is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=m +# CONFIG_USB_EHCI_SPLIT_ISO is not set +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set +# CONFIG_USB_EHCI_TT_NEWSCHED is not set +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_OHCI_HCD=m +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set # # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' # +# +# may also be needed; see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Input Devices +# +# CONFIG_USB_HID is not set + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_ACECAD is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set +# CONFIG_USB_TOUCHSCREEN is not set +# CONFIG_USB_YEALINK is not set +# CONFIG_USB_XPAD is not set +# CONFIG_USB_ATI_REMOTE is not set +# CONFIG_USB_ATI_REMOTE2 is not set +# CONFIG_USB_KEYSPAN_REMOTE is not set +# CONFIG_USB_APPLETOUCH is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_USBNET_MII is not set +# CONFIG_USB_USBNET is not set +CONFIG_USB_MON=y + +# +# USB port drivers +# + +# +# USB Serial Converter support +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_PHIDGET is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_TEST is not set + +# +# USB DSL modem support +# + # # USB Gadget Support # @@ -912,7 +1168,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y # # InfiniBand support # -CONFIG_INFINIBAND=y +CONFIG_INFINIBAND=m CONFIG_INFINIBAND_USER_MAD=m CONFIG_INFINIBAND_USER_ACCESS=m CONFIG_INFINIBAND_ADDR_TRANS=y @@ -922,6 +1178,8 @@ CONFIG_INFINIBAND_MTHCA_DEBUG=y CONFIG_INFINIBAND_IPOIB=m CONFIG_INFINIBAND_IPOIB_DEBUG=y CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y +# CONFIG_INFINIBAND_SRP is not set +# CONFIG_INFINIBAND_ISER is not set # # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) @@ -945,6 +1203,10 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y # DMA Devices # +# +# Virtualization +# + # # File systems # @@ -1028,23 +1290,18 @@ CONFIG_RAMFS=y # # Network File Systems # -CONFIG_NFS_FS=m +CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y # CONFIG_NFS_V4 is not set # CONFIG_NFS_DIRECTIO is not set -CONFIG_NFSD=m -CONFIG_NFSD_V2_ACL=y -CONFIG_NFSD_V3=y -CONFIG_NFSD_V3_ACL=y -# CONFIG_NFSD_V4 is not set -CONFIG_NFSD_TCP=y -CONFIG_LOCKD=m +# CONFIG_NFSD is not set +CONFIG_ROOT_NFS=y +CONFIG_LOCKD=y CONFIG_LOCKD_V4=y -CONFIG_EXPORTFS=m -CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_ACL_SUPPORT=y CONFIG_NFS_COMMON=y -CONFIG_SUNRPC=m +CONFIG_SUNRPC=y # CONFIG_RPCSEC_GSS_KRB5 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_SMB_FS is not set @@ -1119,9 +1376,15 @@ CONFIG_NLS_ISO8859_15=m # CONFIG_NLS_KOI8_U is not set # CONFIG_NLS_UTF8 is not set +# +# Distributed Lock Manager +# +# CONFIG_DLM is not set + # # Library routines # +CONFIG_BITREVERSE=y # CONFIG_CRC_CCITT is not set # CONFIG_CRC16 is not set CONFIG_CRC32=y @@ -1130,7 +1393,10 @@ CONFIG_ZLIB_INFLATE=m CONFIG_ZLIB_DEFLATE=m CONFIG_TEXTSEARCH=y CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m CONFIG_PLIST=y +CONFIG_IOMAP_COPY=y # # Instrumentation Support @@ -1146,6 +1412,8 @@ CONFIG_OPROFILE=y # CONFIG_ENABLE_MUST_CHECK is not set CONFIG_MAGIC_SYSRQ=y # CONFIG_UNUSED_SYMBOLS is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y CONFIG_LOG_BUF_SHIFT=15 CONFIG_DETECT_SOFTLOCKUP=y @@ -1159,12 +1427,11 @@ CONFIG_DEBUG_MUTEXES=y CONFIG_DEBUG_SPINLOCK_SLEEP=y # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_DEBUG_KOBJECT is not set +CONFIG_DEBUG_BUGVERBOSE=y # CONFIG_DEBUG_INFO is not set -CONFIG_DEBUG_FS=y # CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_LIST is not set # CONFIG_FORCED_INLINING is not set -# CONFIG_HEADERS_CHECK is not set # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_DEBUG_STACKOVERFLOW is not set # CONFIG_DEBUG_STACK_USAGE is not set @@ -1191,6 +1458,7 @@ CONFIG_CRYPTO_BLKCIPHER=m CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_XCBC is not set # CONFIG_CRYPTO_NULL is not set # CONFIG_CRYPTO_MD4 is not set CONFIG_CRYPTO_MD5=m @@ -1199,8 +1467,10 @@ CONFIG_CRYPTO_SHA1=m # CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_GF128MUL is not set CONFIG_CRYPTO_ECB=m CONFIG_CRYPTO_CBC=m +# CONFIG_CRYPTO_LRW is not set CONFIG_CRYPTO_DES=m # CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_TWOFISH is not set From f1fa16e8816a2285ed77070ce60a6858fb7913cc Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Tue, 19 Dec 2006 15:32:42 +0100 Subject: [PATCH 02/18] [POWERPC] cell: add forward struct declarations to spu.h Needed to be able to include spu.h independant from other headers. Signed-off-by: Arnd Bergmann --- include/asm-powerpc/spu.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h index fdad4267b447..3d90264e9d36 100644 --- a/include/asm-powerpc/spu.h +++ b/include/asm-powerpc/spu.h @@ -161,6 +161,7 @@ struct spu_syscall_block { extern long spu_sys_callback(struct spu_syscall_block *s); /* syscalls implemented in spufs */ +struct file; extern struct spufs_calls { asmlinkage long (*create_thread)(const char __user *name, unsigned int flags, mode_t mode); @@ -232,6 +233,7 @@ void spu_remove_sysdev_attr_group(struct attribute_group *attrs); * to object-id spufs file from user space and the notifer * function can assume that spu->ctx is valid. */ +struct notifier_block; int spu_switch_event_register(struct notifier_block * n); int spu_switch_event_unregister(struct notifier_block * n); From a24e57be9baed6ccb552fbdb8e7e29e9c2da0375 Mon Sep 17 00:00:00 2001 From: Jens Osterkamp Date: Tue, 19 Dec 2006 15:32:43 +0100 Subject: [PATCH 03/18] [POWERPC] cell: Enable spider workarounds on all PCI buses Don't limit spider I/O workarounds to the first two buses. The IBM Cell blade has three of them (one PCI, two PCIe) and we want to handle them all. Signed-off-by: Jens Osterkamp Signed-off-by: Arnd Bergmann --- arch/powerpc/platforms/cell/io-workarounds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/platforms/cell/io-workarounds.c b/arch/powerpc/platforms/cell/io-workarounds.c index 580d42595912..7c73128305ec 100644 --- a/arch/powerpc/platforms/cell/io-workarounds.c +++ b/arch/powerpc/platforms/cell/io-workarounds.c @@ -37,7 +37,7 @@ */ #define SPIDER_DISABLE_PREFETCH -#define MAX_SPIDERS 2 +#define MAX_SPIDERS 3 static struct spider_pci_bus { void __iomem *regs; From 6e22ba63f01b9bdcd1f29251a95047d310526207 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Tue, 19 Dec 2006 15:32:44 +0100 Subject: [PATCH 04/18] [POWERPC] cell: Fix spufs with "new style" device-tree Some SPU code was a bit too convoluted and broke when adding support for the new style device-tree, most notably the struct pages for SPEs no longer get created. oops... Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Arnd Bergmann --- arch/powerpc/platforms/cell/spu_priv1_mmio.c | 67 ++++++++++++-------- 1 file changed, 42 insertions(+), 25 deletions(-) diff --git a/arch/powerpc/platforms/cell/spu_priv1_mmio.c b/arch/powerpc/platforms/cell/spu_priv1_mmio.c index a5de0430c56d..c805e63b7d5c 100644 --- a/arch/powerpc/platforms/cell/spu_priv1_mmio.c +++ b/arch/powerpc/platforms/cell/spu_priv1_mmio.c @@ -37,6 +37,8 @@ #include "interrupt.h" #include "spu_priv1_mmio.h" +static DEFINE_MUTEX(add_spumem_mutex); + struct spu_pdata { int nid; struct device_node *devnode; @@ -68,8 +70,6 @@ static int __init find_spu_node_id(struct device_node *spe) static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe, const char *prop) { - static DEFINE_MUTEX(add_spumem_mutex); - const struct address_prop { unsigned long address; unsigned int len; @@ -237,70 +237,88 @@ err: return ret; } -static int spu_map_resource(struct device_node *node, int nr, - void __iomem** virt, unsigned long *phys) +static int spu_map_resource(struct spu *spu, int nr, + void __iomem** virt, unsigned long *phys) { + struct device_node *np = spu_get_pdata(spu)->devnode; + unsigned long start_pfn, nr_pages; + struct pglist_data *pgdata; + struct zone *zone; struct resource resource = { }; + unsigned long len; int ret; - ret = of_address_to_resource(node, nr, &resource); + ret = of_address_to_resource(np, nr, &resource); if (ret) goto out; if (phys) *phys = resource.start; - *virt = ioremap(resource.start, resource.end - resource.start); + len = resource.end - resource.start + 1; + *virt = ioremap(resource.start, len); if (!*virt) ret = -EINVAL; + start_pfn = resource.start >> PAGE_SHIFT; + nr_pages = (len + PAGE_SIZE - 1) >> PAGE_SHIFT; + + pgdata = NODE_DATA(spu_get_pdata(spu)->nid); + zone = pgdata->node_zones; + + /* XXX rethink locking here */ + mutex_lock(&add_spumem_mutex); + ret = __add_pages(zone, start_pfn, nr_pages); + mutex_unlock(&add_spumem_mutex); + out: return ret; } -static int __init spu_map_device(struct spu *spu, struct device_node *node) +static int __init spu_map_device(struct spu *spu) { + struct device_node *np = spu_get_pdata(spu)->devnode; int ret = -ENODEV; - spu->name = get_property(node, "name", NULL); + + spu->name = get_property(np, "name", NULL); if (!spu->name) goto out; - ret = spu_map_resource(node, 0, (void __iomem**)&spu->local_store, - &spu->local_store_phys); + ret = spu_map_resource(spu, 0, (void __iomem**)&spu->local_store, + &spu->local_store_phys); if (ret) { pr_debug("spu_new: failed to map %s resource 0\n", - node->full_name); + np->full_name); goto out; } - ret = spu_map_resource(node, 1, (void __iomem**)&spu->problem, - &spu->problem_phys); + ret = spu_map_resource(spu, 1, (void __iomem**)&spu->problem, + &spu->problem_phys); if (ret) { pr_debug("spu_new: failed to map %s resource 1\n", - node->full_name); + np->full_name); goto out_unmap; } - ret = spu_map_resource(node, 2, (void __iomem**)&spu->priv2, - NULL); + ret = spu_map_resource(spu, 2, (void __iomem**)&spu->priv2, NULL); if (ret) { pr_debug("spu_new: failed to map %s resource 2\n", - node->full_name); + np->full_name); goto out_unmap; } if (!firmware_has_feature(FW_FEATURE_LPAR)) - ret = spu_map_resource(node, 3, - (void __iomem**)&spu_get_pdata(spu)->priv1, NULL); + ret = spu_map_resource(spu, 3, + (void __iomem**)&spu_get_pdata(spu)->priv1, NULL); if (ret) { pr_debug("spu_new: failed to map %s resource 3\n", - node->full_name); + np->full_name); goto out_unmap; } - pr_debug("spu_new: %s maps:\n", node->full_name); + pr_debug("spu_new: %s maps:\n", np->full_name); pr_debug(" local store : 0x%016lx -> 0x%p\n", spu->local_store_phys, spu->local_store); pr_debug(" problem state : 0x%016lx -> 0x%p\n", spu->problem_phys, spu->problem); pr_debug(" priv2 : 0x%p\n", spu->priv2); pr_debug(" priv1 : 0x%p\n", - spu_get_pdata(spu)->priv1); + spu_get_pdata(spu)->priv1); return 0; @@ -340,6 +358,7 @@ static int __init of_create_spu(struct spu *spu, void *data) ret = -ENOMEM; goto out; } + spu_get_pdata(spu)->devnode = of_node_get(spe); spu->node = find_spu_node_id(spe); if (spu->node >= MAX_NUMNODES) { @@ -354,7 +373,7 @@ static int __init of_create_spu(struct spu *spu, void *data) if (spu_get_pdata(spu)->nid == -1) spu_get_pdata(spu)->nid = 0; - ret = spu_map_device(spu, spe); + ret = spu_map_device(spu); /* try old method */ if (ret) ret = spu_map_device_old(spu, spe); @@ -367,8 +386,6 @@ static int __init of_create_spu(struct spu *spu, void *data) if (ret) goto out_unmap; - spu_get_pdata(spu)->devnode = of_node_get(spe); - pr_debug(KERN_DEBUG "Using SPE %s %p %p %p %p %d\n", spu->name, spu->local_store, spu->problem, spu_get_pdata(spu)->priv1, spu->priv2, spu->number); From ccb4911598172a131b6a2d99d7eecfcee1ecc8f7 Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Tue, 19 Dec 2006 15:32:45 +0100 Subject: [PATCH 05/18] [POWERPC] spufs: fix assignment of node numbers The difference between 'nid' and 'node' fields in an spu structure was used incorrectly. The common 'node' number now reflects the NUMA node, and it is used in other places in the code as well. The 'nid' value is meaningful only in one place, namely the computation of the interrupt numbers based on the physical location of an spu. Consequently, we look it up directly in the place where it is used now. Signed-off-by: Arnd Bergmann --- arch/powerpc/platforms/cell/spu_priv1_mmio.c | 30 ++++++++------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/arch/powerpc/platforms/cell/spu_priv1_mmio.c b/arch/powerpc/platforms/cell/spu_priv1_mmio.c index c805e63b7d5c..910a926b61a2 100644 --- a/arch/powerpc/platforms/cell/spu_priv1_mmio.c +++ b/arch/powerpc/platforms/cell/spu_priv1_mmio.c @@ -40,7 +40,6 @@ static DEFINE_MUTEX(add_spumem_mutex); struct spu_pdata { - int nid; struct device_node *devnode; struct spu_priv1 __iomem *priv1; }; @@ -58,15 +57,6 @@ struct device_node *spu_devnode(struct spu *spu) EXPORT_SYMBOL_GPL(spu_devnode); -static int __init find_spu_node_id(struct device_node *spe) -{ - const unsigned int *id; - struct device_node *cpu; - cpu = spe->parent->parent; - id = get_property(cpu, "node-id", NULL); - return id ? *id : 0; -} - static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe, const char *prop) { @@ -87,7 +77,7 @@ static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe, start_pfn = p->address >> PAGE_SHIFT; nr_pages = ((unsigned long)p->len + PAGE_SIZE - 1) >> PAGE_SHIFT; - pgdata = NODE_DATA(spu_get_pdata(spu)->nid); + pgdata = NODE_DATA(spu->node); zone = pgdata->node_zones; /* XXX rethink locking here */ @@ -140,6 +130,7 @@ static int __init spu_map_interrupts_old(struct spu *spu, { unsigned int isrc; const u32 *tmp; + int nid; /* Get the interrupt source unit from the device-tree */ tmp = get_property(np, "isrc", NULL); @@ -147,8 +138,15 @@ static int __init spu_map_interrupts_old(struct spu *spu, return -ENODEV; isrc = tmp[0]; + tmp = get_property(np->parent->parent, "node-id", NULL); + if (!tmp) { + printk(KERN_WARNING "%s: can't find node-id\n", __FUNCTION__); + nid = spu->node; + } else + nid = tmp[0]; + /* Add the node number */ - isrc |= spu->node << IIC_IRQ_NODE_SHIFT; + isrc |= nid << IIC_IRQ_NODE_SHIFT; /* Now map interrupts of all 3 classes */ spu->irqs[0] = irq_create_mapping(NULL, IIC_IRQ_CLASS_0 | isrc); @@ -262,7 +260,7 @@ static int spu_map_resource(struct spu *spu, int nr, start_pfn = resource.start >> PAGE_SHIFT; nr_pages = (len + PAGE_SIZE - 1) >> PAGE_SHIFT; - pgdata = NODE_DATA(spu_get_pdata(spu)->nid); + pgdata = NODE_DATA(spu->node); zone = pgdata->node_zones; /* XXX rethink locking here */ @@ -360,7 +358,7 @@ static int __init of_create_spu(struct spu *spu, void *data) } spu_get_pdata(spu)->devnode = of_node_get(spe); - spu->node = find_spu_node_id(spe); + spu->node = of_node_to_nid(spe); if (spu->node >= MAX_NUMNODES) { printk(KERN_WARNING "SPE %s on node %d ignored," " node number too big\n", spe->full_name, spu->node); @@ -369,10 +367,6 @@ static int __init of_create_spu(struct spu *spu, void *data) goto out_free; } - spu_get_pdata(spu)->nid = of_node_to_nid(spe); - if (spu_get_pdata(spu)->nid == -1) - spu_get_pdata(spu)->nid = 0; - ret = spu_map_device(spu); /* try old method */ if (ret) From 4bc196266e61be1ea9391a6a52c0399c5b394e5b Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Tue, 19 Dec 2006 15:32:46 +0100 Subject: [PATCH 06/18] [POWERPC] powerpc: add scanning of ebc bus to of_platform This patch add scanning of ebc bus to of_platform, which is needed to recognize devices located on that bus. Signed-off-by: Christian Krafft Signed-off-by: Arnd Bergmann --- arch/powerpc/kernel/of_platform.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/powerpc/kernel/of_platform.c b/arch/powerpc/kernel/of_platform.c index 3002ea3a61a2..b7345176b399 100644 --- a/arch/powerpc/kernel/of_platform.c +++ b/arch/powerpc/kernel/of_platform.c @@ -50,6 +50,7 @@ static struct of_device_id of_default_bus_ids[] = { { .type = "plb5", }, { .type = "plb4", }, { .type = "opb", }, + { .type = "ebc", }, {}, }; From 6f67f9d26fe5ced50f716e9620b42c0721d8b8d9 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Fri, 15 Dec 2006 07:13:26 +1100 Subject: [PATCH 07/18] [POWERPC] Workaround oldworld OF bug with IRQs & P2P bridges On some oldworld PowerMacs, OF doesn't assign interrupts properly beyond P2P bridges. Fortunately, the fix is easy as all those machines just wire all IRQ lines together to one IRQ which is assigned to the bridge itself. We already have a special function for parsing Apple OldWorld interrupts which are special, so let's add to it the ability to walk up the PCI tree to find interrupts. This fixes irqs on the lower slots of s900 clones among others. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras --- arch/powerpc/kernel/prom_parse.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kernel/prom_parse.c b/arch/powerpc/kernel/prom_parse.c index 0dfbe1cd28eb..12c51e4ad2b4 100644 --- a/arch/powerpc/kernel/prom_parse.c +++ b/arch/powerpc/kernel/prom_parse.c @@ -920,9 +920,20 @@ static int of_irq_map_oldworld(struct device_node *device, int index, /* * Old machines just have a list of interrupt numbers - * and no interrupt-controller nodes. + * and no interrupt-controller nodes. We also have dodgy + * cases where the APPL,interrupts property is completely + * missing behind pci-pci bridges and we have to get it + * from the parent (the bridge itself, as apple just wired + * everything together on these) */ - ints = get_property(device, "AAPL,interrupts", &intlen); + while (device) { + ints = get_property(device, "AAPL,interrupts", &intlen); + if (ints != NULL) + break; + device = device->parent; + if (device && strcmp(device->type, "pci") != 0) + break; + } if (ints == NULL) return -EINVAL; intlen /= sizeof(u32); From fb8b50078458ba74c3d3f7bf05f5ddc27b88f051 Mon Sep 17 00:00:00 2001 From: Stephen Rothwell Date: Fri, 15 Dec 2006 15:40:08 +1100 Subject: [PATCH 08/18] [POWERPC] iSeries: fix viodasd init Don't initialise viodasd except on legacy iSeries. Signed-off-by: Stephen Rothwell Signed-off-by: Paul Mackerras --- drivers/block/viodasd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/block/viodasd.c b/drivers/block/viodasd.c index e19ba4ebcd4e..68592c336011 100644 --- a/drivers/block/viodasd.c +++ b/drivers/block/viodasd.c @@ -49,6 +49,7 @@ #include #include #include +#include MODULE_DESCRIPTION("iSeries Virtual DASD"); MODULE_AUTHOR("Dave Boutcher"); @@ -769,6 +770,11 @@ static int __init viodasd_init(void) { int rc; + if (!firmware_has_feature(FW_FEATURE_ISERIES)) { + rc = -ENODEV; + goto early_fail; + } + /* Try to open to our host lp */ if (viopath_hostLp == HvLpIndexInvalid) vio_set_hostlp(); From fd38451f1512fd5230e3c5dcc66d1ca867af879b Mon Sep 17 00:00:00 2001 From: Stephen Rothwell Date: Fri, 15 Dec 2006 15:41:43 +1100 Subject: [PATCH 09/18] [POWERPC] iSeries: fix viotape init Only initialise viotape on legacy iSeries. Signed-off-by: Stephen Rothwell Signed-off-by: Paul Mackerras --- drivers/char/viotape.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/char/viotape.c b/drivers/char/viotape.c index 94d79cb8ce8d..9438512b17f1 100644 --- a/drivers/char/viotape.c +++ b/drivers/char/viotape.c @@ -49,7 +49,7 @@ #include #include - +#include #include #include #include @@ -997,6 +997,9 @@ int __init viotap_init(void) int ret; struct proc_dir_entry *e; + if (!firmware_has_feature(FW_FEATURE_ISERIES)) + return -ENODEV; + op_struct_list = NULL; if ((ret = add_op_structs(VIOTAPE_MAXREQ)) < 0) { printk(VIOTAPE_KERN_WARN "couldn't allocate op structs\n"); From 687d18abed09315a531470a0edcae977ef6a7f9e Mon Sep 17 00:00:00 2001 From: Stephen Rothwell Date: Fri, 15 Dec 2006 15:42:50 +1100 Subject: [PATCH 10/18] [POWERPC] iSeries: fix iseries_veth init Only initialise iseries_veth on legacy iSeries. Make the init and exit routines static. Signed-off-by: Stephen Rothwell Signed-off-by: Paul Mackerras --- drivers/net/iseries_veth.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c index d6f4f185bf37..2194b567239f 100644 --- a/drivers/net/iseries_veth.c +++ b/drivers/net/iseries_veth.c @@ -73,7 +73,7 @@ #include #include #include - +#include #include #include #include @@ -1668,7 +1668,7 @@ static struct vio_driver veth_driver = { * Module initialization/cleanup */ -void __exit veth_module_cleanup(void) +static void __exit veth_module_cleanup(void) { int i; struct veth_lpar_connection *cnx; @@ -1697,11 +1697,14 @@ void __exit veth_module_cleanup(void) } module_exit(veth_module_cleanup); -int __init veth_module_init(void) +static int __init veth_module_init(void) { int i; int rc; + if (!firmware_has_feature(FW_FEATURE_ISERIES)) + return -ENODEV; + this_lp = HvLpConfig_getLpIndex_outline(); for (i = 0; i < HVMAXARCHITECTEDLPS; ++i) { From 31c72ad0d10b561e7e5f843747e7d0c1abf4d6f7 Mon Sep 17 00:00:00 2001 From: Stephen Rothwell Date: Fri, 15 Dec 2006 15:44:04 +1100 Subject: [PATCH 11/18] [POWERPC] iSeries: fix viocd init Only initialise viocd on legacy iSeries. Signed-off-by: Stephen Rothwell Signed-off-by: Paul Mackerras --- drivers/cdrom/viocd.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/cdrom/viocd.c b/drivers/cdrom/viocd.c index 54ca931e19ea..93fbf84dcc4a 100644 --- a/drivers/cdrom/viocd.c +++ b/drivers/cdrom/viocd.c @@ -47,6 +47,7 @@ #include #include #include +#include #define VIOCD_DEVICE "iseries/vcd" @@ -748,6 +749,9 @@ static int __init viocd_init(void) struct proc_dir_entry *e; int ret = 0; + if (!firmware_has_feature(FW_FEATURE_ISERIES)) + return -ENODEV; + if (viopath_hostLp == HvLpIndexInvalid) { vio_set_hostlp(); /* If we don't have a host, bail out */ From 94c8f9f974f2ad29b90b2830b189d74a633fef49 Mon Sep 17 00:00:00 2001 From: Stephen Rothwell Date: Fri, 15 Dec 2006 15:45:13 +1100 Subject: [PATCH 12/18] [POWERPC] iSeries: fix viocons init Only initialise viocons on legacy iSeries. Signed-off-by: Stephen Rothwell Signed-off-by: Paul Mackerras --- drivers/char/viocons.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/char/viocons.c b/drivers/char/viocons.c index 0e0da443cbd5..8de6b95aeb84 100644 --- a/drivers/char/viocons.c +++ b/drivers/char/viocons.c @@ -42,6 +42,7 @@ #include #include +#include #include #include #include @@ -1060,6 +1061,9 @@ static int __init viocons_init2(void) atomic_t wait_flag; int rc; + if (!firmware_has_feature(FW_FEATURE_ISERIES)) + return -ENODEV; + /* +2 for fudge */ rc = viopath_open(HvLpConfig_getPrimaryLpIndex(), viomajorsubtype_chario, VIOCHAR_WINDOW + 2); @@ -1145,6 +1149,9 @@ static int __init viocons_init(void) { int i; + if (!firmware_has_feature(FW_FEATURE_ISERIES)) + return -ENODEV; + printk(VIOCONS_KERN_INFO "registering console\n"); for (i = 0; i < VTTY_PORTS; i++) { port_info[i].lp = HvLpIndexInvalid; From ba3ba887c3549656c17675e73e12aaa97c3548f1 Mon Sep 17 00:00:00 2001 From: Stephen Rothwell Date: Fri, 15 Dec 2006 15:46:39 +1100 Subject: [PATCH 13/18] [POWERPC] iSeries: fix CONFIG_VIOPATH dependency This is a long standing typo. Signed-off-by: Stephen Rothwell Signed-off-by: Paul Mackerras --- arch/powerpc/platforms/iseries/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/platforms/iseries/Kconfig b/arch/powerpc/platforms/iseries/Kconfig index 887b68804e6d..54e6b3b6f261 100644 --- a/arch/powerpc/platforms/iseries/Kconfig +++ b/arch/powerpc/platforms/iseries/Kconfig @@ -31,5 +31,5 @@ endmenu config VIOPATH bool - depends on VIOCONS || VIODASD || VIOCD || VIOTAPE || VETH + depends on VIOCONS || VIODASD || VIOCD || VIOTAPE || ISERIES_VETH default y From d28d027ab386ab64c905bfaa0f1e73a06bb4d9b4 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Tue, 19 Dec 2006 16:42:58 +1100 Subject: [PATCH 14/18] [POWERPC] Fix build of cell zImage.initrd The patch adding support for zImage.ps3 didn't add a zImage.initrd.ps3 target causing builds of zImage.initrd to fail when ps3 is included in the .config. The current method of generating ps3 images doesn't support initrd's yet, so we create a dummy target that only displays a warning message instead. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Paul Mackerras --- arch/powerpc/boot/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 343dbcfdf08a..98392fb5f581 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile @@ -152,6 +152,9 @@ $(obj)/zImage.initrd.miboot: vmlinux $(wrapperbits) $(obj)/zImage.ps3: vmlinux $(STRIP) -s -R .comment $< -o $@ +$(obj)/zImage.initrd.ps3: vmlinux + @echo " WARNING zImage.initrd.ps3 not supported (yet)" + $(obj)/uImage: vmlinux $(wrapperbits) $(call cmd,wrap,uboot) From 3f245e2a1eaf603cf9cf4820eb5dd8c5637bc71a Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Tue, 19 Dec 2006 09:54:56 +0000 Subject: [PATCH 15/18] [POWERPC] Probe Efika platform before CHRP. The Efika matches chrp_probe() too, so put its own probe first to make sure we get it right in a multiplatform build. Signed-off-by: David Woodhouse Signed-off-by: Paul Mackerras --- arch/powerpc/platforms/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/platforms/Makefile b/arch/powerpc/platforms/Makefile index 44d95eaf22e6..507d1b98f270 100644 --- a/arch/powerpc/platforms/Makefile +++ b/arch/powerpc/platforms/Makefile @@ -5,9 +5,9 @@ ifeq ($(CONFIG_PPC64),y) obj-$(CONFIG_PPC_PMAC) += powermac/ endif endif +obj-$(CONFIG_PPC_MPC52xx) += 52xx/ obj-$(CONFIG_PPC_CHRP) += chrp/ obj-$(CONFIG_4xx) += 4xx/ -obj-$(CONFIG_PPC_MPC52xx) += 52xx/ obj-$(CONFIG_PPC_83xx) += 83xx/ obj-$(CONFIG_PPC_85xx) += 85xx/ obj-$(CONFIG_PPC_86xx) += 86xx/ From 173935f3619ae99fef0cea1dbe4de9c83d6c8e72 Mon Sep 17 00:00:00 2001 From: Vitaly Wool Date: Tue, 19 Dec 2006 18:44:25 +0300 Subject: [PATCH 16/18] [POWERPC] Update MTD OF documentation This updates the Documentation/powerpc part of the MTD OF implementation with the new field probe-type. Its support has already been implemented in MTD part (drivers/mtd/maps/physmap_of.c). Signed-off-by: Vitaly Wool Acked-by: Sergei Shtylyov Signed-off-by: Paul Mackerras --- Documentation/powerpc/booting-without-of.txt | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index b3bd36668db3..33994271cb3b 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/powerpc/booting-without-of.txt @@ -1703,29 +1703,32 @@ platforms are moved over to use the flattened-device-tree model. Required properties: - device_type : has to be "rom" - - compatible : Should specify what this ROM device is compatible with - (i.e. "onenand"). Currently, this is most likely to be "direct-mapped" - (which corresponds to the MTD physmap mapping driver). - - regs : Offset and length of the register set (or memory mapping) for + - compatible : Should specify what this flash device is compatible with. + Currently, this is most likely to be "direct-mapped" (which + corresponds to the MTD physmap mapping driver). + - reg : Offset and length of the register set (or memory mapping) for the device. + - bank-width : Width of the flash data bus in bytes. Required + for the NOR flashes (compatible == "direct-mapped" and others) ONLY. Recommended properties : - - bank-width : Width of the flash data bus in bytes. Required - for the NOR flashes (compatible == "direct-mapped" and others) ONLY. - partitions : Several pairs of 32-bit values where the first value is partition's offset from the start of the device and the second one is partition size in bytes with LSB used to signify a read only - partititon (so, the parition size should always be an even number). + partition (so, the parition size should always be an even number). - partition-names : The list of concatenated zero terminated strings representing the partition names. + - probe-type : The type of probe which should be done for the chip + (JEDEC vs CFI actually). Valid ONLY for NOR flashes. Example: flash@ff000000 { device_type = "rom"; compatible = "direct-mapped"; - regs = ; + probe-type = "CFI"; + reg = ; bank-width = <4>; partitions = <00000000 00f80000 00f80000 00080001>; From bb63ab13515951f4d09b16c9e8bd6e50b0f20d1e Mon Sep 17 00:00:00 2001 From: Linas Vepstas Date: Tue, 19 Dec 2006 14:00:34 -0600 Subject: [PATCH 17/18] [POWERPC] Fix PCI device channel state initialization Initialize the pci device pci channel state. This is critical for having the pci_channel_offline() routine (in pci.h) to function correctly. Signed-off-by: Linas Vepstas Signed-off-by: Paul Mackerras --- arch/powerpc/kernel/pci_64.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index a6b7692c7269..73c59ec49120 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c @@ -360,6 +360,7 @@ struct pci_dev *of_create_pci_dev(struct device_node *node, DBG(" class: 0x%x\n", dev->class); dev->current_state = 4; /* unknown power state */ + dev->error_state = pci_channel_io_normal; if (!strcmp(type, "pci") || !strcmp(type, "pciex")) { /* a PCI-PCI bridge */ From 1c9bb1a01ac1bc92a0d98cf3e40a7922ee684dc0 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Wed, 20 Dec 2006 13:57:06 +1100 Subject: [PATCH 18/18] [POWERPC] Fix register save area alignment for swapcontext syscall For 32-bit processes, the getcontext side of the swapcontext system call (i.e. the saving of the context when the first argument is non-NULL) has to set the ctx->uc_mcontext.uc_regs pointer to the place where it saves the registers. Which it does, but it doesn't ensure that the pointer is 16-byte aligned. 16-byte alignment is needed because the Altivec/VMX registers are saved in there, and they need to be on a 16-byte boundary. This fixes it by ensuring the appropriate alignment of the pointer. This issue was pointed out by Jakub Jelinek. Signed-off-by: Paul Mackerras --- arch/powerpc/kernel/signal_32.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index e4ebe1a6228e..6b405a3f43f9 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c @@ -835,11 +835,21 @@ long sys_swapcontext(struct ucontext __user *old_ctx, return -EINVAL; if (old_ctx != NULL) { + struct mcontext __user *mctx; + + /* + * old_ctx might not be 16-byte aligned, in which + * case old_ctx->uc_mcontext won't be either. + * Because we have the old_ctx->uc_pad2 field + * before old_ctx->uc_mcontext, we need to round down + * from &old_ctx->uc_mcontext to a 16-byte boundary. + */ + mctx = (struct mcontext __user *) + ((unsigned long) &old_ctx->uc_mcontext & ~0xfUL); if (!access_ok(VERIFY_WRITE, old_ctx, sizeof(*old_ctx)) - || save_user_regs(regs, &old_ctx->uc_mcontext, 0) + || save_user_regs(regs, mctx, 0) || put_sigset_t(&old_ctx->uc_sigmask, ¤t->blocked) - || __put_user(to_user_ptr(&old_ctx->uc_mcontext), - &old_ctx->uc_regs)) + || __put_user(to_user_ptr(mctx), &old_ctx->uc_regs)) return -EFAULT; } if (new_ctx == NULL)