Merge branch 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc

* 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc:
  [POWERPC] Fix register save area alignment for swapcontext syscall
  [POWERPC] Fix PCI device channel state initialization
  [POWERPC] Update MTD OF documentation
  [POWERPC] Probe Efika platform before CHRP.
  [POWERPC] Fix build of cell zImage.initrd
  [POWERPC] iSeries: fix CONFIG_VIOPATH dependency
  [POWERPC] iSeries: fix viocons init
  [POWERPC] iSeries: fix viocd init
  [POWERPC] iSeries: fix iseries_veth init
  [POWERPC] iSeries: fix viotape init
  [POWERPC] iSeries: fix viodasd init
  [POWERPC] Workaround oldworld OF bug with IRQs & P2P bridges
  [POWERPC] powerpc: add scanning of ebc bus to of_platform
  [POWERPC] spufs: fix assignment of node numbers
  [POWERPC] cell: Fix spufs with "new style" device-tree
  [POWERPC] cell: Enable spider workarounds on all PCI buses
  [POWERPC] cell: add forward struct declarations to spu.h
  [POWERPC] cell: update cell_defconfig
This commit is contained in:
Linus Torvalds 2006-12-20 23:59:36 -08:00
commit 5576d187a0
17 changed files with 441 additions and 106 deletions

View file

