Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
f57e8430
Commit
f57e8430
authored
Mar 12, 2007
by
Paul Mackerras
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'cell-merge' of
git://git.kernel.org/pub/scm/linux/kernel/git/arnd/cell-2.6
into merge
parents
be521466
c886c2bf
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
258 additions
and
132 deletions
+258
-132
arch/powerpc/configs/cell_defconfig
arch/powerpc/configs/cell_defconfig
+130
-21
arch/powerpc/mm/hash_utils_64.c
arch/powerpc/mm/hash_utils_64.c
+6
-0
arch/powerpc/mm/hugetlbpage.c
arch/powerpc/mm/hugetlbpage.c
+4
-0
arch/powerpc/platforms/cell/spu_base.c
arch/powerpc/platforms/cell/spu_base.c
+69
-12
arch/powerpc/platforms/cell/spufs/file.c
arch/powerpc/platforms/cell/spufs/file.c
+14
-10
arch/powerpc/platforms/cell/spufs/run.c
arch/powerpc/platforms/cell/spufs/run.c
+2
-2
arch/powerpc/platforms/cell/spufs/sched.c
arch/powerpc/platforms/cell/spufs/sched.c
+4
-16
arch/powerpc/platforms/cell/spufs/spufs.h
arch/powerpc/platforms/cell/spufs/spufs.h
+2
-4
arch/powerpc/platforms/cell/spufs/switch.c
arch/powerpc/platforms/cell/spufs/switch.c
+3
-59
arch/powerpc/platforms/ps3/mm.c
arch/powerpc/platforms/ps3/mm.c
+1
-1
arch/powerpc/platforms/ps3/system-bus.c
arch/powerpc/platforms/ps3/system-bus.c
+1
-1
drivers/ps3/ps3av.c
drivers/ps3/ps3av.c
+8
-1
drivers/ps3/sys-manager.c
drivers/ps3/sys-manager.c
+6
-0
drivers/ps3/vuart.c
drivers/ps3/vuart.c
+1
-1
include/asm-powerpc/spu.h
include/asm-powerpc/spu.h
+7
-0
include/asm-powerpc/spu_csa.h
include/asm-powerpc/spu_csa.h
+0
-4
No files found.
arch/powerpc/configs/cell_defconfig
View file @
f57e8430
#
#
# Automatically generated make config: don't edit
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.2
0-rc5
# Linux kernel version: 2.6.2
1-rc3
#
Mon Jan 22 22:12:56
2007
#
Fri Mar 9 23:34:53
2007
#
#
CONFIG_PPC64=y
CONFIG_PPC64=y
CONFIG_64BIT=y
CONFIG_64BIT=y
...
@@ -61,6 +61,7 @@ CONFIG_LOCALVERSION_AUTO=y
...
@@ -61,6 +61,7 @@ CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_TASKSTATS is not set
...
@@ -71,6 +72,7 @@ CONFIG_IKCONFIG_PROC=y
...
@@ -71,6 +72,7 @@ CONFIG_IKCONFIG_PROC=y
CONFIG_CPUSETS=y
CONFIG_CPUSETS=y
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
# CONFIG_RELAY is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_INITRAMFS_SOURCE=""
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
CONFIG_SYSCTL=y
...
@@ -133,6 +135,7 @@ CONFIG_PPC_MULTIPLATFORM=y
...
@@ -133,6 +135,7 @@ CONFIG_PPC_MULTIPLATFORM=y
# 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_MPC52xx is not set
# CONFIG_PPC_MPC5200 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
...
@@ -140,8 +143,10 @@ CONFIG_PPC_CELL=y
...
@@ -140,8 +143,10 @@ 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_PPC_PS3=y
CONFIG_PPC_PS3=y
CONFIG_PPC_CELLEB=y
CONFIG_PPC_NATIVE=y
CONFIG_PPC_NATIVE=y
CONFIG_UDBG_RTAS_CONSOLE=y
CONFIG_UDBG_RTAS_CONSOLE=y
CONFIG_PPC_UDBG_BEAT=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
...
@@ -181,10 +186,13 @@ CONFIG_CBE_CPUFREQ=m
...
@@ -181,10 +186,13 @@ CONFIG_CBE_CPUFREQ=m
#
#
# PS3 Platform Options
# PS3 Platform Options
#
#
# CONFIG_PS3_ADVANCED is not set
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
CONFIG_PS3_VUART=y
CONFIG_PS3_PS3AV=y
CONFIG_PS3_SYS_MANAGER=y
#
#
# Kernel options
# Kernel options
...
@@ -226,6 +234,7 @@ CONFIG_MEMORY_HOTPLUG_SPARSE=y
...
@@ -226,6 +234,7 @@ CONFIG_MEMORY_HOTPLUG_SPARSE=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_MIGRATION=y
CONFIG_MIGRATION=y
CONFIG_RESOURCES_64BIT=y
CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=1
CONFIG_ARCH_MEMORY_PROBE=y
CONFIG_ARCH_MEMORY_PROBE=y
CONFIG_NODES_SPAN_OTHER_NODES=y
CONFIG_NODES_SPAN_OTHER_NODES=y
CONFIG_PPC_64K_PAGES=y
CONFIG_PPC_64K_PAGES=y
...
@@ -239,6 +248,7 @@ CONFIG_ISA_DMA_API=y
...
@@ -239,6 +248,7 @@ CONFIG_ISA_DMA_API=y
#
#
# Bus options
# Bus options
#
#
CONFIG_ZONE_DMA=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_ISA_DMA=y
# CONFIG_MPIC_WEIRD is not set
# CONFIG_MPIC_WEIRD is not set
# CONFIG_PPC_I8259 is not set
# CONFIG_PPC_I8259 is not set
...
@@ -274,6 +284,7 @@ CONFIG_UNIX=y
...
@@ -274,6 +284,7 @@ CONFIG_UNIX=y
CONFIG_XFRM=y
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
# CONFIG_XFRM_USER is not set
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_SUB_POLICY is not set
# CONFIG_XFRM_MIGRATE is not set
# CONFIG_NET_KEY is not set
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_MULTICAST=y
...
@@ -340,6 +351,7 @@ CONFIG_NETFILTER_XT_TARGET_DSCP=m
...
@@ -340,6 +351,7 @@ CONFIG_NETFILTER_XT_TARGET_DSCP=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
...
@@ -376,7 +388,6 @@ CONFIG_IP_NF_FILTER=m
...
@@ -376,7 +388,6 @@ CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_TARGET_TCPMSS=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_ECN=m
...
@@ -444,6 +455,7 @@ CONFIG_STANDALONE=y
...
@@ -444,6 +455,7 @@ CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y
CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_SYS_HYPERVISOR is not set
#
#
...
@@ -464,6 +476,7 @@ CONFIG_FW_LOADER=y
...
@@ -464,6 +476,7 @@ CONFIG_FW_LOADER=y
#
#
# Plug and Play support
# Plug and Play support
#
#
# CONFIG_PNPACPI is not set
#
#
# Block devices
# Block devices
...
@@ -483,7 +496,6 @@ CONFIG_BLK_DEV_RAM=y
...
@@ -483,7 +496,6 @@ 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
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_ATA_OVER_ETH is not set
...
@@ -537,6 +549,7 @@ CONFIG_BLK_DEV_AEC62XX=y
...
@@ -537,6 +549,7 @@ CONFIG_BLK_DEV_AEC62XX=y
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_JMICRON is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX 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_IT821X is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
...
@@ -547,6 +560,8 @@ CONFIG_BLK_DEV_SIIMAGE=y
...
@@ -547,6 +560,8 @@ CONFIG_BLK_DEV_SIIMAGE=y
# 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
# CONFIG_BLK_DEV_TC86C001 is not set
CONFIG_BLK_DEV_IDE_CELLEB=y
# CONFIG_IDE_ARM is not set
# CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
# CONFIG_IDEDMA_IVB is not set
...
@@ -557,7 +572,7 @@ CONFIG_IDEDMA_AUTO=y
...
@@ -557,7 +572,7 @@ CONFIG_IDEDMA_AUTO=y
# SCSI device support
# SCSI device support
#
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=
m
CONFIG_SCSI=
y
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
CONFIG_SCSI_PROC_FS=y
...
@@ -565,12 +580,12 @@ CONFIG_SCSI_PROC_FS=y
...
@@ -565,12 +580,12 @@ CONFIG_SCSI_PROC_FS=y
#
#
# SCSI support type (disk, tape, CD-ROM)
# 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_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_CHR_DEV_OSST is not set
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR=m
# CONFIG_BLK_DEV_SR_VENDOR is not set
# 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
# CONFIG_CHR_DEV_SCH is not set
#
#
...
@@ -587,7 +602,7 @@ CONFIG_CHR_DEV_SG=m
...
@@ -587,7 +602,7 @@ CONFIG_CHR_DEV_SG=m
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_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
# CONFIG_SCSI_SAS_LIBSAS is not set
#
#
...
@@ -617,6 +632,7 @@ CONFIG_CHR_DEV_SG=m
...
@@ -617,6 +632,7 @@ CONFIG_CHR_DEV_SG=m
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_STEX is not set
# CONFIG_SCSI_SYM53C8XX_2 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_QLOGIC_1280 is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_FC is not set
# CONFIG_SCSI_QLA_ISCSI is not set
# CONFIG_SCSI_QLA_ISCSI is not set
...
@@ -629,7 +645,60 @@ CONFIG_CHR_DEV_SG=m
...
@@ -629,7 +645,60 @@ CONFIG_CHR_DEV_SG=m
#
#
# Serial ATA (prod) and Parallel ATA (experimental) drivers
# 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)
# Multi-device support (RAID and LVM)
...
@@ -655,10 +724,12 @@ CONFIG_DM_MULTIPATH=m
...
@@ -655,10 +724,12 @@ CONFIG_DM_MULTIPATH=m
#
#
# Fusion MPT device support
# Fusion MPT device support
#
#
# CONFIG_FUSION is not set
CONFIG_FUSION=y
# CONFIG_FUSION_SPI is not set
# CONFIG_FUSION_SPI is not set
# CONFIG_FUSION_FC 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
# IEEE 1394 (FireWire) support
...
@@ -732,15 +803,18 @@ CONFIG_TIGON3=y
...
@@ -732,15 +803,18 @@ CONFIG_TIGON3=y
# CONFIG_BNX2 is not set
# CONFIG_BNX2 is not set
CONFIG_SPIDER_NET=y
CONFIG_SPIDER_NET=y
# CONFIG_QLA3XXX is not set
# CONFIG_QLA3XXX is not set
# CONFIG_ATL1 is not set
#
#
# Ethernet (10000 Mbit)
# Ethernet (10000 Mbit)
#
#
# CONFIG_CHELSIO_T1 is not set
# CONFIG_CHELSIO_T1 is not set
# CONFIG_CHELSIO_T3 is not set
# 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
# CONFIG_NETXEN_NIC is not set
# CONFIG_PASEMI_MAC is not set
#
#
# Token Ring devices
# Token Ring devices
...
@@ -853,16 +927,27 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
...
@@ -853,16 +927,27 @@ 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_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_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
CONFIG_HVC_RTAS=y
CONFIG_HVC_RTAS=y
# CONFIG_HVC_BEAT is not set
#
#
# IPMI
# 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
# Watchdog Cards
...
@@ -874,7 +959,7 @@ CONFIG_WATCHDOG=y
...
@@ -874,7 +959,7 @@ CONFIG_WATCHDOG=y
# Watchdog Device Drivers
# Watchdog Device Drivers
#
#
# CONFIG_SOFT_WATCHDOG is not set
# CONFIG_SOFT_WATCHDOG is not set
CONFIG_WATCHDOG_RTAS=y
# CONFIG_WATCHDOG_RTAS is not set
#
#
# PCI-based Watchdog Cards
# PCI-based Watchdog Cards
...
@@ -929,6 +1014,7 @@ CONFIG_I2C_ALGOBIT=y
...
@@ -929,6 +1014,7 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PASEMI is not set
# CONFIG_I2C_PROSAVAGE is not set
# CONFIG_I2C_PROSAVAGE is not set
# CONFIG_I2C_SAVAGE4 is not set
# CONFIG_I2C_SAVAGE4 is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS5595 is not set
...
@@ -972,6 +1058,11 @@ CONFIG_I2C_ALGOBIT=y
...
@@ -972,6 +1058,11 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_HWMON is not set
# CONFIG_HWMON is not set
# CONFIG_HWMON_VID is not set
# CONFIG_HWMON_VID is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set
#
#
# Multimedia devices
# Multimedia devices
#
#
...
@@ -986,7 +1077,7 @@ CONFIG_I2C_ALGOBIT=y
...
@@ -986,7 +1077,7 @@ CONFIG_I2C_ALGOBIT=y
#
#
# Graphics support
# Graphics support
#
#
CONFIG_FIRMWARE_EDID=y
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
# CONFIG_FB is not set
# CONFIG_FB is not set
# CONFIG_FB_IBM_GXT4500 is not set
# CONFIG_FB_IBM_GXT4500 is not set
...
@@ -995,7 +1086,6 @@ CONFIG_FIRMWARE_EDID=y
...
@@ -995,7 +1086,6 @@ CONFIG_FIRMWARE_EDID=y
#
#
# CONFIG_VGA_CONSOLE is not set
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_DUMMY_CONSOLE=y
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
#
# Sound
# Sound
...
@@ -1006,6 +1096,7 @@ CONFIG_DUMMY_CONSOLE=y
...
@@ -1006,6 +1096,7 @@ CONFIG_DUMMY_CONSOLE=y
# HID Devices
# HID Devices
#
#
CONFIG_HID=m
CONFIG_HID=m
# CONFIG_HID_DEBUG is not set
#
#
# USB support
# USB support
...
@@ -1020,9 +1111,7 @@ CONFIG_USB=m
...
@@ -1020,9 +1111,7 @@ CONFIG_USB=m
# Miscellaneous USB options
# Miscellaneous USB options
#
#
CONFIG_USB_DEVICEFS=y
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_MULTITHREAD_PROBE is not set
# CONFIG_USB_OTG is not set
# CONFIG_USB_OTG is not set
#
#
...
@@ -1032,9 +1121,15 @@ CONFIG_USB_EHCI_HCD=m
...
@@ -1032,9 +1121,15 @@ CONFIG_USB_EHCI_HCD=m
# CONFIG_USB_EHCI_SPLIT_ISO is not set
# CONFIG_USB_EHCI_SPLIT_ISO is not set
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
# CONFIG_USB_EHCI_TT_NEWSCHED 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_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=m
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_OHCI_LITTLE_ENDIAN=y
# CONFIG_USB_UHCI_HCD is not set
# CONFIG_USB_UHCI_HCD is not set
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_SL811_HCD is not set
...
@@ -1088,6 +1183,7 @@ CONFIG_USB_STORAGE=m
...
@@ -1088,6 +1183,7 @@ CONFIG_USB_STORAGE=m
# CONFIG_USB_ATI_REMOTE2 is not set
# CONFIG_USB_ATI_REMOTE2 is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_APPLETOUCH is not set
# CONFIG_USB_APPLETOUCH is not set
# CONFIG_USB_GTCO is not set
#
#
# USB Imaging devices
# USB Imaging devices
...
@@ -1125,6 +1221,7 @@ CONFIG_USB_MON=y
...
@@ -1125,6 +1221,7 @@ CONFIG_USB_MON=y
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_RIO500 is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_BERRY_CHARGE is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_CYTHERM is not set
...
@@ -1135,6 +1232,7 @@ CONFIG_USB_MON=y
...
@@ -1135,6 +1232,7 @@ CONFIG_USB_MON=y
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_LD is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
# CONFIG_USB_TEST is not set
# CONFIG_USB_TEST is not set
#
#
...
@@ -1175,6 +1273,7 @@ CONFIG_INFINIBAND_MTHCA=m
...
@@ -1175,6 +1273,7 @@ CONFIG_INFINIBAND_MTHCA=m
CONFIG_INFINIBAND_MTHCA_DEBUG=y
CONFIG_INFINIBAND_MTHCA_DEBUG=y
# CONFIG_INFINIBAND_AMSO1100 is not set
# CONFIG_INFINIBAND_AMSO1100 is not set
CONFIG_INFINIBAND_IPOIB=m
CONFIG_INFINIBAND_IPOIB=m
# CONFIG_INFINIBAND_IPOIB_CM is not set
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_SRP is not set
...
@@ -1202,6 +1301,10 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
...
@@ -1202,6 +1301,10 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
# DMA Devices
# DMA Devices
#
#
#
# Auxiliary Display support
#
#
#
# Virtualization
# Virtualization
#
#
...
@@ -1395,7 +1498,8 @@ CONFIG_TEXTSEARCH_KMP=m
...
@@ -1395,7 +1498,8 @@ CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_PLIST=y
CONFIG_IOMAP_COPY=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
#
#
# Instrumentation Support
# Instrumentation Support
...
@@ -1414,15 +1518,16 @@ CONFIG_MAGIC_SYSRQ=y
...
@@ -1414,15 +1518,16 @@ CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
# CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=15
CONFIG_LOG_BUF_SHIFT=15
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_DETECT_SOFTLOCKUP is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_SCHEDSTATS is not set
# CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK is not set
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_MUTEXES=y
# CONFIG_DEBUG_RWSEMS is not set
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
...
@@ -1432,6 +1537,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
...
@@ -1432,6 +1537,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
# 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_RCU_TORTURE_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_FAULT_INJECTION 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
CONFIG_DEBUGGER=y
CONFIG_DEBUGGER=y
...
@@ -1469,8 +1575,10 @@ CONFIG_CRYPTO_SHA1=m
...
@@ -1469,8 +1575,10 @@ CONFIG_CRYPTO_SHA1=m
# CONFIG_CRYPTO_GF128MUL 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_PCBC=m
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_LRW is not set
CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_SERPENT is not set
...
@@ -1484,6 +1592,7 @@ CONFIG_CRYPTO_DES=m
...
@@ -1484,6 +1592,7 @@ CONFIG_CRYPTO_DES=m
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_DEFLATE=m
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CRC32C is not set
# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
# CONFIG_CRYPTO_TEST is not set
#
#
...
...
arch/powerpc/mm/hash_utils_64.c
View file @
f57e8430
...
@@ -685,6 +685,9 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap)
...
@@ -685,6 +685,9 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap)
"non-cacheable mapping
\n
"
);
"non-cacheable mapping
\n
"
);
psize
=
mmu_vmalloc_psize
=
MMU_PAGE_4K
;
psize
=
mmu_vmalloc_psize
=
MMU_PAGE_4K
;
}
}
#ifdef CONFIG_SPE_BASE
spu_flush_all_slbs
(
mm
);
#endif
}
}
if
(
user_region
)
{
if
(
user_region
)
{
if
(
psize
!=
get_paca
()
->
context
.
user_psize
)
{
if
(
psize
!=
get_paca
()
->
context
.
user_psize
)
{
...
@@ -759,6 +762,9 @@ void hash_preload(struct mm_struct *mm, unsigned long ea,
...
@@ -759,6 +762,9 @@ void hash_preload(struct mm_struct *mm, unsigned long ea,
mmu_psize_defs
[
MMU_PAGE_4K
].
sllp
;
mmu_psize_defs
[
MMU_PAGE_4K
].
sllp
;
get_paca
()
->
context
=
mm
->
context
;
get_paca
()
->
context
=
mm
->
context
;
slb_flush_and_rebolt
();
slb_flush_and_rebolt
();
#ifdef CONFIG_SPE_BASE
spu_flush_all_slbs
(
mm
);
#endif
}
}
}
}
if
(
mm
->
context
.
user_psize
==
MMU_PAGE_64K
)
if
(
mm
->
context
.
user_psize
==
MMU_PAGE_64K
)
...
...
arch/powerpc/mm/hugetlbpage.c
View file @
f57e8430
...
@@ -24,6 +24,7 @@
...
@@ -24,6 +24,7 @@
#include <asm/machdep.h>
#include <asm/machdep.h>
#include <asm/cputable.h>
#include <asm/cputable.h>
#include <asm/tlb.h>
#include <asm/tlb.h>
#include <asm/spu.h>
#include <linux/sysctl.h>
#include <linux/sysctl.h>
...
@@ -513,6 +514,9 @@ int prepare_hugepage_range(unsigned long addr, unsigned long len, pgoff_t pgoff)
...
@@ -513,6 +514,9 @@ int prepare_hugepage_range(unsigned long addr, unsigned long len, pgoff_t pgoff)
if
((
addr
+
len
)
>
0x100000000UL
)
if
((
addr
+
len
)
>
0x100000000UL
)
err
=
open_high_hpage_areas
(
current
->
mm
,
err
=
open_high_hpage_areas
(
current
->
mm
,
HTLB_AREA_MASK
(
addr
,
len
));
HTLB_AREA_MASK
(
addr
,
len
));
#ifdef CONFIG_SPE_BASE
spu_flush_all_slbs
(
current
->
mm
);
#endif
if
(
err
)
{
if
(
err
)
{
printk
(
KERN_DEBUG
"prepare_hugepage_range(%lx, %lx)"
printk
(
KERN_DEBUG
"prepare_hugepage_range(%lx, %lx)"
" failed (lowmask: 0x%04hx, highmask: 0x%04hx)
\n
"
,
" failed (lowmask: 0x%04hx, highmask: 0x%04hx)
\n
"
,
...
...
arch/powerpc/platforms/cell/spu_base.c
View file @
f57e8430
...
@@ -38,8 +38,61 @@
...
@@ -38,8 +38,61 @@
const
struct
spu_management_ops
*
spu_management_ops
;
const
struct
spu_management_ops
*
spu_management_ops
;
const
struct
spu_priv1_ops
*
spu_priv1_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
);
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
)
static
int
__spu_trap_invalid_dma
(
struct
spu
*
spu
)
{
{
pr_debug
(
"%s
\n
"
,
__FUNCTION__
);
pr_debug
(
"%s
\n
"
,
__FUNCTION__
);
...
@@ -74,6 +127,7 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
...
@@ -74,6 +127,7 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
struct
spu_priv2
__iomem
*
priv2
=
spu
->
priv2
;
struct
spu_priv2
__iomem
*
priv2
=
spu
->
priv2
;
struct
mm_struct
*
mm
=
spu
->
mm
;
struct
mm_struct
*
mm
=
spu
->
mm
;
u64
esid
,
vsid
,
llp
;
u64
esid
,
vsid
,
llp
;
int
psize
;
pr_debug
(
"%s
\n
"
,
__FUNCTION__
);
pr_debug
(
"%s
\n
"
,
__FUNCTION__
);
...
@@ -90,22 +144,25 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
...
@@ -90,22 +144,25 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
case
USER_REGION_ID
:
case
USER_REGION_ID
:
#ifdef CONFIG_HUGETLB_PAGE
#ifdef CONFIG_HUGETLB_PAGE
if
(
in_hugepage_area
(
mm
->
context
,
ea
))
if
(
in_hugepage_area
(
mm
->
context
,
ea
))
llp
=
mmu_psize_defs
[
mmu_huge_psize
].
sllp
;
psize
=
mmu_huge_psize
;
else
else
#endif
#endif
llp
=
mmu_psize_defs
[
mmu_virtual_psize
].
sllp
;
psize
=
mm
->
context
.
user_psize
;
vsid
=
(
get_vsid
(
mm
->
context
.
id
,
ea
)
<<
SLB_VSID_SHIFT
)
|
vsid
=
(
get_vsid
(
mm
->
context
.
id
,
ea
)
<<
SLB_VSID_SHIFT
)
|
SLB_VSID_USER
|
llp
;
SLB_VSID_USER
;
break
;
break
;
case
VMALLOC_REGION_ID
:
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
)
|
vsid
=
(
get_kernel_vsid
(
ea
)
<<
SLB_VSID_SHIFT
)
|
SLB_VSID_KERNEL
|
llp
;
SLB_VSID_KERNEL
;
break
;
break
;
case
KERNEL_REGION_ID
:
case
KERNEL_REGION_ID
:
llp
=
mmu_psize_defs
[
mmu_linear_psize
].
sllp
;
psize
=
mmu_linear_psize
;
vsid
=
(
get_kernel_vsid
(
ea
)
<<
SLB_VSID_SHIFT
)
|
vsid
=
(
get_kernel_vsid
(
ea
)
<<
SLB_VSID_SHIFT
)
|
SLB_VSID_KERNEL
|
llp
;
SLB_VSID_KERNEL
;
break
;
break
;
default:
default:
/* Future: support kernel segments so that drivers
/* Future: support kernel segments so that drivers
...
@@ -114,9 +171,10 @@ static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
...
@@ -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
);
pr_debug
(
"invalid region access at %016lx
\n
"
,
ea
);
return
1
;
return
1
;
}
}
llp
=
mmu_psize_defs
[
psize
].
sllp
;
out_be64
(
&
priv2
->
slb_index_W
,
spu
->
slb_replace
);
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
);
out_be64
(
&
priv2
->
slb_esid_RW
,
esid
);
spu
->
slb_replace
++
;
spu
->
slb_replace
++
;
...
@@ -330,10 +388,6 @@ static void spu_free_irqs(struct spu *spu)
...
@@ -330,10 +388,6 @@ static void spu_free_irqs(struct spu *spu)
free_irq
(
spu
->
irqs
[
2
],
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
void
spu_init_channels
(
struct
spu
*
spu
)
{
{
static
const
struct
{
static
const
struct
{
...
@@ -593,6 +647,7 @@ static int __init create_spu(void *data)
...
@@ -593,6 +647,7 @@ static int __init create_spu(void *data)
struct
spu
*
spu
;
struct
spu
*
spu
;
int
ret
;
int
ret
;
static
int
number
;
static
int
number
;
unsigned
long
flags
;
ret
=
-
ENOMEM
;
ret
=
-
ENOMEM
;
spu
=
kzalloc
(
sizeof
(
*
spu
),
GFP_KERNEL
);
spu
=
kzalloc
(
sizeof
(
*
spu
),
GFP_KERNEL
);
...
@@ -620,8 +675,10 @@ static int __init create_spu(void *data)
...
@@ -620,8 +675,10 @@ static int __init create_spu(void *data)
goto
out_free_irqs
;
goto
out_free_irqs
;
mutex_lock
(
&
spu_mutex
);
mutex_lock
(
&
spu_mutex
);
spin_lock_irqsave
(
&
spu_list_lock
,
flags
);
list_add
(
&
spu
->
list
,
&
spu_list
[
spu
->
node
]);
list_add
(
&
spu
->
list
,
&
spu_list
[
spu
->
node
]);
list_add
(
&
spu
->
full_list
,
&
spu_full_list
);
list_add
(
&
spu
->
full_list
,
&
spu_full_list
);
spin_unlock_irqrestore
(
&
spu_list_lock
,
flags
);
mutex_unlock
(
&
spu_mutex
);
mutex_unlock
(
&
spu_mutex
);
goto
out
;
goto
out
;
...
...
arch/powerpc/platforms/cell/spufs/file.c
View file @
f57e8430
...
@@ -63,8 +63,8 @@ static ssize_t
...
@@ -63,8 +63,8 @@ static ssize_t
spufs_mem_read
(
struct
file
*
file
,
char
__user
*
buffer
,
spufs_mem_read
(
struct
file
*
file
,
char
__user
*
buffer
,
size_t
size
,
loff_t
*
pos
)
size_t
size
,
loff_t
*
pos
)
{
{
int
ret
;
struct
spu_context
*
ctx
=
file
->
private_data
;
struct
spu_context
*
ctx
=
file
->
private_data
;
ssize_t
ret
;
spu_acquire
(
ctx
);
spu_acquire
(
ctx
);
ret
=
__spufs_mem_read
(
ctx
,
buffer
,
size
,
pos
);
ret
=
__spufs_mem_read
(
ctx
,
buffer
,
size
,
pos
);
...
@@ -74,25 +74,29 @@ spufs_mem_read(struct file *file, char __user *buffer,
...
@@ -74,25 +74,29 @@ spufs_mem_read(struct file *file, char __user *buffer,
static
ssize_t
static
ssize_t
spufs_mem_write
(
struct
file
*
file
,
const
char
__user
*
buffer
,
spufs_mem_write
(
struct
file
*
file
,
const
char
__user
*
buffer
,
size_t
size
,
loff_t
*
pos
)
size_t
size
,
loff_t
*
p
p
os
)
{
{
struct
spu_context
*
ctx
=
file
->
private_data
;
struct
spu_context
*
ctx
=
file
->
private_data
;
char
*
local_store
;
char
*
local_store
;
loff_t
pos
=
*
ppos
;
int
ret
;
int
ret
;
size
=
min_t
(
ssize_t
,
LS_SIZE
-
*
pos
,
size
);
if
(
pos
<
0
)
if
(
size
<=
0
)
return
-
EINVAL
;
if
(
pos
>
LS_SIZE
)
return
-
EFBIG
;
return
-
EFBIG
;
*
pos
+=
size
;
if
(
size
>
LS_SIZE
-
pos
)
size
=
LS_SIZE
-
pos
;
spu_acquire
(
ctx
);
spu_acquire
(
ctx
);
local_store
=
ctx
->
ops
->
get_ls
(
ctx
);
local_store
=
ctx
->
ops
->
get_ls
(
ctx
);
ret
=
copy_from_user
(
local_store
+
*
pos
-
size
,
ret
=
copy_from_user
(
local_store
+
pos
,
buffer
,
size
);
buffer
,
size
)
?
-
EFAULT
:
size
;
spu_release
(
ctx
);
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
,
static
unsigned
long
spufs_mem_mmap_nopfn
(
struct
vm_area_struct
*
vma
,
...
...
arch/powerpc/platforms/cell/spufs/run.c
View file @
f57e8430
...
@@ -143,7 +143,7 @@ static inline int spu_run_init(struct spu_context *ctx, u32 * npc)
...
@@ -143,7 +143,7 @@ static inline int spu_run_init(struct spu_context *ctx, u32 * npc)
int
ret
;
int
ret
;
unsigned
long
runcntl
=
SPU_RUNCNTL_RUNNABLE
;
unsigned
long
runcntl
=
SPU_RUNCNTL_RUNNABLE
;
ret
=
spu_acquire_runnable
(
ctx
,
SPU_ACTIVATE_NOWAKE
);
ret
=
spu_acquire_runnable
(
ctx
,
0
);
if
(
ret
)
if
(
ret
)
return
ret
;
return
ret
;
...
@@ -155,7 +155,7 @@ static inline int spu_run_init(struct spu_context *ctx, u32 * npc)
...
@@ -155,7 +155,7 @@ static inline int spu_run_init(struct spu_context *ctx, u32 * npc)
spu_release
(
ctx
);
spu_release
(
ctx
);
ret
=
spu_setup_isolated
(
ctx
);
ret
=
spu_setup_isolated
(
ctx
);
if
(
!
ret
)
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
/* if userspace has set the runcntrl register (eg, to issue an
...
...
arch/powerpc/platforms/cell/spufs/sched.c
View file @
f57e8430
...
@@ -127,14 +127,6 @@ static void spu_remove_from_active_list(struct spu *spu)
...
@@ -127,14 +127,6 @@ static void spu_remove_from_active_list(struct spu *spu)
mutex_unlock
(
&
spu_prio
->
active_mutex
[
node
]);
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
BLOCKING_NOTIFIER_HEAD
(
spu_switch_notifier
);
static
void
spu_switch_notify
(
struct
spu
*
spu
,
struct
spu_context
*
ctx
)
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)
...
@@ -167,8 +159,7 @@ static void spu_bind_context(struct spu *spu, struct spu_context *ctx)
ctx
->
spu
=
spu
;
ctx
->
spu
=
spu
;
ctx
->
ops
=
&
spu_hw_ops
;
ctx
->
ops
=
&
spu_hw_ops
;
spu
->
pid
=
current
->
pid
;
spu
->
pid
=
current
->
pid
;
spu
->
mm
=
ctx
->
owner
;
spu_associate_mm
(
spu
,
ctx
->
owner
);
mm_needs_global_tlbie
(
spu
->
mm
);
spu
->
ibox_callback
=
spufs_ibox_callback
;
spu
->
ibox_callback
=
spufs_ibox_callback
;
spu
->
wbox_callback
=
spufs_wbox_callback
;
spu
->
wbox_callback
=
spufs_wbox_callback
;
spu
->
stop_callback
=
spufs_stop_callback
;
spu
->
stop_callback
=
spufs_stop_callback
;
...
@@ -205,7 +196,7 @@ static void spu_unbind_context(struct spu *spu, struct spu_context *ctx)
...
@@ -205,7 +196,7 @@ static void spu_unbind_context(struct spu *spu, struct spu_context *ctx)
spu
->
stop_callback
=
NULL
;
spu
->
stop_callback
=
NULL
;
spu
->
mfc_callback
=
NULL
;
spu
->
mfc_callback
=
NULL
;
spu
->
dma_callback
=
NULL
;
spu
->
dma_callback
=
NULL
;
spu
->
mm
=
NULL
;
spu
_associate_mm
(
spu
,
NULL
)
;
spu
->
pid
=
0
;
spu
->
pid
=
0
;
ctx
->
ops
=
&
spu_backing_ops
;
ctx
->
ops
=
&
spu_backing_ops
;
ctx
->
spu
=
NULL
;
ctx
->
spu
=
NULL
;
...
@@ -263,7 +254,6 @@ static void spu_prio_wait(struct spu_context *ctx)
...
@@ -263,7 +254,6 @@ static void spu_prio_wait(struct spu_context *ctx)
{
{
DEFINE_WAIT
(
wait
);
DEFINE_WAIT
(
wait
);
set_bit
(
SPU_SCHED_WAKE
,
&
ctx
->
sched_flags
);
prepare_to_wait_exclusive
(
&
ctx
->
stop_wq
,
&
wait
,
TASK_INTERRUPTIBLE
);
prepare_to_wait_exclusive
(
&
ctx
->
stop_wq
,
&
wait
,
TASK_INTERRUPTIBLE
);
if
(
!
signal_pending
(
current
))
{
if
(
!
signal_pending
(
current
))
{
mutex_unlock
(
&
ctx
->
state_mutex
);
mutex_unlock
(
&
ctx
->
state_mutex
);
...
@@ -272,7 +262,6 @@ static void spu_prio_wait(struct spu_context *ctx)
...
@@ -272,7 +262,6 @@ static void spu_prio_wait(struct spu_context *ctx)
}
}
__set_current_state
(
TASK_RUNNING
);
__set_current_state
(
TASK_RUNNING
);
remove_wait_queue
(
&
ctx
->
stop_wq
,
&
wait
);
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)
...
@@ -292,7 +281,7 @@ static void spu_reschedule(struct spu *spu)
best
=
sched_find_first_bit
(
spu_prio
->
bitmap
);
best
=
sched_find_first_bit
(
spu_prio
->
bitmap
);
if
(
best
<
MAX_PRIO
)
{
if
(
best
<
MAX_PRIO
)
{
struct
spu_context
*
ctx
=
spu_grab_context
(
best
);
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
);
wake_up
(
&
ctx
->
stop_wq
);
}
}
spin_unlock
(
&
spu_prio
->
runq_lock
);
spin_unlock
(
&
spu_prio
->
runq_lock
);
...
@@ -414,7 +403,6 @@ int spu_activate(struct spu_context *ctx, unsigned long flags)
...
@@ -414,7 +403,6 @@ int spu_activate(struct spu_context *ctx, unsigned long flags)
}
}
spu_add_to_rq
(
ctx
);
spu_add_to_rq
(
ctx
);
if
(
!
(
flags
&
SPU_ACTIVATE_NOWAKE
))
spu_prio_wait
(
ctx
);
spu_prio_wait
(
ctx
);
spu_del_from_rq
(
ctx
);
spu_del_from_rq
(
ctx
);
}
while
(
!
signal_pending
(
current
));
}
while
(
!
signal_pending
(
current
));
...
...
arch/powerpc/platforms/cell/spufs/spufs.h
View file @
f57e8430
...
@@ -41,7 +41,7 @@ struct spu_gang;
...
@@ -41,7 +41,7 @@ struct spu_gang;
/* ctx->sched_flags */
/* ctx->sched_flags */
enum
{
enum
{
SPU_SCHED_WAKE
=
0
,
SPU_SCHED_WAKE
=
0
,
/* currently unused */
};
};
struct
spu_context
{
struct
spu_context
{
...
@@ -191,9 +191,7 @@ void spu_forget(struct spu_context *ctx);
...
@@ -191,9 +191,7 @@ void spu_forget(struct spu_context *ctx);
int
spu_acquire_runnable
(
struct
spu_context
*
ctx
,
unsigned
long
flags
);
int
spu_acquire_runnable
(
struct
spu_context
*
ctx
,
unsigned
long
flags
);
void
spu_acquire_saved
(
struct
spu_context
*
ctx
);
void
spu_acquire_saved
(
struct
spu_context
*
ctx
);
int
spu_acquire_exclusive
(
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
);
int
spu_activate
(
struct
spu_context
*
ctx
,
unsigned
long
flags
);
void
spu_deactivate
(
struct
spu_context
*
ctx
);
void
spu_deactivate
(
struct
spu_context
*
ctx
);
void
spu_yield
(
struct
spu_context
*
ctx
);
void
spu_yield
(
struct
spu_context
*
ctx
);
...
...
arch/powerpc/platforms/cell/spufs/switch.c
View file @
f57e8430
...
@@ -468,26 +468,6 @@ static inline void wait_purge_complete(struct spu_state *csa, struct spu *spu)
...
@@ -468,26 +468,6 @@ static inline void wait_purge_complete(struct spu_state *csa, struct spu *spu)
MFC_CNTL_PURGE_DMA_COMPLETE
);
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
)
static
inline
void
setup_mfc_sr1
(
struct
spu_state
*
csa
,
struct
spu
*
spu
)
{
{
/* Save, Step 30:
/* Save, Step 30:
...
@@ -708,20 +688,6 @@ static inline void resume_mfc_queue(struct spu_state *csa, struct spu *spu)
...
@@ -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
);
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
])
static
inline
void
get_kernel_slb
(
u64
ea
,
u64
slb
[
2
])
{
{
u64
llp
;
u64
llp
;
...
@@ -765,7 +731,7 @@ static inline void setup_mfc_slbs(struct spu_state *csa, struct spu *spu)
...
@@ -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
* MFC_SR1[R]=1 (in other words, assume that
* translation is desired by OS environment).
* 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
)
&
spu_save_code
[
0
],
code_slb
);
get_kernel_slb
((
unsigned
long
)
csa
->
lscsa
,
lscsa_slb
);
get_kernel_slb
((
unsigned
long
)
csa
->
lscsa
,
lscsa_slb
);
load_mfc_slb
(
spu
,
code_slb
,
0
);
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)
...
@@ -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
)
static
inline
void
restore_mfc_sr1
(
struct
spu_state
*
csa
,
struct
spu
*
spu
)
{
{
/* Restore, Step 69:
/* Restore, Step 69:
...
@@ -1875,7 +1820,6 @@ static void save_csa(struct spu_state *prev, struct spu *spu)
...
@@ -1875,7 +1820,6 @@ static void save_csa(struct spu_state *prev, struct spu *spu)
set_mfc_tclass_id
(
prev
,
spu
);
/* Step 26. */
set_mfc_tclass_id
(
prev
,
spu
);
/* Step 26. */
purge_mfc_queue
(
prev
,
spu
);
/* Step 27. */
purge_mfc_queue
(
prev
,
spu
);
/* Step 27. */
wait_purge_complete
(
prev
,
spu
);
/* Step 28. */
wait_purge_complete
(
prev
,
spu
);
/* Step 28. */
save_mfc_slbs
(
prev
,
spu
);
/* Step 29. */
setup_mfc_sr1
(
prev
,
spu
);
/* Step 30. */
setup_mfc_sr1
(
prev
,
spu
);
/* Step 30. */
save_spu_npc
(
prev
,
spu
);
/* Step 31. */
save_spu_npc
(
prev
,
spu
);
/* Step 31. */
save_spu_privcntl
(
prev
,
spu
);
/* Step 32. */
save_spu_privcntl
(
prev
,
spu
);
/* Step 32. */
...
@@ -1987,7 +1931,7 @@ static void harvest(struct spu_state *prev, struct spu *spu)
...
@@ -1987,7 +1931,7 @@ static void harvest(struct spu_state *prev, struct spu *spu)
reset_spu_privcntl
(
prev
,
spu
);
/* Step 16. */
reset_spu_privcntl
(
prev
,
spu
);
/* Step 16. */
reset_spu_lslr
(
prev
,
spu
);
/* Step 17. */
reset_spu_lslr
(
prev
,
spu
);
/* Step 17. */
setup_mfc_sr1
(
prev
,
spu
);
/* Step 18. */
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_part1
(
prev
,
spu
);
/* Step 20. */
reset_ch_part2
(
prev
,
spu
);
/* Step 21. */
reset_ch_part2
(
prev
,
spu
);
/* Step 21. */
enable_interrupts
(
prev
,
spu
);
/* Step 22. */
enable_interrupts
(
prev
,
spu
);
/* Step 22. */
...
@@ -2055,7 +1999,7 @@ static void restore_csa(struct spu_state *next, struct spu *spu)
...
@@ -2055,7 +1999,7 @@ static void restore_csa(struct spu_state *next, struct spu *spu)
restore_spu_mb
(
next
,
spu
);
/* Step 65. */
restore_spu_mb
(
next
,
spu
);
/* Step 65. */
check_ppu_mb_stat
(
next
,
spu
);
/* Step 66. */
check_ppu_mb_stat
(
next
,
spu
);
/* Step 66. */
check_ppuint_mb_stat
(
next
,
spu
);
/* Step 67. */
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_mfc_sr1
(
next
,
spu
);
/* Step 69. */
restore_other_spu_access
(
next
,
spu
);
/* Step 70. */
restore_other_spu_access
(
next
,
spu
);
/* Step 70. */
restore_spu_runcntl
(
next
,
spu
);
/* Step 71. */
restore_spu_runcntl
(
next
,
spu
);
/* Step 71. */
...
...
arch/powerpc/platforms/ps3/mm.c
View file @
f57e8430
...
@@ -294,7 +294,7 @@ static int __init ps3_mm_add_memory(void)
...
@@ -294,7 +294,7 @@ static int __init ps3_mm_add_memory(void)
unsigned
long
nr_pages
;
unsigned
long
nr_pages
;
if
(
!
firmware_has_feature
(
FW_FEATURE_PS3_LV1
))
if
(
!
firmware_has_feature
(
FW_FEATURE_PS3_LV1
))
return
0
;
return
-
ENODEV
;
BUG_ON
(
!
mem_init_done
);
BUG_ON
(
!
mem_init_done
);
...
...
arch/powerpc/platforms/ps3/system-bus.c
View file @
f57e8430
...
@@ -172,7 +172,7 @@ int __init ps3_system_bus_init(void)
...
@@ -172,7 +172,7 @@ int __init ps3_system_bus_init(void)
int
result
;
int
result
;
if
(
!
firmware_has_feature
(
FW_FEATURE_PS3_LV1
))
if
(
!
firmware_has_feature
(
FW_FEATURE_PS3_LV1
))
return
0
;
return
-
ENODEV
;
result
=
bus_register
(
&
ps3_system_bus_type
);
result
=
bus_register
(
&
ps3_system_bus_type
);
BUG_ON
(
result
);
BUG_ON
(
result
);
...
...
drivers/ps3/ps3av.c
View file @
f57e8430
...
@@ -24,6 +24,8 @@
...
@@ -24,6 +24,8 @@
#include <linux/reboot.h>
#include <linux/reboot.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/ioctl.h>
#include <linux/ioctl.h>
#include <asm/firmware.h>
#include <asm/lv1call.h>
#include <asm/lv1call.h>
#include <asm/ps3av.h>
#include <asm/ps3av.h>
#include <asm/ps3.h>
#include <asm/ps3.h>
...
@@ -947,7 +949,12 @@ static struct ps3_vuart_port_driver ps3av_driver = {
...
@@ -947,7 +949,12 @@ static struct ps3_vuart_port_driver ps3av_driver = {
static
int
ps3av_module_init
(
void
)
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
)
{
if
(
error
)
{
printk
(
KERN_ERR
printk
(
KERN_ERR
"%s: ps3_vuart_port_driver_register failed %d
\n
"
,
"%s: ps3_vuart_port_driver_register failed %d
\n
"
,
...
...
drivers/ps3/sys-manager.c
View file @
f57e8430
...
@@ -22,7 +22,10 @@
...
@@ -22,7 +22,10 @@
#include <linux/module.h>
#include <linux/module.h>
#include <linux/workqueue.h>
#include <linux/workqueue.h>
#include <linux/reboot.h>
#include <linux/reboot.h>
#include <asm/firmware.h>
#include <asm/ps3.h>
#include <asm/ps3.h>
#include "vuart.h"
#include "vuart.h"
MODULE_AUTHOR
(
"Sony Corporation"
);
MODULE_AUTHOR
(
"Sony Corporation"
);
...
@@ -598,6 +601,9 @@ static struct ps3_vuart_port_driver ps3_sys_manager = {
...
@@ -598,6 +601,9 @@ static struct ps3_vuart_port_driver ps3_sys_manager = {
static
int
__init
ps3_sys_manager_init
(
void
)
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
);
return
ps3_vuart_port_driver_register
(
&
ps3_sys_manager
);
}
}
...
...
drivers/ps3/vuart.c
View file @
f57e8430
...
@@ -1031,7 +1031,7 @@ int __init ps3_vuart_bus_init(void)
...
@@ -1031,7 +1031,7 @@ int __init ps3_vuart_bus_init(void)
pr_debug
(
"%s:%d:
\n
"
,
__func__
,
__LINE__
);
pr_debug
(
"%s:%d:
\n
"
,
__func__
,
__LINE__
);
if
(
!
firmware_has_feature
(
FW_FEATURE_PS3_LV1
))
if
(
!
firmware_has_feature
(
FW_FEATURE_PS3_LV1
))
return
0
;
return
-
ENODEV
;
init_MUTEX
(
&
vuart_bus_priv
.
probe_mutex
);
init_MUTEX
(
&
vuart_bus_priv
.
probe_mutex
);
result
=
bus_register
(
&
ps3_vuart_bus
);
result
=
bus_register
(
&
ps3_vuart_bus
);
...
...
include/asm-powerpc/spu.h
View file @
f57e8430
...
@@ -165,6 +165,13 @@ int spu_irq_class_0_bottom(struct spu *spu);
...
@@ -165,6 +165,13 @@ int spu_irq_class_0_bottom(struct spu *spu);
int
spu_irq_class_1_bottom
(
struct
spu
*
spu
);
int
spu_irq_class_1_bottom
(
struct
spu
*
spu
);
void
spu_irq_setaffinity
(
struct
spu
*
spu
,
int
cpu
);
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 */
/* system callbacks from the SPU */
struct
spu_syscall_block
{
struct
spu_syscall_block
{
u64
nr_ret
;
u64
nr_ret
;
...
...
include/asm-powerpc/spu_csa.h
View file @
f57e8430
...
@@ -221,8 +221,6 @@ struct spu_priv2_collapsed {
...
@@ -221,8 +221,6 @@ struct spu_priv2_collapsed {
* @spu_chnlcnt_RW: Array of saved channel counts.
* @spu_chnlcnt_RW: Array of saved channel counts.
* @spu_chnldata_RW: Array of saved channel data.
* @spu_chnldata_RW: Array of saved channel data.
* @suspend_time: Time stamp when decrementer disabled.
* @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
* Structure representing the whole of the SPU
* context save area (CSA). This struct contains
* context save area (CSA). This struct contains
...
@@ -245,8 +243,6 @@ struct spu_state {
...
@@ -245,8 +243,6 @@ struct spu_state {
u32
spu_mailbox_data
[
4
];
u32
spu_mailbox_data
[
4
];
u32
pu_mailbox_data
[
1
];
u32
pu_mailbox_data
[
1
];
unsigned
long
suspend_time
;
unsigned
long
suspend_time
;
u64
slb_esid_RW
[
8
];
u64
slb_vsid_RW
[
8
];
spinlock_t
register_lock
;
spinlock_t
register_lock
;
};
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment