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] sys_move_pages should be callable from an SPU [POWERPC] Wire up sys_epoll_pwait [POWERPC] Allocate syscall number for sys_getcpu [POWERPC] update cell_defconfig [POWERPC] ps3: always make sure were running on a PS3 [POWERPC] Fix spu SLB invalidations [POWERPC] avoid SPU_ACTIVATE_NOWAKE optimization [POWERPC] spufs: fix possible memory corruption is spufs_mem_write
This commit is contained in:
commit
8b9909ded6
18 changed files with 263 additions and 134 deletions
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.20-rc5
|
||||
# Mon Jan 22 22:12:56 2007
|
||||
# Linux kernel version: 2.6.21-rc3
|
||||
# Fri Mar 9 23:34:53 2007
|
||||
#
|
||||
CONFIG_PPC64=y
|
||||
CONFIG_64BIT=y
|
||||
|
@ -61,6 +61,7 @@ CONFIG_LOCALVERSION_AUTO=y
|
|||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_IPC_NS is not set
|
||||
CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
|
@ -71,6 +72,7 @@ CONFIG_IKCONFIG_PROC=y
|
|||
CONFIG_CPUSETS=y
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
|
@ -133,6 +135,7 @@ CONFIG_PPC_MULTIPLATFORM=y
|
|||
# CONFIG_PPC_PSERIES is not set
|
||||
# CONFIG_PPC_ISERIES is not set
|
||||
# CONFIG_PPC_MPC52xx is not set
|
||||
# CONFIG_PPC_MPC5200 is not set
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
# CONFIG_PPC_MAPLE is not set
|
||||
# CONFIG_PPC_PASEMI is not set
|
||||
|
@ -140,8 +143,10 @@ CONFIG_PPC_CELL=y
|
|||
CONFIG_PPC_CELL_NATIVE=y
|
||||
CONFIG_PPC_IBM_CELL_BLADE=y
|
||||
CONFIG_PPC_PS3=y
|
||||
CONFIG_PPC_CELLEB=y
|
||||
CONFIG_PPC_NATIVE=y
|
||||
CONFIG_UDBG_RTAS_CONSOLE=y
|
||||
CONFIG_PPC_UDBG_BEAT=y
|
||||
# CONFIG_U3_DART is not set
|
||||
CONFIG_PPC_RTAS=y
|
||||
# CONFIG_RTAS_ERROR_LOGGING is not set
|
||||
|
@ -181,10 +186,13 @@ CONFIG_CBE_CPUFREQ=m
|
|||
#
|
||||
# PS3 Platform Options
|
||||
#
|
||||
# CONFIG_PS3_ADVANCED is not set
|
||||
CONFIG_PS3_HTAB_SIZE=20
|
||||
# CONFIG_PS3_DYNAMIC_DMA is not set
|
||||
CONFIG_PS3_USE_LPAR_ADDR=y
|
||||
CONFIG_PS3_VUART=y
|
||||
CONFIG_PS3_PS3AV=y
|
||||
CONFIG_PS3_SYS_MANAGER=y
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
|
@ -226,6 +234,7 @@ CONFIG_MEMORY_HOTPLUG_SPARSE=y
|
|||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_MIGRATION=y
|
||||
CONFIG_RESOURCES_64BIT=y
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_ARCH_MEMORY_PROBE=y
|
||||
CONFIG_NODES_SPAN_OTHER_NODES=y
|
||||
CONFIG_PPC_64K_PAGES=y
|
||||
|
@ -239,6 +248,7 @@ CONFIG_ISA_DMA_API=y
|
|||
#
|
||||
# Bus options
|
||||
#
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
# CONFIG_MPIC_WEIRD is not set
|
||||
# CONFIG_PPC_I8259 is not set
|
||||
|
@ -274,6 +284,7 @@ CONFIG_UNIX=y
|
|||
CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
|
@ -340,6 +351,7 @@ 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_TARGET_TCPMSS=m
|
||||
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
|
||||
CONFIG_NETFILTER_XT_MATCH_DCCP=m
|
||||
CONFIG_NETFILTER_XT_MATCH_DSCP=m
|
||||
|
@ -376,7 +388,6 @@ 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
|
||||
|
@ -444,6 +455,7 @@ CONFIG_STANDALONE=y
|
|||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
# CONFIG_DEBUG_DEVRES is not set
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
|
||||
#
|
||||
|
@ -464,6 +476,7 @@ CONFIG_FW_LOADER=y
|
|||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
# CONFIG_PNPACPI is not set
|
||||
|
||||
#
|
||||
# Block devices
|
||||
|
@ -483,7 +496,6 @@ CONFIG_BLK_DEV_RAM=y
|
|||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
|
@ -537,6 +549,7 @@ CONFIG_BLK_DEV_AEC62XX=y
|
|||
# CONFIG_BLK_DEV_JMICRON is not set
|
||||
# CONFIG_BLK_DEV_SC1200 is not set
|
||||
# CONFIG_BLK_DEV_PIIX is not set
|
||||
# CONFIG_BLK_DEV_IT8213 is not set
|
||||
# CONFIG_BLK_DEV_IT821X is not set
|
||||
# CONFIG_BLK_DEV_NS87415 is not set
|
||||
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
|
||||
|
@ -547,6 +560,8 @@ CONFIG_BLK_DEV_SIIMAGE=y
|
|||
# CONFIG_BLK_DEV_SLC90E66 is not set
|
||||
# CONFIG_BLK_DEV_TRM290 is not set
|
||||
# CONFIG_BLK_DEV_VIA82CXXX is not set
|
||||
# CONFIG_BLK_DEV_TC86C001 is not set
|
||||
CONFIG_BLK_DEV_IDE_CELLEB=y
|
||||
# CONFIG_IDE_ARM is not set
|
||||
CONFIG_BLK_DEV_IDEDMA=y
|
||||
# CONFIG_IDEDMA_IVB is not set
|
||||
|
@ -557,7 +572,7 @@ CONFIG_IDEDMA_AUTO=y
|
|||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=m
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SCSI_TGT is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
@ -565,12 +580,12 @@ CONFIG_SCSI_PROC_FS=y
|
|||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# 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_SG=y
|
||||
# CONFIG_CHR_DEV_SCH is not set
|
||||
|
||||
#
|
||||
|
@ -587,7 +602,7 @@ CONFIG_CHR_DEV_SG=m
|
|||
# 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_ATTRS=y
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
|
||||
#
|
||||
|
@ -617,6 +632,7 @@ CONFIG_CHR_DEV_SG=m
|
|||
# CONFIG_SCSI_INIA100 is not set
|
||||
# CONFIG_SCSI_STEX is not set
|
||||
# CONFIG_SCSI_SYM53C8XX_2 is not set
|
||||
# CONFIG_SCSI_IPR is not set
|
||||
# CONFIG_SCSI_QLOGIC_1280 is not set
|
||||
# CONFIG_SCSI_QLA_FC is not set
|
||||
# CONFIG_SCSI_QLA_ISCSI is not set
|
||||
|
@ -629,7 +645,60 @@ CONFIG_CHR_DEV_SG=m
|
|||
#
|
||||
# Serial ATA (prod) and Parallel ATA (experimental) drivers
|
||||
#
|
||||
# CONFIG_ATA is not set
|
||||
CONFIG_ATA=y
|
||||
# CONFIG_ATA_NONSTANDARD is not set
|
||||
# CONFIG_SATA_AHCI is not set
|
||||
# CONFIG_SATA_SVW is not set
|
||||
# CONFIG_ATA_PIIX is not set
|
||||
# CONFIG_SATA_MV is not set
|
||||
# CONFIG_SATA_NV is not set
|
||||
# CONFIG_PDC_ADMA is not set
|
||||
# CONFIG_SATA_QSTOR is not set
|
||||
CONFIG_SATA_PROMISE=y
|
||||
# CONFIG_SATA_SX4 is not set
|
||||
# CONFIG_SATA_SIL is not set
|
||||
# CONFIG_SATA_SIL24 is not set
|
||||
# CONFIG_SATA_SIS is not set
|
||||
# CONFIG_SATA_ULI is not set
|
||||
# CONFIG_SATA_VIA is not set
|
||||
# CONFIG_SATA_VITESSE is not set
|
||||
# CONFIG_SATA_INIC162X is not set
|
||||
# CONFIG_PATA_ALI is not set
|
||||
# CONFIG_PATA_AMD is not set
|
||||
# CONFIG_PATA_ARTOP is not set
|
||||
# CONFIG_PATA_ATIIXP is not set
|
||||
# CONFIG_PATA_CMD64X is not set
|
||||
# CONFIG_PATA_CS5520 is not set
|
||||
# CONFIG_PATA_CS5530 is not set
|
||||
# CONFIG_PATA_CYPRESS is not set
|
||||
# CONFIG_PATA_EFAR is not set
|
||||
# CONFIG_ATA_GENERIC is not set
|
||||
# CONFIG_PATA_HPT366 is not set
|
||||
# CONFIG_PATA_HPT37X is not set
|
||||
# CONFIG_PATA_HPT3X2N is not set
|
||||
# CONFIG_PATA_HPT3X3 is not set
|
||||
# CONFIG_PATA_IT821X is not set
|
||||
# CONFIG_PATA_IT8213 is not set
|
||||
# CONFIG_PATA_JMICRON is not set
|
||||
# CONFIG_PATA_TRIFLEX is not set
|
||||
# CONFIG_PATA_MARVELL is not set
|
||||
# CONFIG_PATA_MPIIX is not set
|
||||
# CONFIG_PATA_OLDPIIX is not set
|
||||
# CONFIG_PATA_NETCELL is not set
|
||||
# CONFIG_PATA_NS87410 is not set
|
||||
# CONFIG_PATA_OPTI is not set
|
||||
# CONFIG_PATA_OPTIDMA is not set
|
||||
# CONFIG_PATA_PDC_OLD is not set
|
||||
# CONFIG_PATA_RADISYS is not set
|
||||
# CONFIG_PATA_RZ1000 is not set
|
||||
# CONFIG_PATA_SC1200 is not set
|
||||
# CONFIG_PATA_SERVERWORKS is not set
|
||||
CONFIG_PATA_PDC2027X=m
|
||||
# CONFIG_PATA_SIL680 is not set
|
||||
# CONFIG_PATA_SIS is not set
|
||||
# CONFIG_PATA_VIA is not set
|
||||
# CONFIG_PATA_WINBOND is not set
|
||||
# CONFIG_PATA_SCC is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
|
@ -655,10 +724,12 @@ CONFIG_DM_MULTIPATH=m
|
|||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
# CONFIG_FUSION is not set
|
||||
CONFIG_FUSION=y
|
||||
# CONFIG_FUSION_SPI is not set
|
||||
# CONFIG_FUSION_FC is not set
|
||||
# CONFIG_FUSION_SAS is not set
|
||||
CONFIG_FUSION_SAS=y
|
||||
CONFIG_FUSION_MAX_SGE=128
|
||||
# CONFIG_FUSION_CTL is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
|
@ -732,15 +803,18 @@ CONFIG_TIGON3=y
|
|||
# CONFIG_BNX2 is not set
|
||||
CONFIG_SPIDER_NET=y
|
||||
# CONFIG_QLA3XXX is not set
|
||||
# CONFIG_ATL1 is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
# CONFIG_CHELSIO_T3 is not set
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
# CONFIG_MYRI10GE is not set
|
||||
# CONFIG_NETXEN_NIC is not set
|
||||
# CONFIG_PASEMI_MAC is not set
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
|
@ -853,16 +927,27 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
|||
#
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_SERIAL_TXX9=y
|
||||
CONFIG_HAS_TXX9_SERIAL=y
|
||||
CONFIG_SERIAL_TXX9_NR_UARTS=2
|
||||
CONFIG_SERIAL_TXX9_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
|
||||
CONFIG_HVC_RTAS=y
|
||||
# CONFIG_HVC_BEAT is not set
|
||||
|
||||
#
|
||||
# IPMI
|
||||
#
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
CONFIG_IPMI_HANDLER=m
|
||||
# CONFIG_IPMI_PANIC_EVENT is not set
|
||||
CONFIG_IPMI_DEVICE_INTERFACE=m
|
||||
CONFIG_IPMI_SI=m
|
||||
CONFIG_IPMI_WATCHDOG=m
|
||||
CONFIG_IPMI_POWEROFF=m
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
|
@ -874,7 +959,7 @@ CONFIG_WATCHDOG=y
|
|||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_WATCHDOG_RTAS=y
|
||||
# CONFIG_WATCHDOG_RTAS is not set
|
||||
|
||||
#
|
||||
# PCI-based Watchdog Cards
|
||||
|
@ -929,6 +1014,7 @@ CONFIG_I2C_ALGOBIT=y
|
|||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_OCORES is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PASEMI is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
# CONFIG_I2C_SAVAGE4 is not set
|
||||
# CONFIG_I2C_SIS5595 is not set
|
||||
|
@ -972,6 +1058,11 @@ CONFIG_I2C_ALGOBIT=y
|
|||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
|
@ -986,7 +1077,7 @@ CONFIG_I2C_ALGOBIT=y
|
|||
#
|
||||
# Graphics support
|
||||
#
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
# CONFIG_FB is not set
|
||||
# CONFIG_FB_IBM_GXT4500 is not set
|
||||
|
||||
|
@ -995,7 +1086,6 @@ CONFIG_FIRMWARE_EDID=y
|
|||
#
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
|
@ -1006,6 +1096,7 @@ CONFIG_DUMMY_CONSOLE=y
|
|||
# HID Devices
|
||||
#
|
||||
CONFIG_HID=m
|
||||
# CONFIG_HID_DEBUG is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
|
@ -1020,9 +1111,7 @@ CONFIG_USB=m
|
|||
# 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
|
||||
|
||||
#
|
||||
|
@ -1032,9 +1121,15 @@ 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_EHCI_BIG_ENDIAN_MMIO=y
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
|
||||
CONFIG_USB_OHCI_HCD_PPC_OF=y
|
||||
CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
|
||||
# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
|
||||
CONFIG_USB_OHCI_HCD_PCI=y
|
||||
CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
|
||||
CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
|
||||
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
# CONFIG_USB_UHCI_HCD is not set
|
||||
# CONFIG_USB_SL811_HCD is not set
|
||||
|
@ -1088,6 +1183,7 @@ CONFIG_USB_STORAGE=m
|
|||
# CONFIG_USB_ATI_REMOTE2 is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
# CONFIG_USB_APPLETOUCH is not set
|
||||
# CONFIG_USB_GTCO is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
|
@ -1125,6 +1221,7 @@ CONFIG_USB_MON=y
|
|||
# CONFIG_USB_RIO500 is not set
|
||||
# CONFIG_USB_LEGOTOWER is not set
|
||||
# CONFIG_USB_LCD is not set
|
||||
# CONFIG_USB_BERRY_CHARGE is not set
|
||||
# CONFIG_USB_LED is not set
|
||||
# CONFIG_USB_CYPRESS_CY7C63 is not set
|
||||
# CONFIG_USB_CYTHERM is not set
|
||||
|
@ -1135,6 +1232,7 @@ CONFIG_USB_MON=y
|
|||
# CONFIG_USB_SISUSBVGA is not set
|
||||
# CONFIG_USB_LD is not set
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
# CONFIG_USB_IOWARRIOR is not set
|
||||
# CONFIG_USB_TEST is not set
|
||||
|
||||
#
|
||||
|
@ -1175,6 +1273,7 @@ CONFIG_INFINIBAND_MTHCA=m
|
|||
CONFIG_INFINIBAND_MTHCA_DEBUG=y
|
||||
# CONFIG_INFINIBAND_AMSO1100 is not set
|
||||
CONFIG_INFINIBAND_IPOIB=m
|
||||
# CONFIG_INFINIBAND_IPOIB_CM is not set
|
||||
CONFIG_INFINIBAND_IPOIB_DEBUG=y
|
||||
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
|
||||
# CONFIG_INFINIBAND_SRP is not set
|
||||
|
@ -1202,6 +1301,10 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
|
|||
# DMA Devices
|
||||
#
|
||||
|
||||
#
|
||||
# Auxiliary Display support
|
||||
#
|
||||
|
||||
#
|
||||
# Virtualization
|
||||
#
|
||||
|
@ -1395,7 +1498,8 @@ CONFIG_TEXTSEARCH_KMP=m
|
|||
CONFIG_TEXTSEARCH_BM=m
|
||||
CONFIG_TEXTSEARCH_FSM=m
|
||||
CONFIG_PLIST=y
|
||||
CONFIG_IOMAP_COPY=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
|
||||
#
|
||||
# Instrumentation Support
|
||||
|
@ -1414,15 +1518,16 @@ CONFIG_MAGIC_SYSRQ=y
|
|||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_DEBUG_SHIRQ is not set
|
||||
CONFIG_LOG_BUF_SHIFT=15
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_DETECT_SOFTLOCKUP is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_TIMER_STATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
# CONFIG_DEBUG_RWSEMS is not set
|
||||
CONFIG_DEBUG_SPINLOCK_SLEEP=y
|
||||
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
|
@ -1432,6 +1537,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_FORCED_INLINING is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
CONFIG_DEBUGGER=y
|
||||
|
@ -1469,8 +1575,10 @@ CONFIG_CRYPTO_SHA1=m
|
|||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
CONFIG_CRYPTO_ECB=m
|
||||
CONFIG_CRYPTO_CBC=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
CONFIG_CRYPTO_DES=m
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
|
@ -1484,6 +1592,7 @@ CONFIG_CRYPTO_DES=m
|
|||
CONFIG_CRYPTO_DEFLATE=m
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
|
||||
#
|
||||
|
|
|
@ -685,6 +685,9 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap)
|
|||
"non-cacheable mapping\n");
|
||||
psize = mmu_vmalloc_psize = MMU_PAGE_4K;
|
||||
}
|
||||
#ifdef CONFIG_SPE_BASE
|
||||
spu_flush_all_slbs(mm);
|
||||
#endif
|
||||
}
|
||||
if (user_region) {
|
||||
if (psize != get_paca()->context.user_psize) {
|
||||
|
@ -759,6 +762,9 @@ void hash_preload(struct mm_struct *mm, unsigned long ea,
|
|||
mmu_psize_defs[MMU_PAGE_4K].sllp;
|
||||
get_paca()->context = mm->context;
|
||||
slb_flush_and_rebolt();
|
||||
#ifdef CONFIG_SPE_BASE
|
||||
spu_flush_all_slbs(mm);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (mm->context.user_psize == MMU_PAGE_64K)
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <asm/machdep.h>
|
||||
#include <asm/cputable.h>
|
||||
#include <asm/tlb.h>
|
||||
#include <asm/spu.h>
|
||||
|
||||
#include <linux/sysctl.h>
|
||||
|
||||
|
@ -513,6 +514,9 @@ int prepare_hugepage_range(unsigned long addr, unsigned long len, pgoff_t pgoff)
|
|||
if ((addr + len) > 0x100000000UL)
|
||||
err = open_high_hpage_areas(current->mm,
|
||||
HTLB_AREA_MASK(addr, len));
|
||||
#ifdef CONFIG_SPE_BASE
|
||||
spu_flush_all_slbs(current->mm);
|
||||
#endif
|
||||
if (err) {
|
||||
printk(KERN_DEBUG "prepare_hugepage_range(%lx, %lx)"
|
||||
" failed (lowmask: 0x%04hx, highmask: 0x%04hx)\n",
|
||||
|
|
|
@ -38,8 +38,61 @@
|
|||
const struct spu_management_ops *spu_management_ops;
|
||||
const struct spu_priv1_ops *spu_priv1_ops;
|
||||
|
||||
static struct list_head spu_list[MAX_NUMNODES];
|
||||
static LIST_HEAD(spu_full_list);
|
||||
static DEFINE_MUTEX(spu_mutex);
|
||||
static spinlock_t spu_list_lock = SPIN_LOCK_UNLOCKED;
|
||||
|
||||
EXPORT_SYMBOL_GPL(spu_priv1_ops);
|
||||
|
||||
void spu_invalidate_slbs(struct spu *spu)
|
||||
{
|
||||
struct spu_priv2 __iomem *priv2 = spu->priv2;
|
||||
|
||||
if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK)
|
||||
out_be64(&priv2->slb_invalidate_all_W, 0UL);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(spu_invalidate_slbs);
|
||||
|
||||
/* This is called by the MM core when a segment size is changed, to
|
||||
* request a flush of all the SPEs using a given mm
|
||||
*/
|
||||
void spu_flush_all_slbs(struct mm_struct *mm)
|
||||
{
|
||||
struct spu *spu;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&spu_list_lock, flags);
|
||||
list_for_each_entry(spu, &spu_full_list, full_list) {
|
||||
if (spu->mm == mm)
|
||||
spu_invalidate_slbs(spu);
|
||||
}
|
||||
spin_unlock_irqrestore(&spu_list_lock, flags);
|
||||
}
|
||||
|
||||
/* The hack below stinks... try to do something better one of
|
||||
* these days... Does it even work properly with NR_CPUS == 1 ?
|
||||
*/
|
||||
static inline void mm_needs_global_tlbie(struct mm_struct *mm)
|
||||
{
|
||||
int nr = (NR_CPUS > 1) ? NR_CPUS : NR_CPUS + 1;
|
||||
|
||||
/* Global TLBIE broadcast required with SPEs. */
|
||||
__cpus_setall(&mm->cpu_vm_mask, nr);
|
||||
}
|
||||
|
||||
void spu_associate_mm(struct spu *spu, struct mm_struct *mm)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&spu_list_lock, flags);
|
||||
spu->mm = mm;
|
||||
spin_unlock_irqrestore(&spu_list_lock, flags);
|
||||
if (mm)
|
||||
mm_needs_global_tlbie(mm);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(spu_associate_mm);
|
||||
|
||||
static int __spu_trap_invalid_dma(struct spu *spu)
|
||||
{
|
||||
pr_debug("%s\n", __FUNCTION__);
|
||||
|
@ -74,6 +127,7 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
|
|||
struct spu_priv2 __iomem *priv2 = spu->priv2;
|
||||
struct mm_struct *mm = spu->mm;
|
||||
u64 esid, vsid, llp;
|
||||
int psize;
|
||||
|
||||
pr_debug("%s\n", __FUNCTION__);
|
||||
|
||||
|
@ -90,22 +144,25 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
|
|||
case USER_REGION_ID:
|
||||
#ifdef CONFIG_HUGETLB_PAGE
|
||||
if (in_hugepage_area(mm->context, ea))
|
||||
llp = mmu_psize_defs[mmu_huge_psize].sllp;
|
||||
psize = mmu_huge_psize;
|
||||
else
|
||||
#endif
|
||||
llp = mmu_psize_defs[mmu_virtual_psize].sllp;
|
||||
psize = mm->context.user_psize;
|
||||
vsid = (get_vsid(mm->context.id, ea) << SLB_VSID_SHIFT) |
|
||||
SLB_VSID_USER | llp;
|
||||
SLB_VSID_USER;
|
||||
break;
|
||||
case VMALLOC_REGION_ID:
|
||||
llp = mmu_psize_defs[mmu_virtual_psize].sllp;
|
||||
if (ea < VMALLOC_END)
|
||||
psize = mmu_vmalloc_psize;
|
||||
else
|
||||
psize = mmu_io_psize;
|
||||
vsid = (get_kernel_vsid(ea) << SLB_VSID_SHIFT) |
|
||||
SLB_VSID_KERNEL | llp;
|
||||
SLB_VSID_KERNEL;
|
||||
break;
|
||||
case KERNEL_REGION_ID:
|
||||
llp = mmu_psize_defs[mmu_linear_psize].sllp;
|
||||
psize = mmu_linear_psize;
|
||||
vsid = (get_kernel_vsid(ea) << SLB_VSID_SHIFT) |
|
||||
SLB_VSID_KERNEL | llp;
|
||||
SLB_VSID_KERNEL;
|
||||
break;
|
||||
default:
|
||||
/* Future: support kernel segments so that drivers
|
||||
|
@ -114,9 +171,10 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
|
|||
pr_debug("invalid region access at %016lx\n", ea);
|
||||
return 1;
|
||||
}
|
||||
llp = mmu_psize_defs[psize].sllp;
|
||||
|
||||
out_be64(&priv2->slb_index_W, spu->slb_replace);
|
||||
out_be64(&priv2->slb_vsid_RW, vsid);
|
||||
out_be64(&priv2->slb_vsid_RW, vsid | llp);
|
||||
out_be64(&priv2->slb_esid_RW, esid);
|
||||
|
||||
spu->slb_replace++;
|
||||
|
@ -330,10 +388,6 @@ static void spu_free_irqs(struct spu *spu)
|
|||
free_irq(spu->irqs[2], spu);
|
||||
}
|
||||
|
||||
static struct list_head spu_list[MAX_NUMNODES];
|
||||
static LIST_HEAD(spu_full_list);
|
||||
static DEFINE_MUTEX(spu_mutex);
|
||||
|
||||
static void spu_init_channels(struct spu *spu)
|
||||
{
|
||||
static const struct {
|
||||
|
@ -593,6 +647,7 @@ static int __init create_spu(void *data)
|
|||
struct spu *spu;
|
||||
int ret;
|
||||
static int number;
|
||||
unsigned long flags;
|
||||
|
||||
ret = -ENOMEM;
|
||||
spu = kzalloc(sizeof (*spu), GFP_KERNEL);
|
||||
|
@ -620,8 +675,10 @@ static int __init create_spu(void *data)
|
|||
goto out_free_irqs;
|
||||
|
||||
mutex_lock(&spu_mutex);
|
||||
spin_lock_irqsave(&spu_list_lock, flags);
|
||||
list_add(&spu->list, &spu_list[spu->node]);
|
||||
list_add(&spu->full_list, &spu_full_list);
|
||||
spin_unlock_irqrestore(&spu_list_lock, flags);
|
||||
mutex_unlock(&spu_mutex);
|
||||
|
||||
goto out;
|
||||
|
|
|
@ -63,8 +63,8 @@ static ssize_t
|
|||
spufs_mem_read(struct file *file, char __user *buffer,
|
||||
size_t size, loff_t *pos)
|
||||
{
|
||||
int ret;
|
||||
struct spu_context *ctx = file->private_data;
|
||||
ssize_t ret;
|
||||
|
||||
spu_acquire(ctx);
|
||||
ret = __spufs_mem_read(ctx, buffer, size, pos);
|
||||
|
@ -74,25 +74,29 @@ spufs_mem_read(struct file *file, char __user *buffer,
|
|||
|
||||
static ssize_t
|
||||
spufs_mem_write(struct file *file, const char __user *buffer,
|
||||
size_t size, loff_t *pos)
|
||||
size_t size, loff_t *ppos)
|
||||
{
|
||||
struct spu_context *ctx = file->private_data;
|
||||
char *local_store;
|
||||
loff_t pos = *ppos;
|
||||
int ret;
|
||||
|
||||
size = min_t(ssize_t, LS_SIZE - *pos, size);
|
||||
if (size <= 0)
|
||||
if (pos < 0)
|
||||
return -EINVAL;
|
||||
if (pos > LS_SIZE)
|
||||
return -EFBIG;
|
||||
*pos += size;
|
||||
if (size > LS_SIZE - pos)
|
||||
size = LS_SIZE - pos;
|
||||
|
||||
spu_acquire(ctx);
|
||||
|
||||
local_store = ctx->ops->get_ls(ctx);
|
||||
ret = copy_from_user(local_store + *pos - size,
|
||||
buffer, size) ? -EFAULT : size;
|
||||
|
||||
ret = copy_from_user(local_store + pos, buffer, size);
|
||||
spu_release(ctx);
|
||||
return ret;
|
||||
|
||||
if (ret)
|
||||
return -EFAULT;
|
||||
*ppos = pos + size;
|
||||
return size;
|
||||
}
|
||||
|
||||
static unsigned long spufs_mem_mmap_nopfn(struct vm_area_struct *vma,
|
||||
|
|
|
@ -143,7 +143,7 @@ static inline int spu_run_init(struct spu_context *ctx, u32 * npc)
|
|||
int ret;
|
||||
unsigned long runcntl = SPU_RUNCNTL_RUNNABLE;
|
||||
|
||||
ret = spu_acquire_runnable(ctx, SPU_ACTIVATE_NOWAKE);
|
||||
ret = spu_acquire_runnable(ctx, 0);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -155,7 +155,7 @@ static inline int spu_run_init(struct spu_context *ctx, u32 * npc)
|
|||
spu_release(ctx);
|
||||
ret = spu_setup_isolated(ctx);
|
||||
if (!ret)
|
||||
ret = spu_acquire_runnable(ctx, SPU_ACTIVATE_NOWAKE);
|
||||
ret = spu_acquire_runnable(ctx, 0);
|
||||
}
|
||||
|
||||
/* if userspace has set the runcntrl register (eg, to issue an
|
||||
|
|
|
@ -127,14 +127,6 @@ static void spu_remove_from_active_list(struct spu *spu)
|
|||
mutex_unlock(&spu_prio->active_mutex[node]);
|
||||
}
|
||||
|
||||
static inline void mm_needs_global_tlbie(struct mm_struct *mm)
|
||||
{
|
||||
int nr = (NR_CPUS > 1) ? NR_CPUS : NR_CPUS + 1;
|
||||
|
||||
/* Global TLBIE broadcast required with SPEs. */
|
||||
__cpus_setall(&mm->cpu_vm_mask, nr);
|
||||
}
|
||||
|
||||
static BLOCKING_NOTIFIER_HEAD(spu_switch_notifier);
|
||||
|
||||
static void spu_switch_notify(struct spu *spu, struct spu_context *ctx)
|
||||
|
@ -167,8 +159,7 @@ static void spu_bind_context(struct spu *spu, struct spu_context *ctx)
|
|||
ctx->spu = spu;
|
||||
ctx->ops = &spu_hw_ops;
|
||||
spu->pid = current->pid;
|
||||
spu->mm = ctx->owner;
|
||||
mm_needs_global_tlbie(spu->mm);
|
||||
spu_associate_mm(spu, ctx->owner);
|
||||
spu->ibox_callback = spufs_ibox_callback;
|
||||
spu->wbox_callback = spufs_wbox_callback;
|
||||
spu->stop_callback = spufs_stop_callback;
|
||||
|
@ -205,7 +196,7 @@ static void spu_unbind_context(struct spu *spu, struct spu_context *ctx)
|
|||
spu->stop_callback = NULL;
|
||||
spu->mfc_callback = NULL;
|
||||
spu->dma_callback = NULL;
|
||||
spu->mm = NULL;
|
||||
spu_associate_mm(spu, NULL);
|
||||
spu->pid = 0;
|
||||
ctx->ops = &spu_backing_ops;
|
||||
ctx->spu = NULL;
|
||||
|
@ -263,7 +254,6 @@ static void spu_prio_wait(struct spu_context *ctx)
|
|||
{
|
||||
DEFINE_WAIT(wait);
|
||||
|
||||
set_bit(SPU_SCHED_WAKE, &ctx->sched_flags);
|
||||
prepare_to_wait_exclusive(&ctx->stop_wq, &wait, TASK_INTERRUPTIBLE);
|
||||
if (!signal_pending(current)) {
|
||||
mutex_unlock(&ctx->state_mutex);
|
||||
|
@ -272,7 +262,6 @@ static void spu_prio_wait(struct spu_context *ctx)
|
|||
}
|
||||
__set_current_state(TASK_RUNNING);
|
||||
remove_wait_queue(&ctx->stop_wq, &wait);
|
||||
clear_bit(SPU_SCHED_WAKE, &ctx->sched_flags);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -292,7 +281,7 @@ static void spu_reschedule(struct spu *spu)
|
|||
best = sched_find_first_bit(spu_prio->bitmap);
|
||||
if (best < MAX_PRIO) {
|
||||
struct spu_context *ctx = spu_grab_context(best);
|
||||
if (ctx && test_bit(SPU_SCHED_WAKE, &ctx->sched_flags))
|
||||
if (ctx)
|
||||
wake_up(&ctx->stop_wq);
|
||||
}
|
||||
spin_unlock(&spu_prio->runq_lock);
|
||||
|
@ -414,8 +403,7 @@ int spu_activate(struct spu_context *ctx, unsigned long flags)
|
|||
}
|
||||
|
||||
spu_add_to_rq(ctx);
|
||||
if (!(flags & SPU_ACTIVATE_NOWAKE))
|
||||
spu_prio_wait(ctx);
|
||||
spu_prio_wait(ctx);
|
||||
spu_del_from_rq(ctx);
|
||||
} while (!signal_pending(current));
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ struct spu_gang;
|
|||
|
||||
/* ctx->sched_flags */
|
||||
enum {
|
||||
SPU_SCHED_WAKE = 0,
|
||||
SPU_SCHED_WAKE = 0, /* currently unused */
|
||||
};
|
||||
|
||||
struct spu_context {
|
||||
|
@ -191,9 +191,7 @@ void spu_forget(struct spu_context *ctx);
|
|||
int spu_acquire_runnable(struct spu_context *ctx, unsigned long flags);
|
||||
void spu_acquire_saved(struct spu_context *ctx);
|
||||
int spu_acquire_exclusive(struct spu_context *ctx);
|
||||
enum {
|
||||
SPU_ACTIVATE_NOWAKE = 1,
|
||||
};
|
||||
|
||||
int spu_activate(struct spu_context *ctx, unsigned long flags);
|
||||
void spu_deactivate(struct spu_context *ctx);
|
||||
void spu_yield(struct spu_context *ctx);
|
||||
|
|
|
@ -468,26 +468,6 @@ static inline void wait_purge_complete(struct spu_state *csa, struct spu *spu)
|
|||
MFC_CNTL_PURGE_DMA_COMPLETE);
|
||||
}
|
||||
|
||||
static inline void save_mfc_slbs(struct spu_state *csa, struct spu *spu)
|
||||
{
|
||||
struct spu_priv2 __iomem *priv2 = spu->priv2;
|
||||
int i;
|
||||
|
||||
/* Save, Step 29:
|
||||
* If MFC_SR1[R]='1', save SLBs in CSA.
|
||||
*/
|
||||
if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK) {
|
||||
csa->priv2.slb_index_W = in_be64(&priv2->slb_index_W);
|
||||
for (i = 0; i < 8; i++) {
|
||||
out_be64(&priv2->slb_index_W, i);
|
||||
eieio();
|
||||
csa->slb_esid_RW[i] = in_be64(&priv2->slb_esid_RW);
|
||||
csa->slb_vsid_RW[i] = in_be64(&priv2->slb_vsid_RW);
|
||||
eieio();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline void setup_mfc_sr1(struct spu_state *csa, struct spu *spu)
|
||||
{
|
||||
/* Save, Step 30:
|
||||
|
@ -708,20 +688,6 @@ static inline void resume_mfc_queue(struct spu_state *csa, struct spu *spu)
|
|||
out_be64(&priv2->mfc_control_RW, MFC_CNTL_RESUME_DMA_QUEUE);
|
||||
}
|
||||
|
||||
static inline void invalidate_slbs(struct spu_state *csa, struct spu *spu)
|
||||
{
|
||||
struct spu_priv2 __iomem *priv2 = spu->priv2;
|
||||
|
||||
/* Save, Step 45:
|
||||
* Restore, Step 19:
|
||||
* If MFC_SR1[R]=1, write 0 to SLB_Invalidate_All.
|
||||
*/
|
||||
if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK) {
|
||||
out_be64(&priv2->slb_invalidate_all_W, 0UL);
|
||||
eieio();
|
||||
}
|
||||
}
|
||||
|
||||
static inline void get_kernel_slb(u64 ea, u64 slb[2])
|
||||
{
|
||||
u64 llp;
|
||||
|
@ -765,7 +731,7 @@ static inline void setup_mfc_slbs(struct spu_state *csa, struct spu *spu)
|
|||
* MFC_SR1[R]=1 (in other words, assume that
|
||||
* translation is desired by OS environment).
|
||||
*/
|
||||
invalidate_slbs(csa, spu);
|
||||
spu_invalidate_slbs(spu);
|
||||
get_kernel_slb((unsigned long)&spu_save_code[0], code_slb);
|
||||
get_kernel_slb((unsigned long)csa->lscsa, lscsa_slb);
|
||||
load_mfc_slb(spu, code_slb, 0);
|
||||
|
@ -1718,27 +1684,6 @@ static inline void check_ppuint_mb_stat(struct spu_state *csa, struct spu *spu)
|
|||
}
|
||||
}
|
||||
|
||||
static inline void restore_mfc_slbs(struct spu_state *csa, struct spu *spu)
|
||||
{
|
||||
struct spu_priv2 __iomem *priv2 = spu->priv2;
|
||||
int i;
|
||||
|
||||
/* Restore, Step 68:
|
||||
* If MFC_SR1[R]='1', restore SLBs from CSA.
|
||||
*/
|
||||
if (csa->priv1.mfc_sr1_RW & MFC_STATE1_RELOCATE_MASK) {
|
||||
for (i = 0; i < 8; i++) {
|
||||
out_be64(&priv2->slb_index_W, i);
|
||||
eieio();
|
||||
out_be64(&priv2->slb_esid_RW, csa->slb_esid_RW[i]);
|
||||
out_be64(&priv2->slb_vsid_RW, csa->slb_vsid_RW[i]);
|
||||
eieio();
|
||||
}
|
||||
out_be64(&priv2->slb_index_W, csa->priv2.slb_index_W);
|
||||
eieio();
|
||||
}
|
||||
}
|
||||
|
||||
static inline void restore_mfc_sr1(struct spu_state *csa, struct spu *spu)
|
||||
{
|
||||
/* Restore, Step 69:
|
||||
|
@ -1875,7 +1820,6 @@ static void save_csa(struct spu_state *prev, struct spu *spu)
|
|||
set_mfc_tclass_id(prev, spu); /* Step 26. */
|
||||
purge_mfc_queue(prev, spu); /* Step 27. */
|
||||
wait_purge_complete(prev, spu); /* Step 28. */
|
||||
save_mfc_slbs(prev, spu); /* Step 29. */
|
||||
setup_mfc_sr1(prev, spu); /* Step 30. */
|
||||
save_spu_npc(prev, spu); /* Step 31. */
|
||||
save_spu_privcntl(prev, spu); /* Step 32. */
|
||||
|
@ -1987,7 +1931,7 @@ static void harvest(struct spu_state *prev, struct spu *spu)
|
|||
reset_spu_privcntl(prev, spu); /* Step 16. */
|
||||
reset_spu_lslr(prev, spu); /* Step 17. */
|
||||
setup_mfc_sr1(prev, spu); /* Step 18. */
|
||||
invalidate_slbs(prev, spu); /* Step 19. */
|
||||
spu_invalidate_slbs(spu); /* Step 19. */
|
||||
reset_ch_part1(prev, spu); /* Step 20. */
|
||||
reset_ch_part2(prev, spu); /* Step 21. */
|
||||
enable_interrupts(prev, spu); /* Step 22. */
|
||||
|
@ -2055,7 +1999,7 @@ static void restore_csa(struct spu_state *next, struct spu *spu)
|
|||
restore_spu_mb(next, spu); /* Step 65. */
|
||||
check_ppu_mb_stat(next, spu); /* Step 66. */
|
||||
check_ppuint_mb_stat(next, spu); /* Step 67. */
|
||||
restore_mfc_slbs(next, spu); /* Step 68. */
|
||||
spu_invalidate_slbs(spu); /* Modified Step 68. */
|
||||
restore_mfc_sr1(next, spu); /* Step 69. */
|
||||
restore_other_spu_access(next, spu); /* Step 70. */
|
||||
restore_spu_runcntl(next, spu); /* Step 71. */
|
||||
|
|
|
@ -294,7 +294,7 @@ static int __init ps3_mm_add_memory(void)
|
|||
unsigned long nr_pages;
|
||||
|
||||
if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
|
||||
return 0;
|
||||
return -ENODEV;
|
||||
|
||||
BUG_ON(!mem_init_done);
|
||||
|
||||
|
|
|
@ -172,7 +172,7 @@ int __init ps3_system_bus_init(void)
|
|||
int result;
|
||||
|
||||
if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
|
||||
return 0;
|
||||
return -ENODEV;
|
||||
|
||||
result = bus_register(&ps3_system_bus_type);
|
||||
BUG_ON(result);
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
#include <linux/reboot.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#include <asm/firmware.h>
|
||||
#include <asm/lv1call.h>
|
||||
#include <asm/ps3av.h>
|
||||
#include <asm/ps3.h>
|
||||
|
@ -947,7 +949,12 @@ static struct ps3_vuart_port_driver ps3av_driver = {
|
|||
|
||||
static int ps3av_module_init(void)
|
||||
{
|
||||
int error = ps3_vuart_port_driver_register(&ps3av_driver);
|
||||
int error;
|
||||
|
||||
if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
|
||||
return -ENODEV;
|
||||
|
||||
error = ps3_vuart_port_driver_register(&ps3av_driver);
|
||||
if (error) {
|
||||
printk(KERN_ERR
|
||||
"%s: ps3_vuart_port_driver_register failed %d\n",
|
||||
|
|
|
@ -22,7 +22,10 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/reboot.h>
|
||||
|
||||
#include <asm/firmware.h>
|
||||
#include <asm/ps3.h>
|
||||
|
||||
#include "vuart.h"
|
||||
|
||||
MODULE_AUTHOR("Sony Corporation");
|
||||
|
@ -598,6 +601,9 @@ static struct ps3_vuart_port_driver ps3_sys_manager = {
|
|||
|
||||
static int __init ps3_sys_manager_init(void)
|
||||
{
|
||||
if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
|
||||
return -ENODEV;
|
||||
|
||||
return ps3_vuart_port_driver_register(&ps3_sys_manager);
|
||||
}
|
||||
|
||||
|
|
|
@ -1031,7 +1031,7 @@ int __init ps3_vuart_bus_init(void)
|
|||
pr_debug("%s:%d:\n", __func__, __LINE__);
|
||||
|
||||
if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
|
||||
return 0;
|
||||
return -ENODEV;
|
||||
|
||||
init_MUTEX(&vuart_bus_priv.probe_mutex);
|
||||
result = bus_register(&ps3_vuart_bus);
|
||||
|
|
|
@ -165,6 +165,13 @@ int spu_irq_class_0_bottom(struct spu *spu);
|
|||
int spu_irq_class_1_bottom(struct spu *spu);
|
||||
void spu_irq_setaffinity(struct spu *spu, int cpu);
|
||||
|
||||
extern void spu_invalidate_slbs(struct spu *spu);
|
||||
extern void spu_associate_mm(struct spu *spu, struct mm_struct *mm);
|
||||
|
||||
/* Calls from the memory management to the SPU */
|
||||
struct mm_struct;
|
||||
extern void spu_flush_all_slbs(struct mm_struct *mm);
|
||||
|
||||
/* system callbacks from the SPU */
|
||||
struct spu_syscall_block {
|
||||
u64 nr_ret;
|
||||
|
|
|
@ -221,8 +221,6 @@ struct spu_priv2_collapsed {
|
|||
* @spu_chnlcnt_RW: Array of saved channel counts.
|
||||
* @spu_chnldata_RW: Array of saved channel data.
|
||||
* @suspend_time: Time stamp when decrementer disabled.
|
||||
* @slb_esid_RW: Array of saved SLB esid entries.
|
||||
* @slb_vsid_RW: Array of saved SLB vsid entries.
|
||||
*
|
||||
* Structure representing the whole of the SPU
|
||||
* context save area (CSA). This struct contains
|
||||
|
@ -245,8 +243,6 @@ struct spu_state {
|
|||
u32 spu_mailbox_data[4];
|
||||
u32 pu_mailbox_data[1];
|
||||
unsigned long suspend_time;
|
||||
u64 slb_esid_RW[8];
|
||||
u64 slb_vsid_RW[8];
|
||||
spinlock_t register_lock;
|
||||
};
|
||||
|
||||
|
|
|
@ -304,5 +304,6 @@ SYSCALL_SPU(fchmodat)
|
|||
SYSCALL_SPU(faccessat)
|
||||
COMPAT_SYS_SPU(get_robust_list)
|
||||
COMPAT_SYS_SPU(set_robust_list)
|
||||
COMPAT_SYS(move_pages)
|
||||
COMPAT_SYS_SPU(move_pages)
|
||||
SYSCALL_SPU(getcpu)
|
||||
COMPAT_SYS(epoll_pwait)
|
||||
|
|
|
@ -324,10 +324,12 @@
|
|||
#define __NR_get_robust_list 299
|
||||
#define __NR_set_robust_list 300
|
||||
#define __NR_move_pages 301
|
||||
#define __NR_getcpu 302
|
||||
#define __NR_epoll_pwait 303
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define __NR_syscalls 302
|
||||
#define __NR_syscalls 304
|
||||
|
||||
#define __NR__exit __NR_exit
|
||||
#define NR_syscalls __NR_syscalls
|
||||
|
|
Loading…
Reference in a new issue