@ -1703,29 +1703,32 @@ platforms are moved over to use the flattened-device-tree model.
Required properties: Required properties:
- device_type : has to be "rom" - device_type : has to be "rom"
- compatible : Should specify what this ROM device is compatible with - compatible : Should specify what this flash device is compatible with.
(i.e. "onenand"). Currently, this is most likely to be "direct-mapped" Currently, this is most likely to be "direct-mapped" (which
(which corresponds to the MTD physmap mapping driver). corresponds to the MTD physmap mapping driver).
- regs : Offset and length of the register set (or memory mapping) for - reg : Offset and length of the register set (or memory mapping) for
the device. 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 : 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 - 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'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 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 - partition-names : The list of concatenated zero terminated strings
representing the partition names. 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: Example:
flash@ff000000 { flash@ff000000 {
device_type = "rom"; device_type = "rom";
compatible = "direct-mapped"; compatible = "direct-mapped";
regs = <ff000000 01000000>; probe-type = "CFI";
reg = <ff000000 01000000>;
bank-width = <4>; bank-width = <4>;
partitions = <00000000 00f80000 partitions = <00000000 00f80000
00f80000 00080001>; 00f80000 00080001>;

View file

@ -152,6 +152,9 @@ $(obj)/zImage.initrd.miboot: vmlinux $(wrapperbits)
$(obj)/zImage.ps3: vmlinux $(obj)/zImage.ps3: vmlinux
$(STRIP) -s -R .comment $< -o $@ $(STRIP) -s -R .comment $< -o $@
$(obj)/zImage.initrd.ps3: vmlinux
@echo " WARNING zImage.initrd.ps3 not supported (yet)"
$(obj)/uImage: vmlinux $(wrapperbits) $(obj)/uImage: vmlinux $(wrapperbits)
$(call cmd,wrap,uboot) $(call cmd,wrap,uboot)

View file

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.19-rc6 # Linux kernel version: 2.6.20-rc1
# Wed Nov 22 15:33:04 2006 # Tue Dec 19 14:59:53 2006
# #
CONFIG_PPC64=y CONFIG_PPC64=y
CONFIG_64BIT=y CONFIG_64BIT=y
@ -10,6 +10,8 @@ CONFIG_MMU=y
CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HARDIRQS=y
CONFIG_IRQ_PER_CPU=y CONFIG_IRQ_PER_CPU=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_ARCH_HAS_ILOG2_U32=y
CONFIG_ARCH_HAS_ILOG2_U64=y
CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y
@ -23,6 +25,7 @@ CONFIG_PPC_OF=y
CONFIG_PPC_UDBG_16550=y CONFIG_PPC_UDBG_16550=y
# CONFIG_GENERIC_TBSYNC is not set # CONFIG_GENERIC_TBSYNC is not set
CONFIG_AUDIT_ARCH=y CONFIG_AUDIT_ARCH=y
CONFIG_GENERIC_BUG=y
# CONFIG_DEFAULT_UIMAGE is not set # CONFIG_DEFAULT_UIMAGE is not set
# #
@ -66,6 +69,7 @@ CONFIG_SYSVIPC=y
CONFIG_IKCONFIG=y CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y CONFIG_IKCONFIG_PROC=y
CONFIG_CPUSETS=y CONFIG_CPUSETS=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set # CONFIG_RELAY is not set
CONFIG_INITRAMFS_SOURCE="" CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@ -128,14 +132,16 @@ CONFIG_PPC_MULTIPLATFORM=y
# CONFIG_APUS is not set # CONFIG_APUS is not set
# CONFIG_PPC_PSERIES is not set # CONFIG_PPC_PSERIES is not set
# CONFIG_PPC_ISERIES is not set # CONFIG_PPC_ISERIES is not set
# CONFIG_PPC_MPC52xx is not set
# CONFIG_PPC_PMAC is not set # CONFIG_PPC_PMAC is not set
# CONFIG_PPC_MAPLE is not set # CONFIG_PPC_MAPLE is not set
# CONFIG_PPC_PASEMI is not set # CONFIG_PPC_PASEMI is not set
CONFIG_PPC_CELL=y CONFIG_PPC_CELL=y
CONFIG_PPC_CELL_NATIVE=y CONFIG_PPC_CELL_NATIVE=y
CONFIG_PPC_IBM_CELL_BLADE=y CONFIG_PPC_IBM_CELL_BLADE=y
CONFIG_UDBG_RTAS_CONSOLE=y
CONFIG_PPC_PS3=y CONFIG_PPC_PS3=y
CONFIG_PPC_NATIVE=y
CONFIG_UDBG_RTAS_CONSOLE=y
# CONFIG_U3_DART is not set # CONFIG_U3_DART is not set
CONFIG_PPC_RTAS=y CONFIG_PPC_RTAS=y
# CONFIG_RTAS_ERROR_LOGGING is not set # CONFIG_RTAS_ERROR_LOGGING is not set
@ -177,12 +183,14 @@ CONFIG_CBE_CPUFREQ=m
CONFIG_PS3_HTAB_SIZE=20 CONFIG_PS3_HTAB_SIZE=20
# CONFIG_PS3_DYNAMIC_DMA is not set # CONFIG_PS3_DYNAMIC_DMA is not set
CONFIG_PS3_USE_LPAR_ADDR=y CONFIG_PS3_USE_LPAR_ADDR=y
CONFIG_PS3_VUART=y
# #
# Kernel options # Kernel options
# #
# CONFIG_HZ_100 is not set # CONFIG_HZ_100 is not set
CONFIG_HZ_250=y CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set # CONFIG_HZ_1000 is not set
CONFIG_HZ=250 CONFIG_HZ=250
CONFIG_PREEMPT_NONE=y CONFIG_PREEMPT_NONE=y
@ -237,6 +245,7 @@ CONFIG_GENERIC_ISA_DMA=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS=y
CONFIG_PCIEPORTBUS=y CONFIG_PCIEPORTBUS=y
# CONFIG_PCI_MULTITHREAD_PROBE is not set
# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_DEBUG is not set
# #
@ -270,7 +279,10 @@ CONFIG_INET=y
CONFIG_IP_MULTICAST=y CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set # CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y 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_IPIP=y
# CONFIG_NET_IPGRE is not set # CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE 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_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic" CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# #
# IP: Virtual Server Configuration # IP: Virtual Server Configuration
@ -317,31 +330,67 @@ CONFIG_NETFILTER=y
# #
# Core Netfilter Configuration # Core Netfilter Configuration
# #
# CONFIG_NETFILTER_NETLINK is not set CONFIG_NETFILTER_NETLINK=m
# CONFIG_NETFILTER_XTABLES is not set 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 # 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_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) # IPv6: Netfilter Configuration (EXPERIMENTAL)
# #
# CONFIG_IP6_NF_QUEUE is not set # CONFIG_IP6_NF_QUEUE is not set
# CONFIG_IP6_NF_IPTABLES is not set
# #
# DCCP Configuration (EXPERIMENTAL) # DCCP Configuration (EXPERIMENTAL)
@ -373,6 +422,7 @@ CONFIG_IP_NF_QUEUE=m
# QoS and/or fair queueing # QoS and/or fair queueing
# #
# CONFIG_NET_SCHED is not set # CONFIG_NET_SCHED is not set
CONFIG_NET_CLS_ROUTE=y
# #
# Network testing # Network testing
@ -428,6 +478,7 @@ CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set # CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set # CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 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=y
CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=131072 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_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set # CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_IDE_TASK_IOCTL 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_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=y CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set # CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_SL82C105 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set # CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y 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_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set # CONFIG_BLK_DEV_SVWKS is not set
CONFIG_BLK_DEV_SIIMAGE=y CONFIG_BLK_DEV_SIIMAGE=y
# CONFIG_BLK_DEV_SL82C105 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set # CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set # CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set # CONFIG_BLK_DEV_VIA82CXXX is not set
@ -505,8 +557,74 @@ CONFIG_IDEDMA_AUTO=y
# SCSI device support # SCSI device support
# #
# CONFIG_RAID_ATTRS is not set # 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_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 # Serial ATA (prod) and Parallel ATA (experimental) drivers
@ -538,6 +656,9 @@ CONFIG_DM_MULTIPATH=m
# Fusion MPT device support # Fusion MPT device support
# #
# CONFIG_FUSION is not set # 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 # IEEE 1394 (FireWire) support
@ -552,6 +673,7 @@ CONFIG_DM_MULTIPATH=m
# #
# Macintosh device drivers # Macintosh device drivers
# #
# CONFIG_MAC_EMUMOUSEBTN is not set
# CONFIG_WINDFARM is not set # CONFIG_WINDFARM is not set
# #
@ -559,7 +681,7 @@ CONFIG_DM_MULTIPATH=m
# #
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set # CONFIG_DUMMY is not set
CONFIG_BONDING=y CONFIG_BONDING=m
# CONFIG_EQUALIZER is not set # CONFIG_EQUALIZER is not set
CONFIG_TUN=y CONFIG_TUN=y
@ -604,11 +726,11 @@ CONFIG_E1000_NAPI=y
# CONFIG_R8169 is not set # CONFIG_R8169 is not set
# CONFIG_SIS190 is not set # CONFIG_SIS190 is not set
CONFIG_SKGE=m CONFIG_SKGE=m
# CONFIG_SKY2 is not set CONFIG_SKY2=m
# CONFIG_SK98LIN is not set # CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set CONFIG_TIGON3=y
# CONFIG_BNX2 is not set # CONFIG_BNX2 is not set
CONFIG_SPIDER_NET=m CONFIG_SPIDER_NET=y
# CONFIG_QLA3XXX is not set # CONFIG_QLA3XXX is not set
# #
@ -618,6 +740,7 @@ CONFIG_SPIDER_NET=m
# CONFIG_IXGB is not set # CONFIG_IXGB is not set
# CONFIG_S2IO is not set # CONFIG_S2IO is not set
# CONFIG_MYRI10GE is not set # CONFIG_MYRI10GE is not set
# CONFIG_NETXEN_NIC is not set
# #
# Token Ring devices # Token Ring devices
@ -637,6 +760,7 @@ CONFIG_SPIDER_NET=m
# CONFIG_HIPPI is not set # CONFIG_HIPPI is not set
# CONFIG_PPP is not set # CONFIG_PPP is not set
# CONFIG_SLIP is not set # CONFIG_SLIP is not set
# CONFIG_NET_FC is not set
# CONFIG_SHAPER is not set # CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set # CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set # CONFIG_NETPOLL is not set
@ -703,6 +827,7 @@ CONFIG_SERIAL_NONSTANDARD=y
# CONFIG_DIGIEPCA is not set # CONFIG_DIGIEPCA is not set
# CONFIG_MOXA_INTELLIO is not set # CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set # CONFIG_MOXA_SMARTIO is not set
# CONFIG_MOXA_SMARTIO_NEW is not set
# CONFIG_ISI is not set # CONFIG_ISI is not set
# CONFIG_SYNCLINK is not set # CONFIG_SYNCLINK is not set
# CONFIG_SYNCLINKMP 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=y
CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set # CONFIG_SERIAL_JSM is not set
CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set # CONFIG_LEGACY_PTYS is not set
CONFIG_HVC_DRIVER=y CONFIG_HVC_DRIVER=y
@ -756,16 +882,17 @@ CONFIG_WATCHDOG_RTAS=y
# #
# CONFIG_PCIPCWATCHDOG is not set # CONFIG_PCIPCWATCHDOG is not set
# CONFIG_WDTPCI is not set # CONFIG_WDTPCI is not set
#
# USB-based Watchdog Cards
#
# CONFIG_USBPCWATCHDOG is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_GEN_RTC=y CONFIG_GEN_RTC=y
# CONFIG_GEN_RTC_X is not set # CONFIG_GEN_RTC_X is not set
# CONFIG_DTLK is not set # CONFIG_DTLK is not set
# CONFIG_R3964 is not set # CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set # CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_AGP is not set # CONFIG_AGP is not set
# CONFIG_DRM is not set # CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set # CONFIG_RAW_DRIVER is not set
@ -855,12 +982,14 @@ CONFIG_I2C_ALGOBIT=y
# Digital Video Broadcasting Devices # Digital Video Broadcasting Devices
# #
# CONFIG_DVB is not set # CONFIG_DVB is not set
# CONFIG_USB_DABUSB is not set
# #
# Graphics support # Graphics support
# #
CONFIG_FIRMWARE_EDID=y CONFIG_FIRMWARE_EDID=y
# CONFIG_FB is not set # CONFIG_FB is not set
# CONFIG_FB_IBM_GXT4500 is not set
# #
# Console display driver support # Console display driver support
@ -874,18 +1003,145 @@ CONFIG_DUMMY_CONSOLE=y
# #
# CONFIG_SOUND is not set # CONFIG_SOUND is not set
#
# HID Devices
#
CONFIG_HID=m
# #
# USB support # USB support
# #
CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=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' # 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 # USB Gadget Support
# #
@ -912,7 +1168,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y
# #
# InfiniBand support # InfiniBand support
# #
CONFIG_INFINIBAND=y CONFIG_INFINIBAND=m
CONFIG_INFINIBAND_USER_MAD=m CONFIG_INFINIBAND_USER_MAD=m
CONFIG_INFINIBAND_USER_ACCESS=m CONFIG_INFINIBAND_USER_ACCESS=m
CONFIG_INFINIBAND_ADDR_TRANS=y CONFIG_INFINIBAND_ADDR_TRANS=y
@ -922,6 +1178,8 @@ CONFIG_INFINIBAND_MTHCA_DEBUG=y
CONFIG_INFINIBAND_IPOIB=m CONFIG_INFINIBAND_IPOIB=m
CONFIG_INFINIBAND_IPOIB_DEBUG=y CONFIG_INFINIBAND_IPOIB_DEBUG=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=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) # EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
@ -945,6 +1203,10 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
# DMA Devices # DMA Devices
# #
#
# Virtualization
#
# #
# File systems # File systems
# #
@ -1028,23 +1290,18 @@ CONFIG_RAMFS=y
# #
# Network File Systems # Network File Systems
# #
CONFIG_NFS_FS=m CONFIG_NFS_FS=y
CONFIG_NFS_V3=y CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y CONFIG_NFS_V3_ACL=y
# CONFIG_NFS_V4 is not set # CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set # CONFIG_NFS_DIRECTIO is not set
CONFIG_NFSD=m # CONFIG_NFSD is not set
CONFIG_NFSD_V2_ACL=y CONFIG_ROOT_NFS=y
CONFIG_NFSD_V3=y CONFIG_LOCKD=y
CONFIG_NFSD_V3_ACL=y
# CONFIG_NFSD_V4 is not set
CONFIG_NFSD_TCP=y
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_NFS_COMMON=y CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=m CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_KRB5 is not set # CONFIG_RPCSEC_GSS_KRB5 is not set
# CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS 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_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set # CONFIG_NLS_UTF8 is not set
#
# Distributed Lock Manager
#
# CONFIG_DLM is not set
# #
# Library routines # Library routines
# #
CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set # CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set # CONFIG_CRC16 is not set
CONFIG_CRC32=y CONFIG_CRC32=y
@ -1130,7 +1393,10 @@ CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m CONFIG_ZLIB_DEFLATE=m
CONFIG_TEXTSEARCH=y CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y CONFIG_PLIST=y
CONFIG_IOMAP_COPY=y
# #
# Instrumentation Support # Instrumentation Support
@ -1146,6 +1412,8 @@ CONFIG_OPROFILE=y
# CONFIG_ENABLE_MUST_CHECK is not set # CONFIG_ENABLE_MUST_CHECK is not set
CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set # CONFIG_UNUSED_SYMBOLS is not set
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=15 CONFIG_LOG_BUF_SHIFT=15
CONFIG_DETECT_SOFTLOCKUP=y CONFIG_DETECT_SOFTLOCKUP=y
@ -1159,12 +1427,11 @@ CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set # CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_INFO is not set
CONFIG_DEBUG_FS=y
# CONFIG_DEBUG_VM is not set # CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set # CONFIG_DEBUG_LIST is not set
# CONFIG_FORCED_INLINING is not set # CONFIG_FORCED_INLINING is not set
# CONFIG_HEADERS_CHECK is not set
# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_DEBUG_STACKOVERFLOW is not set # CONFIG_DEBUG_STACKOVERFLOW is not set
# CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_STACK_USAGE is not set
@ -1191,6 +1458,7 @@ CONFIG_CRYPTO_BLKCIPHER=m
CONFIG_CRYPTO_HASH=y CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_HMAC=y
# CONFIG_CRYPTO_XCBC is not set
# CONFIG_CRYPTO_NULL is not set # CONFIG_CRYPTO_NULL is not set
# CONFIG_CRYPTO_MD4 is not set # CONFIG_CRYPTO_MD4 is not set
CONFIG_CRYPTO_MD5=m CONFIG_CRYPTO_MD5=m
@ -1199,8 +1467,10 @@ CONFIG_CRYPTO_SHA1=m
# CONFIG_CRYPTO_SHA512 is not set # CONFIG_CRYPTO_SHA512 is not set
# CONFIG_CRYPTO_WP512 is not set # CONFIG_CRYPTO_WP512 is not set
# CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_TGR192 is not set
# CONFIG_CRYPTO_GF128MUL is not set
CONFIG_CRYPTO_ECB=m CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=m CONFIG_CRYPTO_CBC=m
# CONFIG_CRYPTO_LRW is not set
CONFIG_CRYPTO_DES=m CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_BLOWFISH is not set # CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set # CONFIG_CRYPTO_TWOFISH is not set

View file

@ -50,6 +50,7 @@ static struct of_device_id of_default_bus_ids[] = {
{ .type = "plb5", }, { .type = "plb5", },
{ .type = "plb4", }, { .type = "plb4", },
{ .type = "opb", }, { .type = "opb", },
{ .type = "ebc", },
{}, {},
}; };

View file

@ -360,6 +360,7 @@ struct pci_dev *of_create_pci_dev(struct device_node *node,
DBG(" class: 0x%x\n", dev->class); DBG(" class: 0x%x\n", dev->class);
dev->current_state = 4; /* unknown power state */ dev->current_state = 4; /* unknown power state */
dev->error_state = pci_channel_io_normal;
if (!strcmp(type, "pci") || !strcmp(type, "pciex")) { if (!strcmp(type, "pci") || !strcmp(type, "pciex")) {
/* a PCI-PCI bridge */ /* a PCI-PCI bridge */

View file

@ -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 * 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) if (ints == NULL)
return -EINVAL; return -EINVAL;
intlen /= sizeof(u32); intlen /= sizeof(u32);

View file

@ -835,11 +835,21 @@ long sys_swapcontext(struct ucontext __user *old_ctx,
return -EINVAL; return -EINVAL;
if (old_ctx != NULL) { 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)) 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, &current->blocked) || put_sigset_t(&old_ctx->uc_sigmask, &current->blocked)
|| __put_user(to_user_ptr(&old_ctx->uc_mcontext), || __put_user(to_user_ptr(mctx), &old_ctx->uc_regs))
&old_ctx->uc_regs))
return -EFAULT; return -EFAULT;
} }
if (new_ctx == NULL) if (new_ctx == NULL)

View file

@ -5,9 +5,9 @@ ifeq ($(CONFIG_PPC64),y)
obj-$(CONFIG_PPC_PMAC) += powermac/ obj-$(CONFIG_PPC_PMAC) += powermac/
endif endif
endif endif
obj-$(CONFIG_PPC_MPC52xx) += 52xx/
obj-$(CONFIG_PPC_CHRP) += chrp/ obj-$(CONFIG_PPC_CHRP) += chrp/
obj-$(CONFIG_4xx) += 4xx/ obj-$(CONFIG_4xx) += 4xx/
obj-$(CONFIG_PPC_MPC52xx) += 52xx/
obj-$(CONFIG_PPC_83xx) += 83xx/ obj-$(CONFIG_PPC_83xx) += 83xx/
obj-$(CONFIG_PPC_85xx) += 85xx/ obj-$(CONFIG_PPC_85xx) += 85xx/
obj-$(CONFIG_PPC_86xx) += 86xx/ obj-$(CONFIG_PPC_86xx) += 86xx/

View file

@ -37,7 +37,7 @@
*/ */
#define SPIDER_DISABLE_PREFETCH #define SPIDER_DISABLE_PREFETCH
#define MAX_SPIDERS 2 #define MAX_SPIDERS 3
static struct spider_pci_bus { static struct spider_pci_bus {
void __iomem *regs; void __iomem *regs;

View file

@ -37,8 +37,9 @@
#include "interrupt.h" #include "interrupt.h"
#include "spu_priv1_mmio.h" #include "spu_priv1_mmio.h"
static DEFINE_MUTEX(add_spumem_mutex);
struct spu_pdata { struct spu_pdata {
int nid;
struct device_node *devnode; struct device_node *devnode;
struct spu_priv1 __iomem *priv1; struct spu_priv1 __iomem *priv1;
}; };
@ -56,20 +57,9 @@ struct device_node *spu_devnode(struct spu *spu)
EXPORT_SYMBOL_GPL(spu_devnode); 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, static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe,
const char *prop) const char *prop)
{ {
static DEFINE_MUTEX(add_spumem_mutex);
const struct address_prop { const struct address_prop {
unsigned long address; unsigned long address;
unsigned int len; unsigned int len;
@ -87,7 +77,7 @@ static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe,
start_pfn = p->address >> PAGE_SHIFT; start_pfn = p->address >> PAGE_SHIFT;
nr_pages = ((unsigned long)p->len + PAGE_SIZE - 1) >> 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; zone = pgdata->node_zones;
/* XXX rethink locking here */ /* XXX rethink locking here */
@ -140,6 +130,7 @@ static int __init spu_map_interrupts_old(struct spu *spu,
{ {
unsigned int isrc; unsigned int isrc;
const u32 *tmp; const u32 *tmp;
int nid;
/* Get the interrupt source unit from the device-tree */ /* Get the interrupt source unit from the device-tree */
tmp = get_property(np, "isrc", NULL); tmp = get_property(np, "isrc", NULL);
@ -147,8 +138,15 @@ static int __init spu_map_interrupts_old(struct spu *spu,
return -ENODEV; return -ENODEV;
isrc = tmp[0]; 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 */ /* Add the node number */
isrc |= spu->node << IIC_IRQ_NODE_SHIFT; isrc |= nid << IIC_IRQ_NODE_SHIFT;
/* Now map interrupts of all 3 classes */ /* Now map interrupts of all 3 classes */
spu->irqs[0] = irq_create_mapping(NULL, IIC_IRQ_CLASS_0 | isrc); spu->irqs[0] = irq_create_mapping(NULL, IIC_IRQ_CLASS_0 | isrc);
@ -237,70 +235,88 @@ static int __init spu_map_interrupts(struct spu *spu, struct device_node *np)
return ret; return ret;
} }
static int spu_map_resource(struct device_node *node, int nr, static int spu_map_resource(struct spu *spu, int nr,
void __iomem** virt, unsigned long *phys) 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 = { }; struct resource resource = { };
unsigned long len;
int ret; int ret;
ret = of_address_to_resource(node, nr, &resource); ret = of_address_to_resource(np, nr, &resource);
if (ret) if (ret)
goto out; goto out;
if (phys) if (phys)
*phys = resource.start; *phys = resource.start;
*virt = ioremap(resource.start, resource.end - resource.start); len = resource.end - resource.start + 1;
*virt = ioremap(resource.start, len);
if (!*virt) if (!*virt)
ret = -EINVAL; ret = -EINVAL;
start_pfn = resource.start >> PAGE_SHIFT;
nr_pages = (len + PAGE_SIZE - 1) >> PAGE_SHIFT;
pgdata = NODE_DATA(spu->node);
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: out:
return ret; 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; int ret = -ENODEV;
spu->name = get_property(node, "name", NULL);
spu->name = get_property(np, "name", NULL);
if (!spu->name) if (!spu->name)
goto out; goto out;
ret = spu_map_resource(node, 0, (void __iomem**)&spu->local_store, ret = spu_map_resource(spu, 0, (void __iomem**)&spu->local_store,
&spu->local_store_phys); &spu->local_store_phys);
if (ret) { if (ret) {
pr_debug("spu_new: failed to map %s resource 0\n", pr_debug("spu_new: failed to map %s resource 0\n",
node->full_name); np->full_name);
goto out; goto out;
} }
ret = spu_map_resource(node, 1, (void __iomem**)&spu->problem, ret = spu_map_resource(spu, 1, (void __iomem**)&spu->problem,
&spu->problem_phys); &spu->problem_phys);
if (ret) { if (ret) {
pr_debug("spu_new: failed to map %s resource 1\n", pr_debug("spu_new: failed to map %s resource 1\n",
node->full_name); np->full_name);
goto out_unmap; goto out_unmap;
} }
ret = spu_map_resource(node, 2, (void __iomem**)&spu->priv2, ret = spu_map_resource(spu, 2, (void __iomem**)&spu->priv2, NULL);
NULL);
if (ret) { if (ret) {
pr_debug("spu_new: failed to map %s resource 2\n", pr_debug("spu_new: failed to map %s resource 2\n",
node->full_name); np->full_name);
goto out_unmap; goto out_unmap;
} }
if (!firmware_has_feature(FW_FEATURE_LPAR)) if (!firmware_has_feature(FW_FEATURE_LPAR))
ret = spu_map_resource(node, 3, ret = spu_map_resource(spu, 3,
(void __iomem**)&spu_get_pdata(spu)->priv1, NULL); (void __iomem**)&spu_get_pdata(spu)->priv1, NULL);
if (ret) { if (ret) {
pr_debug("spu_new: failed to map %s resource 3\n", pr_debug("spu_new: failed to map %s resource 3\n",
node->full_name); np->full_name);
goto out_unmap; 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", pr_debug(" local store : 0x%016lx -> 0x%p\n",
spu->local_store_phys, spu->local_store); spu->local_store_phys, spu->local_store);
pr_debug(" problem state : 0x%016lx -> 0x%p\n", pr_debug(" problem state : 0x%016lx -> 0x%p\n",
spu->problem_phys, spu->problem); spu->problem_phys, spu->problem);
pr_debug(" priv2 : 0x%p\n", spu->priv2); pr_debug(" priv2 : 0x%p\n", spu->priv2);
pr_debug(" priv1 : 0x%p\n", pr_debug(" priv1 : 0x%p\n",
spu_get_pdata(spu)->priv1); spu_get_pdata(spu)->priv1);
return 0; return 0;
@ -340,8 +356,9 @@ static int __init of_create_spu(struct spu *spu, void *data)
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto out;
} }
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) { if (spu->node >= MAX_NUMNODES) {
printk(KERN_WARNING "SPE %s on node %d ignored," printk(KERN_WARNING "SPE %s on node %d ignored,"
" node number too big\n", spe->full_name, spu->node); " node number too big\n", spe->full_name, spu->node);
@ -350,11 +367,7 @@ static int __init of_create_spu(struct spu *spu, void *data)
goto out_free; goto out_free;
} }
spu_get_pdata(spu)->nid = of_node_to_nid(spe); ret = spu_map_device(spu);
if (spu_get_pdata(spu)->nid == -1)
spu_get_pdata(spu)->nid = 0;
ret = spu_map_device(spu, spe);
/* try old method */ /* try old method */
if (ret) if (ret)
ret = spu_map_device_old(spu, spe); ret = spu_map_device_old(spu, spe);
@ -367,8 +380,6 @@ static int __init of_create_spu(struct spu *spu, void *data)
if (ret) if (ret)
goto out_unmap; 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, 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->local_store, spu->problem, spu_get_pdata(spu)->priv1,
spu->priv2, spu->number); spu->priv2, spu->number);

View file

@ -31,5 +31,5 @@ endmenu
config VIOPATH config VIOPATH
bool bool
depends on VIOCONS || VIODASD || VIOCD || VIOTAPE || VETH depends on VIOCONS || VIODASD || VIOCD || VIOTAPE || ISERIES_VETH
default y default y

View file

@ -49,6 +49,7 @@
#include <asm/iseries/hv_lp_event.h> #include <asm/iseries/hv_lp_event.h>
#include <asm/iseries/hv_lp_config.h> #include <asm/iseries/hv_lp_config.h>
#include <asm/iseries/vio.h> #include <asm/iseries/vio.h>
#include <asm/firmware.h>
MODULE_DESCRIPTION("iSeries Virtual DASD"); MODULE_DESCRIPTION("iSeries Virtual DASD");
MODULE_AUTHOR("Dave Boutcher"); MODULE_AUTHOR("Dave Boutcher");
@ -769,6 +770,11 @@ static int __init viodasd_init(void)
{ {
int rc; int rc;
if (!firmware_has_feature(FW_FEATURE_ISERIES)) {
rc = -ENODEV;
goto early_fail;
}
/* Try to open to our host lp */ /* Try to open to our host lp */
if (viopath_hostLp == HvLpIndexInvalid) if (viopath_hostLp == HvLpIndexInvalid)
vio_set_hostlp(); vio_set_hostlp();

View file

@ -47,6 +47,7 @@
#include <asm/iseries/hv_types.h> #include <asm/iseries/hv_types.h>
#include <asm/iseries/hv_lp_event.h> #include <asm/iseries/hv_lp_event.h>
#include <asm/iseries/vio.h> #include <asm/iseries/vio.h>
#include <asm/firmware.h>
#define VIOCD_DEVICE "iseries/vcd" #define VIOCD_DEVICE "iseries/vcd"
@ -748,6 +749,9 @@ static int __init viocd_init(void)
struct proc_dir_entry *e; struct proc_dir_entry *e;
int ret = 0; int ret = 0;
if (!firmware_has_feature(FW_FEATURE_ISERIES))
return -ENODEV;
if (viopath_hostLp == HvLpIndexInvalid) { if (viopath_hostLp == HvLpIndexInvalid) {
vio_set_hostlp(); vio_set_hostlp();
/* If we don't have a host, bail out */ /* If we don't have a host, bail out */

View file

@ -42,6 +42,7 @@
#include <linux/tty_flip.h> #include <linux/tty_flip.h>
#include <linux/sysrq.h> #include <linux/sysrq.h>
#include <asm/firmware.h>
#include <asm/iseries/vio.h> #include <asm/iseries/vio.h>
#include <asm/iseries/hv_lp_event.h> #include <asm/iseries/hv_lp_event.h>
#include <asm/iseries/hv_call_event.h> #include <asm/iseries/hv_call_event.h>
@ -1060,6 +1061,9 @@ static int __init viocons_init2(void)
atomic_t wait_flag; atomic_t wait_flag;
int rc; int rc;
if (!firmware_has_feature(FW_FEATURE_ISERIES))
return -ENODEV;
/* +2 for fudge */ /* +2 for fudge */
rc = viopath_open(HvLpConfig_getPrimaryLpIndex(), rc = viopath_open(HvLpConfig_getPrimaryLpIndex(),
viomajorsubtype_chario, VIOCHAR_WINDOW + 2); viomajorsubtype_chario, VIOCHAR_WINDOW + 2);
@ -1145,6 +1149,9 @@ static int __init viocons_init(void)
{ {
int i; int i;
if (!firmware_has_feature(FW_FEATURE_ISERIES))
return -ENODEV;
printk(VIOCONS_KERN_INFO "registering console\n"); printk(VIOCONS_KERN_INFO "registering console\n");
for (i = 0; i < VTTY_PORTS; i++) { for (i = 0; i < VTTY_PORTS; i++) {
port_info[i].lp = HvLpIndexInvalid; port_info[i].lp = HvLpIndexInvalid;

View file

@ -49,7 +49,7 @@
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/ioctls.h> #include <asm/ioctls.h>
#include <asm/firmware.h>
#include <asm/vio.h> #include <asm/vio.h>
#include <asm/iseries/vio.h> #include <asm/iseries/vio.h>
#include <asm/iseries/hv_lp_event.h> #include <asm/iseries/hv_lp_event.h>
@ -997,6 +997,9 @@ int __init viotap_init(void)
int ret; int ret;
struct proc_dir_entry *e; struct proc_dir_entry *e;
if (!firmware_has_feature(FW_FEATURE_ISERIES))
return -ENODEV;
op_struct_list = NULL; op_struct_list = NULL;
if ((ret = add_op_structs(VIOTAPE_MAXREQ)) < 0) { if ((ret = add_op_structs(VIOTAPE_MAXREQ)) < 0) {
printk(VIOTAPE_KERN_WARN "couldn't allocate op structs\n"); printk(VIOTAPE_KERN_WARN "couldn't allocate op structs\n");

View file

@ -73,7 +73,7 @@
#include <asm/abs_addr.h> #include <asm/abs_addr.h>
#include <asm/iseries/mf.h> #include <asm/iseries/mf.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/firmware.h>
#include <asm/iseries/hv_lp_config.h> #include <asm/iseries/hv_lp_config.h>
#include <asm/iseries/hv_types.h> #include <asm/iseries/hv_types.h>
#include <asm/iseries/hv_lp_event.h> #include <asm/iseries/hv_lp_event.h>
@ -1668,7 +1668,7 @@ static struct vio_driver veth_driver = {
* Module initialization/cleanup * Module initialization/cleanup
*/ */
void __exit veth_module_cleanup(void) static void __exit veth_module_cleanup(void)
{ {
int i; int i;
struct veth_lpar_connection *cnx; struct veth_lpar_connection *cnx;
@ -1697,11 +1697,14 @@ void __exit veth_module_cleanup(void)
} }
module_exit(veth_module_cleanup); module_exit(veth_module_cleanup);
int __init veth_module_init(void) static int __init veth_module_init(void)
{ {
int i; int i;
int rc; int rc;
if (!firmware_has_feature(FW_FEATURE_ISERIES))
return -ENODEV;
this_lp = HvLpConfig_getLpIndex_outline(); this_lp = HvLpConfig_getLpIndex_outline();
for (i = 0; i < HVMAXARCHITECTEDLPS; ++i) { for (i = 0; i < HVMAXARCHITECTEDLPS; ++i) {

View file

@ -161,6 +161,7 @@ struct spu_syscall_block {
extern long spu_sys_callback(struct spu_syscall_block *s); extern long spu_sys_callback(struct spu_syscall_block *s);
/* syscalls implemented in spufs */ /* syscalls implemented in spufs */
struct file;
extern struct spufs_calls { extern struct spufs_calls {
asmlinkage long (*create_thread)(const char __user *name, asmlinkage long (*create_thread)(const char __user *name,
unsigned int flags, mode_t mode); 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 * to object-id spufs file from user space and the notifer
* function can assume that spu->ctx is valid. * function can assume that spu->ctx is valid.
*/ */
struct notifier_block;
int spu_switch_event_register(struct notifier_block * n); int spu_switch_event_register(struct notifier_block * n);
int spu_switch_event_unregister(struct notifier_block * n); int spu_switch_event_unregister(struct notifier_block * n);