diff options
author | Avi Kivity <avi@redhat.com> | 2012-08-05 06:25:10 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2012-08-05 06:25:10 -0400 |
commit | fe56097b23b1303b894eefd91582e4a64247d03f (patch) | |
tree | 4b3ab60eb19e8cfe2884e2da66dd4e4e25ae2274 /arch/powerpc | |
parent | e115676e042f4d9268c6b6d8cb7dc962aa6cfd7d (diff) | |
parent | e7882d6c40874a5b5033ca85f7508a602a60b662 (diff) |
Merge remote-tracking branch 'upstream' into next
- bring back critical fixes (esp. aa67f6096c19bc)
- provide an updated base for development
* upstream: (4334 commits)
missed mnt_drop_write() in do_dentry_open()
UBIFS: nuke pdflush from comments
gfs2: nuke pdflush from comments
drbd: nuke pdflush from comments
nilfs2: nuke write_super from comments
hfs: nuke write_super from comments
vfs: nuke pdflush from comments
jbd/jbd2: nuke write_super from comments
btrfs: nuke pdflush from comments
btrfs: nuke write_super from comments
ext4: nuke pdflush from comments
ext4: nuke write_super from comments
ext3: nuke write_super from comments
Documentation: fix the VM knobs descritpion WRT pdflush
Documentation: get rid of write_super
vfs: kill write_super and sync_supers
ACPI processor: Fix tick_broadcast_mask online/offline regression
ACPI: Only count valid srat memory structures
ACPI: Untangle a return statement for better readability
Linux 3.6-rc1
...
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/powerpc')
29 files changed, 273 insertions, 292 deletions
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 9a5d3cdc3e1..352f416269c 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -115,11 +115,13 @@ config PPC | |||
115 | select HAVE_OPROFILE | 115 | select HAVE_OPROFILE |
116 | select HAVE_SYSCALL_WRAPPERS if PPC64 | 116 | select HAVE_SYSCALL_WRAPPERS if PPC64 |
117 | select GENERIC_ATOMIC64 if PPC32 | 117 | select GENERIC_ATOMIC64 if PPC32 |
118 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | ||
118 | select HAVE_IRQ_WORK | 119 | select HAVE_IRQ_WORK |
119 | select HAVE_PERF_EVENTS | 120 | select HAVE_PERF_EVENTS |
120 | select HAVE_REGS_AND_STACK_ACCESS_API | 121 | select HAVE_REGS_AND_STACK_ACCESS_API |
121 | select HAVE_HW_BREAKPOINT if PERF_EVENTS && PPC_BOOK3S_64 | 122 | select HAVE_HW_BREAKPOINT if PERF_EVENTS && PPC_BOOK3S_64 |
122 | select HAVE_GENERIC_HARDIRQS | 123 | select HAVE_GENERIC_HARDIRQS |
124 | select ARCH_WANT_IPC_PARSE_VERSION | ||
123 | select SPARSE_IRQ | 125 | select SPARSE_IRQ |
124 | select IRQ_PER_CPU | 126 | select IRQ_PER_CPU |
125 | select IRQ_DOMAIN | 127 | select IRQ_DOMAIN |
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 950d1f7a5a3..159e94f4b22 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile | |||
@@ -149,7 +149,6 @@ core-$(CONFIG_KVM) += arch/powerpc/kvm/ | |||
149 | core-$(CONFIG_PERF_EVENTS) += arch/powerpc/perf/ | 149 | core-$(CONFIG_PERF_EVENTS) += arch/powerpc/perf/ |
150 | 150 | ||
151 | drivers-$(CONFIG_OPROFILE) += arch/powerpc/oprofile/ | 151 | drivers-$(CONFIG_OPROFILE) += arch/powerpc/oprofile/ |
152 | drivers-$(CONFIG_CRYPTO_DEV_NX) += drivers/crypto/nx/ | ||
153 | 152 | ||
154 | # Default to zImage, override when needed | 153 | # Default to zImage, override when needed |
155 | all: zImage | 154 | all: zImage |
diff --git a/arch/powerpc/boot/dts/p2020rdb-pc_32b.dts b/arch/powerpc/boot/dts/p2020rdb-pc_32b.dts index 852e5b27485..57573bd52ca 100644 --- a/arch/powerpc/boot/dts/p2020rdb-pc_32b.dts +++ b/arch/powerpc/boot/dts/p2020rdb-pc_32b.dts | |||
@@ -56,7 +56,7 @@ | |||
56 | ranges = <0x0 0x0 0xffe00000 0x100000>; | 56 | ranges = <0x0 0x0 0xffe00000 0x100000>; |
57 | }; | 57 | }; |
58 | 58 | ||
59 | pci0: pcie@ffe08000 { | 59 | pci2: pcie@ffe08000 { |
60 | reg = <0 0xffe08000 0 0x1000>; | 60 | reg = <0 0xffe08000 0 0x1000>; |
61 | status = "disabled"; | 61 | status = "disabled"; |
62 | }; | 62 | }; |
@@ -76,7 +76,7 @@ | |||
76 | }; | 76 | }; |
77 | }; | 77 | }; |
78 | 78 | ||
79 | pci2: pcie@ffe0a000 { | 79 | pci0: pcie@ffe0a000 { |
80 | reg = <0 0xffe0a000 0 0x1000>; | 80 | reg = <0 0xffe0a000 0 0x1000>; |
81 | ranges = <0x2000000 0x0 0xe0000000 0 0x80000000 0x0 0x20000000 | 81 | ranges = <0x2000000 0x0 0xe0000000 0 0x80000000 0x0 0x20000000 |
82 | 0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; | 82 | 0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; |
diff --git a/arch/powerpc/boot/dts/p2020rdb-pc_36b.dts b/arch/powerpc/boot/dts/p2020rdb-pc_36b.dts index b5a56ca51cf..470247ea68b 100644 --- a/arch/powerpc/boot/dts/p2020rdb-pc_36b.dts +++ b/arch/powerpc/boot/dts/p2020rdb-pc_36b.dts | |||
@@ -56,7 +56,7 @@ | |||
56 | ranges = <0x0 0xf 0xffe00000 0x100000>; | 56 | ranges = <0x0 0xf 0xffe00000 0x100000>; |
57 | }; | 57 | }; |
58 | 58 | ||
59 | pci0: pcie@fffe08000 { | 59 | pci2: pcie@fffe08000 { |
60 | reg = <0xf 0xffe08000 0 0x1000>; | 60 | reg = <0xf 0xffe08000 0 0x1000>; |
61 | status = "disabled"; | 61 | status = "disabled"; |
62 | }; | 62 | }; |
@@ -76,7 +76,7 @@ | |||
76 | }; | 76 | }; |
77 | }; | 77 | }; |
78 | 78 | ||
79 | pci2: pcie@fffe0a000 { | 79 | pci0: pcie@fffe0a000 { |
80 | reg = <0xf 0xffe0a000 0 0x1000>; | 80 | reg = <0xf 0xffe0a000 0 0x1000>; |
81 | ranges = <0x2000000 0x0 0xe0000000 0xc 0x00000000 0x0 0x20000000 | 81 | ranges = <0x2000000 0x0 0xe0000000 0xc 0x00000000 0x0 0x20000000 |
82 | 0x1000000 0x0 0x00000000 0xf 0xffc00000 0x0 0x10000>; | 82 | 0x1000000 0x0 0x00000000 0xf 0xffc00000 0x0 0x10000>; |
diff --git a/arch/powerpc/boot/dts/p3041ds.dts b/arch/powerpc/boot/dts/p3041ds.dts index 22a215e9416..6cdcadc80c3 100644 --- a/arch/powerpc/boot/dts/p3041ds.dts +++ b/arch/powerpc/boot/dts/p3041ds.dts | |||
@@ -58,7 +58,7 @@ | |||
58 | #size-cells = <1>; | 58 | #size-cells = <1>; |
59 | compatible = "spansion,s25sl12801"; | 59 | compatible = "spansion,s25sl12801"; |
60 | reg = <0>; | 60 | reg = <0>; |
61 | spi-max-frequency = <40000000>; /* input clock */ | 61 | spi-max-frequency = <35000000>; /* input clock */ |
62 | partition@u-boot { | 62 | partition@u-boot { |
63 | label = "u-boot"; | 63 | label = "u-boot"; |
64 | reg = <0x00000000 0x00100000>; | 64 | reg = <0x00000000 0x00100000>; |
diff --git a/arch/powerpc/configs/chroma_defconfig b/arch/powerpc/configs/chroma_defconfig index b1f9597fe31..29bb11ec6c6 100644 --- a/arch/powerpc/configs/chroma_defconfig +++ b/arch/powerpc/configs/chroma_defconfig | |||
@@ -21,8 +21,8 @@ CONFIG_CGROUP_DEVICE=y | |||
21 | CONFIG_CPUSETS=y | 21 | CONFIG_CPUSETS=y |
22 | CONFIG_CGROUP_CPUACCT=y | 22 | CONFIG_CGROUP_CPUACCT=y |
23 | CONFIG_RESOURCE_COUNTERS=y | 23 | CONFIG_RESOURCE_COUNTERS=y |
24 | CONFIG_CGROUP_MEM_RES_CTLR=y | 24 | CONFIG_CGROUP_MEMCG=y |
25 | CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y | 25 | CONFIG_CGROUP_MEMCG_SWAP=y |
26 | CONFIG_NAMESPACES=y | 26 | CONFIG_NAMESPACES=y |
27 | CONFIG_RELAY=y | 27 | CONFIG_RELAY=y |
28 | CONFIG_BLK_DEV_INITRD=y | 28 | CONFIG_BLK_DEV_INITRD=y |
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig index 07b7f2af2dc..15130066e5e 100644 --- a/arch/powerpc/configs/g5_defconfig +++ b/arch/powerpc/configs/g5_defconfig | |||
@@ -1,10 +1,8 @@ | |||
1 | CONFIG_PPC64=y | ||
2 | CONFIG_ALTIVEC=y | ||
3 | CONFIG_SMP=y | ||
4 | CONFIG_NR_CPUS=4 | ||
5 | CONFIG_EXPERIMENTAL=y | 1 | CONFIG_EXPERIMENTAL=y |
6 | CONFIG_SYSVIPC=y | 2 | CONFIG_SYSVIPC=y |
7 | CONFIG_POSIX_MQUEUE=y | 3 | CONFIG_POSIX_MQUEUE=y |
4 | CONFIG_NO_HZ=y | ||
5 | CONFIG_HIGH_RES_TIMERS=y | ||
8 | CONFIG_IKCONFIG=y | 6 | CONFIG_IKCONFIG=y |
9 | CONFIG_IKCONFIG_PROC=y | 7 | CONFIG_IKCONFIG_PROC=y |
10 | CONFIG_BLK_DEV_INITRD=y | 8 | CONFIG_BLK_DEV_INITRD=y |
@@ -15,16 +13,15 @@ CONFIG_MODULES=y | |||
15 | CONFIG_MODULE_UNLOAD=y | 13 | CONFIG_MODULE_UNLOAD=y |
16 | CONFIG_MODVERSIONS=y | 14 | CONFIG_MODVERSIONS=y |
17 | CONFIG_MODULE_SRCVERSION_ALL=y | 15 | CONFIG_MODULE_SRCVERSION_ALL=y |
18 | # CONFIG_PPC_PSERIES is not set | 16 | CONFIG_PARTITION_ADVANCED=y |
17 | CONFIG_MAC_PARTITION=y | ||
18 | CONFIG_SMP=y | ||
19 | CONFIG_NR_CPUS=4 | ||
20 | CONFIG_KEXEC=y | ||
21 | # CONFIG_RELOCATABLE is not set | ||
19 | CONFIG_CPU_FREQ=y | 22 | CONFIG_CPU_FREQ=y |
20 | CONFIG_CPU_FREQ_GOV_POWERSAVE=y | 23 | CONFIG_CPU_FREQ_GOV_POWERSAVE=y |
21 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | 24 | CONFIG_CPU_FREQ_GOV_USERSPACE=y |
22 | CONFIG_CPU_FREQ_PMAC64=y | ||
23 | CONFIG_NO_HZ=y | ||
24 | CONFIG_HIGH_RES_TIMERS=y | ||
25 | CONFIG_KEXEC=y | ||
26 | CONFIG_IRQ_ALL_CPUS=y | ||
27 | # CONFIG_MIGRATION is not set | ||
28 | CONFIG_PCI_MSI=y | 25 | CONFIG_PCI_MSI=y |
29 | CONFIG_NET=y | 26 | CONFIG_NET=y |
30 | CONFIG_PACKET=y | 27 | CONFIG_PACKET=y |
@@ -52,7 +49,6 @@ CONFIG_NF_CT_NETLINK=m | |||
52 | CONFIG_NF_CONNTRACK_IPV4=m | 49 | CONFIG_NF_CONNTRACK_IPV4=m |
53 | CONFIG_IP_NF_QUEUE=m | 50 | CONFIG_IP_NF_QUEUE=m |
54 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | 51 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" |
55 | CONFIG_PROC_DEVICETREE=y | ||
56 | CONFIG_BLK_DEV_LOOP=y | 52 | CONFIG_BLK_DEV_LOOP=y |
57 | CONFIG_BLK_DEV_NBD=m | 53 | CONFIG_BLK_DEV_NBD=m |
58 | CONFIG_BLK_DEV_RAM=y | 54 | CONFIG_BLK_DEV_RAM=y |
@@ -60,8 +56,6 @@ CONFIG_BLK_DEV_RAM_SIZE=65536 | |||
60 | CONFIG_CDROM_PKTCDVD=m | 56 | CONFIG_CDROM_PKTCDVD=m |
61 | CONFIG_IDE=y | 57 | CONFIG_IDE=y |
62 | CONFIG_BLK_DEV_IDECD=y | 58 | CONFIG_BLK_DEV_IDECD=y |
63 | CONFIG_BLK_DEV_IDE_PMAC=y | ||
64 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | ||
65 | CONFIG_BLK_DEV_SD=y | 59 | CONFIG_BLK_DEV_SD=y |
66 | CONFIG_CHR_DEV_ST=y | 60 | CONFIG_CHR_DEV_ST=y |
67 | CONFIG_BLK_DEV_SR=y | 61 | CONFIG_BLK_DEV_SR=y |
@@ -85,33 +79,24 @@ CONFIG_DM_CRYPT=m | |||
85 | CONFIG_DM_SNAPSHOT=m | 79 | CONFIG_DM_SNAPSHOT=m |
86 | CONFIG_DM_MIRROR=m | 80 | CONFIG_DM_MIRROR=m |
87 | CONFIG_DM_ZERO=m | 81 | CONFIG_DM_ZERO=m |
88 | CONFIG_IEEE1394=y | 82 | CONFIG_MACINTOSH_DRIVERS=y |
89 | CONFIG_IEEE1394_OHCI1394=y | ||
90 | CONFIG_IEEE1394_SBP2=m | ||
91 | CONFIG_IEEE1394_ETH1394=m | ||
92 | CONFIG_IEEE1394_RAWIO=y | ||
93 | CONFIG_IEEE1394_VIDEO1394=m | ||
94 | CONFIG_IEEE1394_DV1394=m | ||
95 | CONFIG_ADB_PMU=y | ||
96 | CONFIG_PMAC_SMU=y | ||
97 | CONFIG_MAC_EMUMOUSEBTN=y | 83 | CONFIG_MAC_EMUMOUSEBTN=y |
98 | CONFIG_THERM_PM72=y | ||
99 | CONFIG_WINDFARM=y | ||
100 | CONFIG_WINDFARM_PM81=y | ||
101 | CONFIG_WINDFARM_PM91=y | ||
102 | CONFIG_WINDFARM_PM112=y | ||
103 | CONFIG_WINDFARM_PM121=y | ||
104 | CONFIG_NETDEVICES=y | 84 | CONFIG_NETDEVICES=y |
105 | CONFIG_DUMMY=m | ||
106 | CONFIG_BONDING=m | 85 | CONFIG_BONDING=m |
107 | CONFIG_TUN=m | 86 | CONFIG_DUMMY=m |
108 | CONFIG_NET_ETHERNET=y | ||
109 | CONFIG_MII=y | 87 | CONFIG_MII=y |
110 | CONFIG_SUNGEM=y | 88 | CONFIG_TUN=m |
111 | CONFIG_ACENIC=m | 89 | CONFIG_ACENIC=m |
112 | CONFIG_ACENIC_OMIT_TIGON_I=y | 90 | CONFIG_ACENIC_OMIT_TIGON_I=y |
113 | CONFIG_E1000=y | ||
114 | CONFIG_TIGON3=y | 91 | CONFIG_TIGON3=y |
92 | CONFIG_E1000=y | ||
93 | CONFIG_SUNGEM=y | ||
94 | CONFIG_PPP=m | ||
95 | CONFIG_PPP_BSDCOMP=m | ||
96 | CONFIG_PPP_DEFLATE=m | ||
97 | CONFIG_PPPOE=m | ||
98 | CONFIG_PPP_ASYNC=m | ||
99 | CONFIG_PPP_SYNC_TTY=m | ||
115 | CONFIG_USB_CATC=m | 100 | CONFIG_USB_CATC=m |
116 | CONFIG_USB_KAWETH=m | 101 | CONFIG_USB_KAWETH=m |
117 | CONFIG_USB_PEGASUS=m | 102 | CONFIG_USB_PEGASUS=m |
@@ -121,36 +106,24 @@ CONFIG_USB_USBNET=m | |||
121 | # CONFIG_USB_NET_NET1080 is not set | 106 | # CONFIG_USB_NET_NET1080 is not set |
122 | # CONFIG_USB_NET_CDC_SUBSET is not set | 107 | # CONFIG_USB_NET_CDC_SUBSET is not set |
123 | # CONFIG_USB_NET_ZAURUS is not set | 108 | # CONFIG_USB_NET_ZAURUS is not set |
124 | CONFIG_PPP=m | ||
125 | CONFIG_PPP_ASYNC=m | ||
126 | CONFIG_PPP_SYNC_TTY=m | ||
127 | CONFIG_PPP_DEFLATE=m | ||
128 | CONFIG_PPP_BSDCOMP=m | ||
129 | CONFIG_PPPOE=m | ||
130 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | 109 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set |
131 | CONFIG_INPUT_JOYDEV=m | 110 | CONFIG_INPUT_JOYDEV=m |
132 | CONFIG_INPUT_EVDEV=y | 111 | CONFIG_INPUT_EVDEV=y |
133 | # CONFIG_KEYBOARD_ATKBD is not set | ||
134 | # CONFIG_MOUSE_PS2 is not set | 112 | # CONFIG_MOUSE_PS2 is not set |
135 | # CONFIG_SERIO_I8042 is not set | ||
136 | # CONFIG_SERIO_SERPORT is not set | 113 | # CONFIG_SERIO_SERPORT is not set |
114 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
137 | # CONFIG_HW_RANDOM is not set | 115 | # CONFIG_HW_RANDOM is not set |
138 | CONFIG_GEN_RTC=y | 116 | CONFIG_GEN_RTC=y |
139 | CONFIG_RAW_DRIVER=y | 117 | CONFIG_RAW_DRIVER=y |
140 | CONFIG_I2C_CHARDEV=y | 118 | CONFIG_I2C_CHARDEV=y |
141 | # CONFIG_HWMON is not set | 119 | # CONFIG_HWMON is not set |
142 | CONFIG_AGP=m | 120 | CONFIG_AGP=y |
143 | CONFIG_AGP_UNINORTH=m | 121 | CONFIG_DRM=y |
122 | CONFIG_DRM_NOUVEAU=y | ||
144 | CONFIG_VIDEO_OUTPUT_CONTROL=m | 123 | CONFIG_VIDEO_OUTPUT_CONTROL=m |
145 | CONFIG_FB=y | ||
146 | CONFIG_FIRMWARE_EDID=y | 124 | CONFIG_FIRMWARE_EDID=y |
147 | CONFIG_FB_TILEBLITTING=y | 125 | CONFIG_FB_TILEBLITTING=y |
148 | CONFIG_FB_OF=y | ||
149 | CONFIG_FB_NVIDIA=y | ||
150 | CONFIG_FB_NVIDIA_I2C=y | ||
151 | CONFIG_FB_RADEON=y | 126 | CONFIG_FB_RADEON=y |
152 | # CONFIG_VGA_CONSOLE is not set | ||
153 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
154 | CONFIG_LOGO=y | 127 | CONFIG_LOGO=y |
155 | CONFIG_SOUND=m | 128 | CONFIG_SOUND=m |
156 | CONFIG_SND=m | 129 | CONFIG_SND=m |
@@ -158,15 +131,7 @@ CONFIG_SND_SEQUENCER=m | |||
158 | CONFIG_SND_MIXER_OSS=m | 131 | CONFIG_SND_MIXER_OSS=m |
159 | CONFIG_SND_PCM_OSS=m | 132 | CONFIG_SND_PCM_OSS=m |
160 | CONFIG_SND_SEQUENCER_OSS=y | 133 | CONFIG_SND_SEQUENCER_OSS=y |
161 | CONFIG_SND_POWERMAC=m | ||
162 | CONFIG_SND_AOA=m | ||
163 | CONFIG_SND_AOA_FABRIC_LAYOUT=m | ||
164 | CONFIG_SND_AOA_ONYX=m | ||
165 | CONFIG_SND_AOA_TAS=m | ||
166 | CONFIG_SND_AOA_TOONIE=m | ||
167 | CONFIG_SND_USB_AUDIO=m | 134 | CONFIG_SND_USB_AUDIO=m |
168 | CONFIG_HID_PID=y | ||
169 | CONFIG_USB_HIDDEV=y | ||
170 | CONFIG_HID_GYRATION=y | 135 | CONFIG_HID_GYRATION=y |
171 | CONFIG_LOGITECH_FF=y | 136 | CONFIG_LOGITECH_FF=y |
172 | CONFIG_HID_PANTHERLORD=y | 137 | CONFIG_HID_PANTHERLORD=y |
@@ -174,13 +139,12 @@ CONFIG_HID_PETALYNX=y | |||
174 | CONFIG_HID_SAMSUNG=y | 139 | CONFIG_HID_SAMSUNG=y |
175 | CONFIG_HID_SONY=y | 140 | CONFIG_HID_SONY=y |
176 | CONFIG_HID_SUNPLUS=y | 141 | CONFIG_HID_SUNPLUS=y |
142 | CONFIG_HID_PID=y | ||
143 | CONFIG_USB_HIDDEV=y | ||
177 | CONFIG_USB=y | 144 | CONFIG_USB=y |
178 | CONFIG_USB_DEVICEFS=y | ||
179 | CONFIG_USB_MON=y | 145 | CONFIG_USB_MON=y |
180 | CONFIG_USB_EHCI_HCD=y | 146 | CONFIG_USB_EHCI_HCD=y |
181 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
182 | CONFIG_USB_OHCI_HCD=y | 147 | CONFIG_USB_OHCI_HCD=y |
183 | CONFIG_USB_OHCI_HCD_PPC_OF_BE=y | ||
184 | CONFIG_USB_ACM=m | 148 | CONFIG_USB_ACM=m |
185 | CONFIG_USB_PRINTER=y | 149 | CONFIG_USB_PRINTER=y |
186 | CONFIG_USB_STORAGE=y | 150 | CONFIG_USB_STORAGE=y |
@@ -244,8 +208,6 @@ CONFIG_REISERFS_FS_POSIX_ACL=y | |||
244 | CONFIG_REISERFS_FS_SECURITY=y | 208 | CONFIG_REISERFS_FS_SECURITY=y |
245 | CONFIG_XFS_FS=m | 209 | CONFIG_XFS_FS=m |
246 | CONFIG_XFS_POSIX_ACL=y | 210 | CONFIG_XFS_POSIX_ACL=y |
247 | CONFIG_INOTIFY=y | ||
248 | CONFIG_AUTOFS_FS=m | ||
249 | CONFIG_ISO9660_FS=y | 211 | CONFIG_ISO9660_FS=y |
250 | CONFIG_JOLIET=y | 212 | CONFIG_JOLIET=y |
251 | CONFIG_ZISOFS=y | 213 | CONFIG_ZISOFS=y |
@@ -259,14 +221,12 @@ CONFIG_HFS_FS=m | |||
259 | CONFIG_HFSPLUS_FS=m | 221 | CONFIG_HFSPLUS_FS=m |
260 | CONFIG_CRAMFS=y | 222 | CONFIG_CRAMFS=y |
261 | CONFIG_NFS_FS=y | 223 | CONFIG_NFS_FS=y |
262 | CONFIG_NFS_V3=y | ||
263 | CONFIG_NFS_V3_ACL=y | 224 | CONFIG_NFS_V3_ACL=y |
264 | CONFIG_NFS_V4=y | 225 | CONFIG_NFS_V4=y |
265 | CONFIG_NFSD=y | 226 | CONFIG_NFSD=y |
266 | CONFIG_NFSD_V3_ACL=y | 227 | CONFIG_NFSD_V3_ACL=y |
267 | CONFIG_NFSD_V4=y | 228 | CONFIG_NFSD_V4=y |
268 | CONFIG_CIFS=m | 229 | CONFIG_CIFS=m |
269 | CONFIG_PARTITION_ADVANCED=y | ||
270 | CONFIG_NLS_CODEPAGE_437=y | 230 | CONFIG_NLS_CODEPAGE_437=y |
271 | CONFIG_NLS_CODEPAGE_1250=y | 231 | CONFIG_NLS_CODEPAGE_1250=y |
272 | CONFIG_NLS_CODEPAGE_1251=y | 232 | CONFIG_NLS_CODEPAGE_1251=y |
@@ -274,29 +234,23 @@ CONFIG_NLS_ASCII=y | |||
274 | CONFIG_NLS_ISO8859_1=y | 234 | CONFIG_NLS_ISO8859_1=y |
275 | CONFIG_NLS_ISO8859_15=y | 235 | CONFIG_NLS_ISO8859_15=y |
276 | CONFIG_NLS_UTF8=y | 236 | CONFIG_NLS_UTF8=y |
277 | CONFIG_CRC_T10DIF=y | ||
278 | CONFIG_LIBCRC32C=m | ||
279 | CONFIG_MAGIC_SYSRQ=y | 237 | CONFIG_MAGIC_SYSRQ=y |
238 | # CONFIG_UNUSED_SYMBOLS is not set | ||
280 | CONFIG_DEBUG_FS=y | 239 | CONFIG_DEBUG_FS=y |
281 | CONFIG_DEBUG_KERNEL=y | 240 | CONFIG_DEBUG_KERNEL=y |
282 | CONFIG_DEBUG_MUTEXES=y | 241 | CONFIG_DEBUG_MUTEXES=y |
283 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | ||
284 | CONFIG_LATENCYTOP=y | 242 | CONFIG_LATENCYTOP=y |
285 | CONFIG_SYSCTL_SYSCALL_CHECK=y | 243 | CONFIG_STRICT_DEVMEM=y |
286 | CONFIG_BOOTX_TEXT=y | ||
287 | CONFIG_CRYPTO_NULL=m | 244 | CONFIG_CRYPTO_NULL=m |
288 | CONFIG_CRYPTO_TEST=m | 245 | CONFIG_CRYPTO_TEST=m |
289 | CONFIG_CRYPTO_ECB=m | ||
290 | CONFIG_CRYPTO_PCBC=m | 246 | CONFIG_CRYPTO_PCBC=m |
291 | CONFIG_CRYPTO_HMAC=y | 247 | CONFIG_CRYPTO_HMAC=y |
292 | CONFIG_CRYPTO_MD4=m | ||
293 | CONFIG_CRYPTO_MICHAEL_MIC=m | 248 | CONFIG_CRYPTO_MICHAEL_MIC=m |
294 | CONFIG_CRYPTO_SHA256=m | 249 | CONFIG_CRYPTO_SHA256=m |
295 | CONFIG_CRYPTO_SHA512=m | 250 | CONFIG_CRYPTO_SHA512=m |
296 | CONFIG_CRYPTO_WP512=m | 251 | CONFIG_CRYPTO_WP512=m |
297 | CONFIG_CRYPTO_AES=m | 252 | CONFIG_CRYPTO_AES=m |
298 | CONFIG_CRYPTO_ANUBIS=m | 253 | CONFIG_CRYPTO_ANUBIS=m |
299 | CONFIG_CRYPTO_ARC4=m | ||
300 | CONFIG_CRYPTO_BLOWFISH=m | 254 | CONFIG_CRYPTO_BLOWFISH=m |
301 | CONFIG_CRYPTO_CAST5=m | 255 | CONFIG_CRYPTO_CAST5=m |
302 | CONFIG_CRYPTO_CAST6=m | 256 | CONFIG_CRYPTO_CAST6=m |
@@ -306,3 +260,6 @@ CONFIG_CRYPTO_TEA=m | |||
306 | CONFIG_CRYPTO_TWOFISH=m | 260 | CONFIG_CRYPTO_TWOFISH=m |
307 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 261 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
308 | # CONFIG_CRYPTO_HW is not set | 262 | # CONFIG_CRYPTO_HW is not set |
263 | # CONFIG_VIRTUALIZATION is not set | ||
264 | CONFIG_CRC_T10DIF=y | ||
265 | CONFIG_LIBCRC32C=m | ||
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig index f2fe0c2b41e..db27c82e054 100644 --- a/arch/powerpc/configs/ppc64_defconfig +++ b/arch/powerpc/configs/ppc64_defconfig | |||
@@ -279,7 +279,8 @@ CONFIG_HVC_RTAS=y | |||
279 | CONFIG_HVC_BEAT=y | 279 | CONFIG_HVC_BEAT=y |
280 | CONFIG_HVCS=m | 280 | CONFIG_HVCS=m |
281 | CONFIG_IBM_BSR=m | 281 | CONFIG_IBM_BSR=m |
282 | # CONFIG_HW_RANDOM is not set | 282 | CONFIG_HW_RANDOM=m |
283 | CONFIG_HW_RANDOM_PSERIES=m | ||
283 | CONFIG_RAW_DRIVER=y | 284 | CONFIG_RAW_DRIVER=y |
284 | CONFIG_I2C_CHARDEV=y | 285 | CONFIG_I2C_CHARDEV=y |
285 | CONFIG_I2C_AMD8111=y | 286 | CONFIG_I2C_AMD8111=y |
@@ -485,7 +486,8 @@ CONFIG_CRYPTO_TEA=m | |||
485 | CONFIG_CRYPTO_TWOFISH=m | 486 | CONFIG_CRYPTO_TWOFISH=m |
486 | CONFIG_CRYPTO_LZO=m | 487 | CONFIG_CRYPTO_LZO=m |
487 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 488 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
488 | # CONFIG_CRYPTO_HW is not set | 489 | CONFIG_CRYPTO_HW=y |
490 | CONFIG_CRYPTO_DEV_NX=m | ||
489 | CONFIG_VIRTUALIZATION=y | 491 | CONFIG_VIRTUALIZATION=y |
490 | CONFIG_KVM_BOOK3S_64=m | 492 | CONFIG_KVM_BOOK3S_64=m |
491 | CONFIG_KVM_BOOK3S_64_HV=y | 493 | CONFIG_KVM_BOOK3S_64_HV=y |
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig index 187fb8d5360..1f65b3c9b59 100644 --- a/arch/powerpc/configs/pseries_defconfig +++ b/arch/powerpc/configs/pseries_defconfig | |||
@@ -226,7 +226,8 @@ CONFIG_HVC_CONSOLE=y | |||
226 | CONFIG_HVC_RTAS=y | 226 | CONFIG_HVC_RTAS=y |
227 | CONFIG_HVCS=m | 227 | CONFIG_HVCS=m |
228 | CONFIG_IBM_BSR=m | 228 | CONFIG_IBM_BSR=m |
229 | # CONFIG_HW_RANDOM is not set | 229 | CONFIG_HW_RANDOM=m |
230 | CONFIG_HW_RANDOM_PSERIES=m | ||
230 | CONFIG_GEN_RTC=y | 231 | CONFIG_GEN_RTC=y |
231 | CONFIG_RAW_DRIVER=y | 232 | CONFIG_RAW_DRIVER=y |
232 | CONFIG_MAX_RAW_DEVS=1024 | 233 | CONFIG_MAX_RAW_DEVS=1024 |
@@ -367,7 +368,8 @@ CONFIG_CRYPTO_TEA=m | |||
367 | CONFIG_CRYPTO_TWOFISH=m | 368 | CONFIG_CRYPTO_TWOFISH=m |
368 | CONFIG_CRYPTO_LZO=m | 369 | CONFIG_CRYPTO_LZO=m |
369 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 370 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
370 | # CONFIG_CRYPTO_HW is not set | 371 | CONFIG_CRYPTO_HW=y |
372 | CONFIG_CRYPTO_DEV_NX=m | ||
371 | CONFIG_VIRTUALIZATION=y | 373 | CONFIG_VIRTUALIZATION=y |
372 | CONFIG_KVM_BOOK3S_64=m | 374 | CONFIG_KVM_BOOK3S_64=m |
373 | CONFIG_KVM_BOOK3S_64_HV=y | 375 | CONFIG_KVM_BOOK3S_64_HV=y |
diff --git a/arch/powerpc/include/asm/dma-mapping.h b/arch/powerpc/include/asm/dma-mapping.h index 62678e365ca..78160874809 100644 --- a/arch/powerpc/include/asm/dma-mapping.h +++ b/arch/powerpc/include/asm/dma-mapping.h | |||
@@ -27,7 +27,10 @@ extern void *dma_direct_alloc_coherent(struct device *dev, size_t size, | |||
27 | extern void dma_direct_free_coherent(struct device *dev, size_t size, | 27 | extern void dma_direct_free_coherent(struct device *dev, size_t size, |
28 | void *vaddr, dma_addr_t dma_handle, | 28 | void *vaddr, dma_addr_t dma_handle, |
29 | struct dma_attrs *attrs); | 29 | struct dma_attrs *attrs); |
30 | 30 | extern int dma_direct_mmap_coherent(struct device *dev, | |
31 | struct vm_area_struct *vma, | ||
32 | void *cpu_addr, dma_addr_t handle, | ||
33 | size_t size, struct dma_attrs *attrs); | ||
31 | 34 | ||
32 | #ifdef CONFIG_NOT_COHERENT_CACHE | 35 | #ifdef CONFIG_NOT_COHERENT_CACHE |
33 | /* | 36 | /* |
@@ -207,11 +210,8 @@ static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t daddr) | |||
207 | #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) | 210 | #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) |
208 | #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) | 211 | #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) |
209 | 212 | ||
210 | extern int dma_mmap_coherent(struct device *, struct vm_area_struct *, | ||
211 | void *, dma_addr_t, size_t); | ||
212 | #define ARCH_HAS_DMA_MMAP_COHERENT | 213 | #define ARCH_HAS_DMA_MMAP_COHERENT |
213 | 214 | ||
214 | |||
215 | static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size, | 215 | static inline void dma_cache_sync(struct device *dev, void *vaddr, size_t size, |
216 | enum dma_data_direction direction) | 216 | enum dma_data_direction direction) |
217 | { | 217 | { |
diff --git a/arch/powerpc/include/asm/kmap_types.h b/arch/powerpc/include/asm/kmap_types.h index bca8fdcd254..5acabbd7ac6 100644 --- a/arch/powerpc/include/asm/kmap_types.h +++ b/arch/powerpc/include/asm/kmap_types.h | |||
@@ -10,36 +10,7 @@ | |||
10 | * 2 of the License, or (at your option) any later version. | 10 | * 2 of the License, or (at your option) any later version. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | enum km_type { | 13 | #define KM_TYPE_NR 16 |
14 | KM_BOUNCE_READ, | ||
15 | KM_SKB_SUNRPC_DATA, | ||
16 | KM_SKB_DATA_SOFTIRQ, | ||
17 | KM_USER0, | ||
18 | KM_USER1, | ||
19 | KM_BIO_SRC_IRQ, | ||
20 | KM_BIO_DST_IRQ, | ||
21 | KM_PTE0, | ||
22 | KM_PTE1, | ||
23 | KM_IRQ0, | ||
24 | KM_IRQ1, | ||
25 | KM_SOFTIRQ0, | ||
26 | KM_SOFTIRQ1, | ||
27 | KM_PPC_SYNC_PAGE, | ||
28 | KM_PPC_SYNC_ICACHE, | ||
29 | KM_KDB, | ||
30 | KM_TYPE_NR | ||
31 | }; | ||
32 | |||
33 | /* | ||
34 | * This is a temporary build fix that (so they say on lkml....) should no longer | ||
35 | * be required after 2.6.33, because of changes planned to the kmap code. | ||
36 | * Let's try to remove this cruft then. | ||
37 | */ | ||
38 | #ifdef CONFIG_DEBUG_HIGHMEM | ||
39 | #define KM_NMI (-1) | ||
40 | #define KM_NMI_PTE (-1) | ||
41 | #define KM_IRQ_PTE (-1) | ||
42 | #endif | ||
43 | 14 | ||
44 | #endif /* __KERNEL__ */ | 15 | #endif /* __KERNEL__ */ |
45 | #endif /* _ASM_POWERPC_KMAP_TYPES_H */ | 16 | #endif /* _ASM_POWERPC_KMAP_TYPES_H */ |
diff --git a/arch/powerpc/include/asm/unistd.h b/arch/powerpc/include/asm/unistd.h index d3d1b5efd7e..bd377a36861 100644 --- a/arch/powerpc/include/asm/unistd.h +++ b/arch/powerpc/include/asm/unistd.h | |||
@@ -389,7 +389,6 @@ | |||
389 | #include <linux/compiler.h> | 389 | #include <linux/compiler.h> |
390 | #include <linux/linkage.h> | 390 | #include <linux/linkage.h> |
391 | 391 | ||
392 | #define __ARCH_WANT_IPC_PARSE_VERSION | ||
393 | #define __ARCH_WANT_OLD_READDIR | 392 | #define __ARCH_WANT_OLD_READDIR |
394 | #define __ARCH_WANT_STAT64 | 393 | #define __ARCH_WANT_STAT64 |
395 | #define __ARCH_WANT_SYS_ALARM | 394 | #define __ARCH_WANT_SYS_ALARM |
diff --git a/arch/powerpc/kernel/dma-iommu.c b/arch/powerpc/kernel/dma-iommu.c index bcfdcd22c76..2d7bb8ced13 100644 --- a/arch/powerpc/kernel/dma-iommu.c +++ b/arch/powerpc/kernel/dma-iommu.c | |||
@@ -109,6 +109,7 @@ static u64 dma_iommu_get_required_mask(struct device *dev) | |||
109 | struct dma_map_ops dma_iommu_ops = { | 109 | struct dma_map_ops dma_iommu_ops = { |
110 | .alloc = dma_iommu_alloc_coherent, | 110 | .alloc = dma_iommu_alloc_coherent, |
111 | .free = dma_iommu_free_coherent, | 111 | .free = dma_iommu_free_coherent, |
112 | .mmap = dma_direct_mmap_coherent, | ||
112 | .map_sg = dma_iommu_map_sg, | 113 | .map_sg = dma_iommu_map_sg, |
113 | .unmap_sg = dma_iommu_unmap_sg, | 114 | .unmap_sg = dma_iommu_unmap_sg, |
114 | .dma_supported = dma_iommu_dma_supported, | 115 | .dma_supported = dma_iommu_dma_supported, |
diff --git a/arch/powerpc/kernel/dma-swiotlb.c b/arch/powerpc/kernel/dma-swiotlb.c index 4ab88dafb23..46943651da2 100644 --- a/arch/powerpc/kernel/dma-swiotlb.c +++ b/arch/powerpc/kernel/dma-swiotlb.c | |||
@@ -49,6 +49,7 @@ static u64 swiotlb_powerpc_get_required(struct device *dev) | |||
49 | struct dma_map_ops swiotlb_dma_ops = { | 49 | struct dma_map_ops swiotlb_dma_ops = { |
50 | .alloc = dma_direct_alloc_coherent, | 50 | .alloc = dma_direct_alloc_coherent, |
51 | .free = dma_direct_free_coherent, | 51 | .free = dma_direct_free_coherent, |
52 | .mmap = dma_direct_mmap_coherent, | ||
52 | .map_sg = swiotlb_map_sg_attrs, | 53 | .map_sg = swiotlb_map_sg_attrs, |
53 | .unmap_sg = swiotlb_unmap_sg_attrs, | 54 | .unmap_sg = swiotlb_unmap_sg_attrs, |
54 | .dma_supported = swiotlb_dma_supported, | 55 | .dma_supported = swiotlb_dma_supported, |
diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index 289be751cd7..355b9d84b0f 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c | |||
@@ -67,6 +67,24 @@ void dma_direct_free_coherent(struct device *dev, size_t size, | |||
67 | #endif | 67 | #endif |
68 | } | 68 | } |
69 | 69 | ||
70 | int dma_direct_mmap_coherent(struct device *dev, struct vm_area_struct *vma, | ||
71 | void *cpu_addr, dma_addr_t handle, size_t size, | ||
72 | struct dma_attrs *attrs) | ||
73 | { | ||
74 | unsigned long pfn; | ||
75 | |||
76 | #ifdef CONFIG_NOT_COHERENT_CACHE | ||
77 | vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); | ||
78 | pfn = __dma_get_coherent_pfn((unsigned long)cpu_addr); | ||
79 | #else | ||
80 | pfn = page_to_pfn(virt_to_page(cpu_addr)); | ||
81 | #endif | ||
82 | return remap_pfn_range(vma, vma->vm_start, | ||
83 | pfn + vma->vm_pgoff, | ||
84 | vma->vm_end - vma->vm_start, | ||
85 | vma->vm_page_prot); | ||
86 | } | ||
87 | |||
70 | static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, | 88 | static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, |
71 | int nents, enum dma_data_direction direction, | 89 | int nents, enum dma_data_direction direction, |
72 | struct dma_attrs *attrs) | 90 | struct dma_attrs *attrs) |
@@ -156,6 +174,7 @@ static inline void dma_direct_sync_single(struct device *dev, | |||
156 | struct dma_map_ops dma_direct_ops = { | 174 | struct dma_map_ops dma_direct_ops = { |
157 | .alloc = dma_direct_alloc_coherent, | 175 | .alloc = dma_direct_alloc_coherent, |
158 | .free = dma_direct_free_coherent, | 176 | .free = dma_direct_free_coherent, |
177 | .mmap = dma_direct_mmap_coherent, | ||
159 | .map_sg = dma_direct_map_sg, | 178 | .map_sg = dma_direct_map_sg, |
160 | .unmap_sg = dma_direct_unmap_sg, | 179 | .unmap_sg = dma_direct_unmap_sg, |
161 | .dma_supported = dma_direct_dma_supported, | 180 | .dma_supported = dma_direct_dma_supported, |
@@ -219,20 +238,3 @@ static int __init dma_init(void) | |||
219 | } | 238 | } |
220 | fs_initcall(dma_init); | 239 | fs_initcall(dma_init); |
221 | 240 | ||
222 | int dma_mmap_coherent(struct device *dev, struct vm_area_struct *vma, | ||
223 | void *cpu_addr, dma_addr_t handle, size_t size) | ||
224 | { | ||
225 | unsigned long pfn; | ||
226 | |||
227 | #ifdef CONFIG_NOT_COHERENT_CACHE | ||
228 | vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); | ||
229 | pfn = __dma_get_coherent_pfn((unsigned long)cpu_addr); | ||
230 | #else | ||
231 | pfn = page_to_pfn(virt_to_page(cpu_addr)); | ||
232 | #endif | ||
233 | return remap_pfn_range(vma, vma->vm_start, | ||
234 | pfn + vma->vm_pgoff, | ||
235 | vma->vm_end - vma->vm_start, | ||
236 | vma->vm_page_prot); | ||
237 | } | ||
238 | EXPORT_SYMBOL_GPL(dma_mmap_coherent); | ||
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S index 5207d5a405e..ead5016b02d 100644 --- a/arch/powerpc/kernel/entry_32.S +++ b/arch/powerpc/kernel/entry_32.S | |||
@@ -89,10 +89,14 @@ crit_transfer_to_handler: | |||
89 | mfspr r0,SPRN_SRR1 | 89 | mfspr r0,SPRN_SRR1 |
90 | stw r0,_SRR1(r11) | 90 | stw r0,_SRR1(r11) |
91 | 91 | ||
92 | /* set the stack limit to the current stack | ||
93 | * and set the limit to protect the thread_info | ||
94 | * struct | ||
95 | */ | ||
92 | mfspr r8,SPRN_SPRG_THREAD | 96 | mfspr r8,SPRN_SPRG_THREAD |
93 | lwz r0,KSP_LIMIT(r8) | 97 | lwz r0,KSP_LIMIT(r8) |
94 | stw r0,SAVED_KSP_LIMIT(r11) | 98 | stw r0,SAVED_KSP_LIMIT(r11) |
95 | CURRENT_THREAD_INFO(r0, r1) | 99 | rlwimi r0,r1,0,0,(31-THREAD_SHIFT) |
96 | stw r0,KSP_LIMIT(r8) | 100 | stw r0,KSP_LIMIT(r8) |
97 | /* fall through */ | 101 | /* fall through */ |
98 | #endif | 102 | #endif |
@@ -109,10 +113,14 @@ crit_transfer_to_handler: | |||
109 | mfspr r0,SPRN_SRR1 | 113 | mfspr r0,SPRN_SRR1 |
110 | stw r0,crit_srr1@l(0) | 114 | stw r0,crit_srr1@l(0) |
111 | 115 | ||
116 | /* set the stack limit to the current stack | ||
117 | * and set the limit to protect the thread_info | ||
118 | * struct | ||
119 | */ | ||
112 | mfspr r8,SPRN_SPRG_THREAD | 120 | mfspr r8,SPRN_SPRG_THREAD |
113 | lwz r0,KSP_LIMIT(r8) | 121 | lwz r0,KSP_LIMIT(r8) |
114 | stw r0,saved_ksp_limit@l(0) | 122 | stw r0,saved_ksp_limit@l(0) |
115 | CURRENT_THREAD_INFO(r0, r1) | 123 | rlwimi r0,r1,0,0,(31-THREAD_SHIFT) |
116 | stw r0,KSP_LIMIT(r8) | 124 | stw r0,KSP_LIMIT(r8) |
117 | /* fall through */ | 125 | /* fall through */ |
118 | #endif | 126 | #endif |
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c index 91b46b7f6f0..1fb78561096 100644 --- a/arch/powerpc/kernel/ftrace.c +++ b/arch/powerpc/kernel/ftrace.c | |||
@@ -630,18 +630,17 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) | |||
630 | return; | 630 | return; |
631 | } | 631 | } |
632 | 632 | ||
633 | if (ftrace_push_return_trace(old, self_addr, &trace.depth, 0) == -EBUSY) { | ||
634 | *parent = old; | ||
635 | return; | ||
636 | } | ||
637 | |||
638 | trace.func = self_addr; | 633 | trace.func = self_addr; |
634 | trace.depth = current->curr_ret_stack + 1; | ||
639 | 635 | ||
640 | /* Only trace if the calling function expects to */ | 636 | /* Only trace if the calling function expects to */ |
641 | if (!ftrace_graph_entry(&trace)) { | 637 | if (!ftrace_graph_entry(&trace)) { |
642 | current->curr_ret_stack--; | ||
643 | *parent = old; | 638 | *parent = old; |
639 | return; | ||
644 | } | 640 | } |
641 | |||
642 | if (ftrace_push_return_trace(old, self_addr, &trace.depth, 0) == -EBUSY) | ||
643 | *parent = old; | ||
645 | } | 644 | } |
646 | #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ | 645 | #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ |
647 | 646 | ||
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c index 4174b4b2324..2c0ee640563 100644 --- a/arch/powerpc/kernel/rtas_flash.c +++ b/arch/powerpc/kernel/rtas_flash.c | |||
@@ -709,7 +709,7 @@ static int __init rtas_flash_init(void) | |||
709 | 709 | ||
710 | if (rtas_token("ibm,update-flash-64-and-reboot") == | 710 | if (rtas_token("ibm,update-flash-64-and-reboot") == |
711 | RTAS_UNKNOWN_SERVICE) { | 711 | RTAS_UNKNOWN_SERVICE) { |
712 | printk(KERN_ERR "rtas_flash: no firmware flash support\n"); | 712 | pr_info("rtas_flash: no firmware flash support\n"); |
713 | return 1; | 713 | return 1; |
714 | } | 714 | } |
715 | 715 | ||
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c index 3052a931f2b..02b32216bbc 100644 --- a/arch/powerpc/kernel/vio.c +++ b/arch/powerpc/kernel/vio.c | |||
@@ -611,6 +611,7 @@ static u64 vio_dma_get_required_mask(struct device *dev) | |||
611 | struct dma_map_ops vio_dma_mapping_ops = { | 611 | struct dma_map_ops vio_dma_mapping_ops = { |
612 | .alloc = vio_dma_iommu_alloc_coherent, | 612 | .alloc = vio_dma_iommu_alloc_coherent, |
613 | .free = vio_dma_iommu_free_coherent, | 613 | .free = vio_dma_iommu_free_coherent, |
614 | .mmap = dma_direct_mmap_coherent, | ||
614 | .map_sg = vio_dma_iommu_map_sg, | 615 | .map_sg = vio_dma_iommu_map_sg, |
615 | .unmap_sg = vio_dma_iommu_unmap_sg, | 616 | .unmap_sg = vio_dma_iommu_unmap_sg, |
616 | .map_page = vio_dma_iommu_map_page, | 617 | .map_page = vio_dma_iommu_map_page, |
diff --git a/arch/powerpc/kvm/book3s_rmhandlers.S b/arch/powerpc/kvm/book3s_rmhandlers.S index ab523f3c173..9ecf6e35cd8 100644 --- a/arch/powerpc/kvm/book3s_rmhandlers.S +++ b/arch/powerpc/kvm/book3s_rmhandlers.S | |||
@@ -67,7 +67,6 @@ kvmppc_skip_Hinterrupt: | |||
67 | #elif defined(CONFIG_PPC_BOOK3S_32) | 67 | #elif defined(CONFIG_PPC_BOOK3S_32) |
68 | 68 | ||
69 | #define FUNC(name) name | 69 | #define FUNC(name) name |
70 | #define MTMSR_EERI(reg) mtmsr (reg) | ||
71 | 70 | ||
72 | .macro INTERRUPT_TRAMPOLINE intno | 71 | .macro INTERRUPT_TRAMPOLINE intno |
73 | 72 | ||
diff --git a/arch/powerpc/kvm/bookehv_interrupts.S b/arch/powerpc/kvm/bookehv_interrupts.S index d28c2d43ac1..099fe8272b5 100644 --- a/arch/powerpc/kvm/bookehv_interrupts.S +++ b/arch/powerpc/kvm/bookehv_interrupts.S | |||
@@ -50,8 +50,9 @@ | |||
50 | #define HOST_R2 (3 * LONGBYTES) | 50 | #define HOST_R2 (3 * LONGBYTES) |
51 | #define HOST_CR (4 * LONGBYTES) | 51 | #define HOST_CR (4 * LONGBYTES) |
52 | #define HOST_NV_GPRS (5 * LONGBYTES) | 52 | #define HOST_NV_GPRS (5 * LONGBYTES) |
53 | #define HOST_NV_GPR(n) (HOST_NV_GPRS + ((n - 14) * LONGBYTES)) | 53 | #define __HOST_NV_GPR(n) (HOST_NV_GPRS + ((n - 14) * LONGBYTES)) |
54 | #define HOST_MIN_STACK_SIZE (HOST_NV_GPR(31) + LONGBYTES) | 54 | #define HOST_NV_GPR(n) __HOST_NV_GPR(__REG_##n) |
55 | #define HOST_MIN_STACK_SIZE (HOST_NV_GPR(R31) + LONGBYTES) | ||
55 | #define HOST_STACK_SIZE ((HOST_MIN_STACK_SIZE + 15) & ~15) /* Align. */ | 56 | #define HOST_STACK_SIZE ((HOST_MIN_STACK_SIZE + 15) & ~15) /* Align. */ |
56 | #define HOST_STACK_LR (HOST_STACK_SIZE + LONGBYTES) /* In caller stack frame. */ | 57 | #define HOST_STACK_LR (HOST_STACK_SIZE + LONGBYTES) /* In caller stack frame. */ |
57 | 58 | ||
@@ -410,24 +411,24 @@ heavyweight_exit: | |||
410 | PPC_STL r31, VCPU_GPR(R31)(r4) | 411 | PPC_STL r31, VCPU_GPR(R31)(r4) |
411 | 412 | ||
412 | /* Load host non-volatile register state from host stack. */ | 413 | /* Load host non-volatile register state from host stack. */ |
413 | PPC_LL r14, HOST_NV_GPR(r14)(r1) | 414 | PPC_LL r14, HOST_NV_GPR(R14)(r1) |
414 | PPC_LL r15, HOST_NV_GPR(r15)(r1) | 415 | PPC_LL r15, HOST_NV_GPR(R15)(r1) |
415 | PPC_LL r16, HOST_NV_GPR(r16)(r1) | 416 | PPC_LL r16, HOST_NV_GPR(R16)(r1) |
416 | PPC_LL r17, HOST_NV_GPR(r17)(r1) | 417 | PPC_LL r17, HOST_NV_GPR(R17)(r1) |
417 | PPC_LL r18, HOST_NV_GPR(r18)(r1) | 418 | PPC_LL r18, HOST_NV_GPR(R18)(r1) |
418 | PPC_LL r19, HOST_NV_GPR(r19)(r1) | 419 | PPC_LL r19, HOST_NV_GPR(R19)(r1) |
419 | PPC_LL r20, HOST_NV_GPR(r20)(r1) | 420 | PPC_LL r20, HOST_NV_GPR(R20)(r1) |
420 | PPC_LL r21, HOST_NV_GPR(r21)(r1) | 421 | PPC_LL r21, HOST_NV_GPR(R21)(r1) |
421 | PPC_LL r22, HOST_NV_GPR(r22)(r1) | 422 | PPC_LL r22, HOST_NV_GPR(R22)(r1) |
422 | PPC_LL r23, HOST_NV_GPR(r23)(r1) | 423 | PPC_LL r23, HOST_NV_GPR(R23)(r1) |
423 | PPC_LL r24, HOST_NV_GPR(r24)(r1) | 424 | PPC_LL r24, HOST_NV_GPR(R24)(r1) |
424 | PPC_LL r25, HOST_NV_GPR(r25)(r1) | 425 | PPC_LL r25, HOST_NV_GPR(R25)(r1) |
425 | PPC_LL r26, HOST_NV_GPR(r26)(r1) | 426 | PPC_LL r26, HOST_NV_GPR(R26)(r1) |
426 | PPC_LL r27, HOST_NV_GPR(r27)(r1) | 427 | PPC_LL r27, HOST_NV_GPR(R27)(r1) |
427 | PPC_LL r28, HOST_NV_GPR(r28)(r1) | 428 | PPC_LL r28, HOST_NV_GPR(R28)(r1) |
428 | PPC_LL r29, HOST_NV_GPR(r29)(r1) | 429 | PPC_LL r29, HOST_NV_GPR(R29)(r1) |
429 | PPC_LL r30, HOST_NV_GPR(r30)(r1) | 430 | PPC_LL r30, HOST_NV_GPR(R30)(r1) |
430 | PPC_LL r31, HOST_NV_GPR(r31)(r1) | 431 | PPC_LL r31, HOST_NV_GPR(R31)(r1) |
431 | 432 | ||
432 | /* Return to kvm_vcpu_run(). */ | 433 | /* Return to kvm_vcpu_run(). */ |
433 | mtlr r5 | 434 | mtlr r5 |
@@ -453,24 +454,24 @@ _GLOBAL(__kvmppc_vcpu_run) | |||
453 | stw r5, HOST_CR(r1) | 454 | stw r5, HOST_CR(r1) |
454 | 455 | ||
455 | /* Save host non-volatile register state to stack. */ | 456 | /* Save host non-volatile register state to stack. */ |
456 | PPC_STL r14, HOST_NV_GPR(r14)(r1) | 457 | PPC_STL r14, HOST_NV_GPR(R14)(r1) |
457 | PPC_STL r15, HOST_NV_GPR(r15)(r1) | 458 | PPC_STL r15, HOST_NV_GPR(R15)(r1) |
458 | PPC_STL r16, HOST_NV_GPR(r16)(r1) | 459 | PPC_STL r16, HOST_NV_GPR(R16)(r1) |
459 | PPC_STL r17, HOST_NV_GPR(r17)(r1) | 460 | PPC_STL r17, HOST_NV_GPR(R17)(r1) |
460 | PPC_STL r18, HOST_NV_GPR(r18)(r1) | 461 | PPC_STL r18, HOST_NV_GPR(R18)(r1) |
461 | PPC_STL r19, HOST_NV_GPR(r19)(r1) | 462 | PPC_STL r19, HOST_NV_GPR(R19)(r1) |
462 | PPC_STL r20, HOST_NV_GPR(r20)(r1) | 463 | PPC_STL r20, HOST_NV_GPR(R20)(r1) |
463 | PPC_STL r21, HOST_NV_GPR(r21)(r1) | 464 | PPC_STL r21, HOST_NV_GPR(R21)(r1) |
464 | PPC_STL r22, HOST_NV_GPR(r22)(r1) | 465 | PPC_STL r22, HOST_NV_GPR(R22)(r1) |
465 | PPC_STL r23, HOST_NV_GPR(r23)(r1) | 466 | PPC_STL r23, HOST_NV_GPR(R23)(r1) |
466 | PPC_STL r24, HOST_NV_GPR(r24)(r1) | 467 | PPC_STL r24, HOST_NV_GPR(R24)(r1) |
467 | PPC_STL r25, HOST_NV_GPR(r25)(r1) | 468 | PPC_STL r25, HOST_NV_GPR(R25)(r1) |
468 | PPC_STL r26, HOST_NV_GPR(r26)(r1) | 469 | PPC_STL r26, HOST_NV_GPR(R26)(r1) |
469 | PPC_STL r27, HOST_NV_GPR(r27)(r1) | 470 | PPC_STL r27, HOST_NV_GPR(R27)(r1) |
470 | PPC_STL r28, HOST_NV_GPR(r28)(r1) | 471 | PPC_STL r28, HOST_NV_GPR(R28)(r1) |
471 | PPC_STL r29, HOST_NV_GPR(r29)(r1) | 472 | PPC_STL r29, HOST_NV_GPR(R29)(r1) |
472 | PPC_STL r30, HOST_NV_GPR(r30)(r1) | 473 | PPC_STL r30, HOST_NV_GPR(R30)(r1) |
473 | PPC_STL r31, HOST_NV_GPR(r31)(r1) | 474 | PPC_STL r31, HOST_NV_GPR(R31)(r1) |
474 | 475 | ||
475 | /* Load guest non-volatiles. */ | 476 | /* Load guest non-volatiles. */ |
476 | PPC_LL r14, VCPU_GPR(R14)(r4) | 477 | PPC_LL r14, VCPU_GPR(R14)(r4) |
diff --git a/arch/powerpc/platforms/85xx/p1022_ds.c b/arch/powerpc/platforms/85xx/p1022_ds.c index 89ee02c5456..3c732acf331 100644 --- a/arch/powerpc/platforms/85xx/p1022_ds.c +++ b/arch/powerpc/platforms/85xx/p1022_ds.c | |||
@@ -208,6 +208,7 @@ static void p1022ds_set_monitor_port(enum fsl_diu_monitor_port port) | |||
208 | u8 __iomem *lbc_lcs0_ba = NULL; | 208 | u8 __iomem *lbc_lcs0_ba = NULL; |
209 | u8 __iomem *lbc_lcs1_ba = NULL; | 209 | u8 __iomem *lbc_lcs1_ba = NULL; |
210 | phys_addr_t cs0_addr, cs1_addr; | 210 | phys_addr_t cs0_addr, cs1_addr; |
211 | u32 br0, or0, br1, or1; | ||
211 | const __be32 *iprop; | 212 | const __be32 *iprop; |
212 | unsigned int num_laws; | 213 | unsigned int num_laws; |
213 | u8 b; | 214 | u8 b; |
@@ -256,11 +257,70 @@ static void p1022ds_set_monitor_port(enum fsl_diu_monitor_port port) | |||
256 | } | 257 | } |
257 | num_laws = be32_to_cpup(iprop); | 258 | num_laws = be32_to_cpup(iprop); |
258 | 259 | ||
259 | cs0_addr = lbc_br_to_phys(ecm, num_laws, in_be32(&lbc->bank[0].br)); | 260 | /* |
260 | cs1_addr = lbc_br_to_phys(ecm, num_laws, in_be32(&lbc->bank[1].br)); | 261 | * Indirect mode requires both BR0 and BR1 to be set to "GPCM", |
262 | * otherwise writes to these addresses won't actually appear on the | ||
263 | * local bus, and so the PIXIS won't see them. | ||
264 | * | ||
265 | * In FCM mode, writes go to the NAND controller, which does not pass | ||
266 | * them to the localbus directly. So we force BR0 and BR1 into GPCM | ||
267 | * mode, since we don't care about what's behind the localbus any | ||
268 | * more. | ||
269 | */ | ||
270 | br0 = in_be32(&lbc->bank[0].br); | ||
271 | br1 = in_be32(&lbc->bank[1].br); | ||
272 | or0 = in_be32(&lbc->bank[0].or); | ||
273 | or1 = in_be32(&lbc->bank[1].or); | ||
274 | |||
275 | /* Make sure CS0 and CS1 are programmed */ | ||
276 | if (!(br0 & BR_V) || !(br1 & BR_V)) { | ||
277 | pr_err("p1022ds: CS0 and/or CS1 is not programmed\n"); | ||
278 | goto exit; | ||
279 | } | ||
280 | |||
281 | /* | ||
282 | * Use the existing BRx/ORx values if it's already GPCM. Otherwise, | ||
283 | * force the values to simple 32KB GPCM windows with the most | ||
284 | * conservative timing. | ||
285 | */ | ||
286 | if ((br0 & BR_MSEL) != BR_MS_GPCM) { | ||
287 | br0 = (br0 & BR_BA) | BR_V; | ||
288 | or0 = 0xFFFF8000 | 0xFF7; | ||
289 | out_be32(&lbc->bank[0].br, br0); | ||
290 | out_be32(&lbc->bank[0].or, or0); | ||
291 | } | ||
292 | if ((br1 & BR_MSEL) != BR_MS_GPCM) { | ||
293 | br1 = (br1 & BR_BA) | BR_V; | ||
294 | or1 = 0xFFFF8000 | 0xFF7; | ||
295 | out_be32(&lbc->bank[1].br, br1); | ||
296 | out_be32(&lbc->bank[1].or, or1); | ||
297 | } | ||
298 | |||
299 | cs0_addr = lbc_br_to_phys(ecm, num_laws, br0); | ||
300 | if (!cs0_addr) { | ||
301 | pr_err("p1022ds: could not determine physical address for CS0" | ||
302 | " (BR0=%08x)\n", br0); | ||
303 | goto exit; | ||
304 | } | ||
305 | cs1_addr = lbc_br_to_phys(ecm, num_laws, br1); | ||
306 | if (!cs0_addr) { | ||
307 | pr_err("p1022ds: could not determine physical address for CS1" | ||
308 | " (BR1=%08x)\n", br1); | ||
309 | goto exit; | ||
310 | } | ||
261 | 311 | ||
262 | lbc_lcs0_ba = ioremap(cs0_addr, 1); | 312 | lbc_lcs0_ba = ioremap(cs0_addr, 1); |
313 | if (!lbc_lcs0_ba) { | ||
314 | pr_err("p1022ds: could not ioremap CS0 address %llx\n", | ||
315 | (unsigned long long)cs0_addr); | ||
316 | goto exit; | ||
317 | } | ||
263 | lbc_lcs1_ba = ioremap(cs1_addr, 1); | 318 | lbc_lcs1_ba = ioremap(cs1_addr, 1); |
319 | if (!lbc_lcs1_ba) { | ||
320 | pr_err("p1022ds: could not ioremap CS1 address %llx\n", | ||
321 | (unsigned long long)cs1_addr); | ||
322 | goto exit; | ||
323 | } | ||
264 | 324 | ||
265 | /* Make sure we're in indirect mode first. */ | 325 | /* Make sure we're in indirect mode first. */ |
266 | if ((in_be32(&guts->pmuxcr) & PMUXCR_ELBCDIU_MASK) != | 326 | if ((in_be32(&guts->pmuxcr) & PMUXCR_ELBCDIU_MASK) != |
@@ -419,18 +479,6 @@ void __init p1022_ds_pic_init(void) | |||
419 | 479 | ||
420 | #if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE) | 480 | #if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE) |
421 | 481 | ||
422 | /* | ||
423 | * Disables a node in the device tree. | ||
424 | * | ||
425 | * This function is called before kmalloc() is available, so the 'new' object | ||
426 | * should be allocated in the global area. The easiest way is to do that is | ||
427 | * to allocate one static local variable for each call to this function. | ||
428 | */ | ||
429 | static void __init disable_one_node(struct device_node *np, struct property *new) | ||
430 | { | ||
431 | prom_update_property(np, new); | ||
432 | } | ||
433 | |||
434 | /* TRUE if there is a "video=fslfb" command-line parameter. */ | 482 | /* TRUE if there is a "video=fslfb" command-line parameter. */ |
435 | static bool fslfb; | 483 | static bool fslfb; |
436 | 484 | ||
@@ -493,28 +541,58 @@ static void __init p1022_ds_setup_arch(void) | |||
493 | diu_ops.valid_monitor_port = p1022ds_valid_monitor_port; | 541 | diu_ops.valid_monitor_port = p1022ds_valid_monitor_port; |
494 | 542 | ||
495 | /* | 543 | /* |
496 | * Disable the NOR flash node if there is video=fslfb... command-line | 544 | * Disable the NOR and NAND flash nodes if there is video=fslfb... |
497 | * parameter. When the DIU is active, NOR flash is unavailable, so we | 545 | * command-line parameter. When the DIU is active, the localbus is |
498 | * have to disable the node before the MTD driver loads. | 546 | * unavailable, so we have to disable these nodes before the MTD |
547 | * driver loads. | ||
499 | */ | 548 | */ |
500 | if (fslfb) { | 549 | if (fslfb) { |
501 | struct device_node *np = | 550 | struct device_node *np = |
502 | of_find_compatible_node(NULL, NULL, "fsl,p1022-elbc"); | 551 | of_find_compatible_node(NULL, NULL, "fsl,p1022-elbc"); |
503 | 552 | ||
504 | if (np) { | 553 | if (np) { |
505 | np = of_find_compatible_node(np, NULL, "cfi-flash"); | 554 | struct device_node *np2; |
506 | if (np) { | 555 | |
556 | of_node_get(np); | ||
557 | np2 = of_find_compatible_node(np, NULL, "cfi-flash"); | ||
558 | if (np2) { | ||
507 | static struct property nor_status = { | 559 | static struct property nor_status = { |
508 | .name = "status", | 560 | .name = "status", |
509 | .value = "disabled", | 561 | .value = "disabled", |
510 | .length = sizeof("disabled"), | 562 | .length = sizeof("disabled"), |
511 | }; | 563 | }; |
512 | 564 | ||
565 | /* | ||
566 | * prom_update_property() is called before | ||
567 | * kmalloc() is available, so the 'new' object | ||
568 | * should be allocated in the global area. | ||
569 | * The easiest way is to do that is to | ||
570 | * allocate one static local variable for each | ||
571 | * call to this function. | ||
572 | */ | ||
513 | pr_info("p1022ds: disabling %s node", | 573 | pr_info("p1022ds: disabling %s node", |
514 | np->full_name); | 574 | np2->full_name); |
515 | disable_one_node(np, &nor_status); | 575 | prom_update_property(np2, &nor_status); |
516 | of_node_put(np); | 576 | of_node_put(np2); |
517 | } | 577 | } |
578 | |||
579 | of_node_get(np); | ||
580 | np2 = of_find_compatible_node(np, NULL, | ||
581 | "fsl,elbc-fcm-nand"); | ||
582 | if (np2) { | ||
583 | static struct property nand_status = { | ||
584 | .name = "status", | ||
585 | .value = "disabled", | ||
586 | .length = sizeof("disabled"), | ||
587 | }; | ||
588 | |||
589 | pr_info("p1022ds: disabling %s node", | ||
590 | np2->full_name); | ||
591 | prom_update_property(np2, &nand_status); | ||
592 | of_node_put(np2); | ||
593 | } | ||
594 | |||
595 | of_node_put(np); | ||
518 | } | 596 | } |
519 | 597 | ||
520 | } | 598 | } |
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index d544d7816df..dba1ce235da 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -186,10 +186,13 @@ static void spufs_prune_dir(struct dentry *dir) | |||
186 | static int spufs_rmdir(struct inode *parent, struct dentry *dir) | 186 | static int spufs_rmdir(struct inode *parent, struct dentry *dir) |
187 | { | 187 | { |
188 | /* remove all entries */ | 188 | /* remove all entries */ |
189 | int res; | ||
189 | spufs_prune_dir(dir); | 190 | spufs_prune_dir(dir); |
190 | d_drop(dir); | 191 | d_drop(dir); |
191 | 192 | res = simple_rmdir(parent, dir); | |
192 | return simple_rmdir(parent, dir); | 193 | /* We have to give up the mm_struct */ |
194 | spu_forget(SPUFS_I(dir->d_inode)->i_ctx); | ||
195 | return res; | ||
193 | } | 196 | } |
194 | 197 | ||
195 | static int spufs_fill_dir(struct dentry *dir, | 198 | static int spufs_fill_dir(struct dentry *dir, |
@@ -245,9 +248,6 @@ static int spufs_dir_close(struct inode *inode, struct file *file) | |||
245 | mutex_unlock(&parent->i_mutex); | 248 | mutex_unlock(&parent->i_mutex); |
246 | WARN_ON(ret); | 249 | WARN_ON(ret); |
247 | 250 | ||
248 | /* We have to give up the mm_struct */ | ||
249 | spu_forget(ctx); | ||
250 | |||
251 | return dcache_dir_close(inode, file); | 251 | return dcache_dir_close(inode, file); |
252 | } | 252 | } |
253 | 253 | ||
@@ -450,28 +450,24 @@ spufs_create_context(struct inode *inode, struct dentry *dentry, | |||
450 | struct spu_context *neighbor; | 450 | struct spu_context *neighbor; |
451 | struct path path = {.mnt = mnt, .dentry = dentry}; | 451 | struct path path = {.mnt = mnt, .dentry = dentry}; |
452 | 452 | ||
453 | ret = -EPERM; | ||
454 | if ((flags & SPU_CREATE_NOSCHED) && | 453 | if ((flags & SPU_CREATE_NOSCHED) && |
455 | !capable(CAP_SYS_NICE)) | 454 | !capable(CAP_SYS_NICE)) |
456 | goto out_unlock; | 455 | return -EPERM; |
457 | 456 | ||
458 | ret = -EINVAL; | ||
459 | if ((flags & (SPU_CREATE_NOSCHED | SPU_CREATE_ISOLATE)) | 457 | if ((flags & (SPU_CREATE_NOSCHED | SPU_CREATE_ISOLATE)) |
460 | == SPU_CREATE_ISOLATE) | 458 | == SPU_CREATE_ISOLATE) |
461 | goto out_unlock; | 459 | return -EINVAL; |
462 | 460 | ||
463 | ret = -ENODEV; | ||
464 | if ((flags & SPU_CREATE_ISOLATE) && !isolated_loader) | 461 | if ((flags & SPU_CREATE_ISOLATE) && !isolated_loader) |
465 | goto out_unlock; | 462 | return -ENODEV; |
466 | 463 | ||
467 | gang = NULL; | 464 | gang = NULL; |
468 | neighbor = NULL; | 465 | neighbor = NULL; |
469 | affinity = flags & (SPU_CREATE_AFFINITY_MEM | SPU_CREATE_AFFINITY_SPU); | 466 | affinity = flags & (SPU_CREATE_AFFINITY_MEM | SPU_CREATE_AFFINITY_SPU); |
470 | if (affinity) { | 467 | if (affinity) { |
471 | gang = SPUFS_I(inode)->i_gang; | 468 | gang = SPUFS_I(inode)->i_gang; |
472 | ret = -EINVAL; | ||
473 | if (!gang) | 469 | if (!gang) |
474 | goto out_unlock; | 470 | return -EINVAL; |
475 | mutex_lock(&gang->aff_mutex); | 471 | mutex_lock(&gang->aff_mutex); |
476 | neighbor = spufs_assert_affinity(flags, gang, aff_filp); | 472 | neighbor = spufs_assert_affinity(flags, gang, aff_filp); |
477 | if (IS_ERR(neighbor)) { | 473 | if (IS_ERR(neighbor)) { |
@@ -492,22 +488,12 @@ spufs_create_context(struct inode *inode, struct dentry *dentry, | |||
492 | } | 488 | } |
493 | 489 | ||
494 | ret = spufs_context_open(&path); | 490 | ret = spufs_context_open(&path); |
495 | if (ret < 0) { | 491 | if (ret < 0) |
496 | WARN_ON(spufs_rmdir(inode, dentry)); | 492 | WARN_ON(spufs_rmdir(inode, dentry)); |
497 | if (affinity) | ||
498 | mutex_unlock(&gang->aff_mutex); | ||
499 | mutex_unlock(&inode->i_mutex); | ||
500 | spu_forget(SPUFS_I(dentry->d_inode)->i_ctx); | ||
501 | goto out; | ||
502 | } | ||
503 | 493 | ||
504 | out_aff_unlock: | 494 | out_aff_unlock: |
505 | if (affinity) | 495 | if (affinity) |
506 | mutex_unlock(&gang->aff_mutex); | 496 | mutex_unlock(&gang->aff_mutex); |
507 | out_unlock: | ||
508 | mutex_unlock(&inode->i_mutex); | ||
509 | out: | ||
510 | dput(dentry); | ||
511 | return ret; | 497 | return ret; |
512 | } | 498 | } |
513 | 499 | ||
@@ -580,18 +566,13 @@ static int spufs_create_gang(struct inode *inode, | |||
580 | int ret; | 566 | int ret; |
581 | 567 | ||
582 | ret = spufs_mkgang(inode, dentry, mode & S_IRWXUGO); | 568 | ret = spufs_mkgang(inode, dentry, mode & S_IRWXUGO); |
583 | if (ret) | 569 | if (!ret) { |
584 | goto out; | 570 | ret = spufs_gang_open(&path); |
585 | 571 | if (ret < 0) { | |
586 | ret = spufs_gang_open(&path); | 572 | int err = simple_rmdir(inode, dentry); |
587 | if (ret < 0) { | 573 | WARN_ON(err); |
588 | int err = simple_rmdir(inode, dentry); | 574 | } |
589 | WARN_ON(err); | ||
590 | } | 575 | } |
591 | |||
592 | out: | ||
593 | mutex_unlock(&inode->i_mutex); | ||
594 | dput(dentry); | ||
595 | return ret; | 576 | return ret; |
596 | } | 577 | } |
597 | 578 | ||
@@ -601,40 +582,32 @@ static struct file_system_type spufs_type; | |||
601 | long spufs_create(struct path *path, struct dentry *dentry, | 582 | long spufs_create(struct path *path, struct dentry *dentry, |
602 | unsigned int flags, umode_t mode, struct file *filp) | 583 | unsigned int flags, umode_t mode, struct file *filp) |
603 | { | 584 | { |
585 | struct inode *dir = path->dentry->d_inode; | ||
604 | int ret; | 586 | int ret; |
605 | 587 | ||
606 | ret = -EINVAL; | ||
607 | /* check if we are on spufs */ | 588 | /* check if we are on spufs */ |
608 | if (path->dentry->d_sb->s_type != &spufs_type) | 589 | if (path->dentry->d_sb->s_type != &spufs_type) |
609 | goto out; | 590 | return -EINVAL; |
610 | 591 | ||
611 | /* don't accept undefined flags */ | 592 | /* don't accept undefined flags */ |
612 | if (flags & (~SPU_CREATE_FLAG_ALL)) | 593 | if (flags & (~SPU_CREATE_FLAG_ALL)) |
613 | goto out; | 594 | return -EINVAL; |
614 | 595 | ||
615 | /* only threads can be underneath a gang */ | 596 | /* only threads can be underneath a gang */ |
616 | if (path->dentry != path->dentry->d_sb->s_root) { | 597 | if (path->dentry != path->dentry->d_sb->s_root) |
617 | if ((flags & SPU_CREATE_GANG) || | 598 | if ((flags & SPU_CREATE_GANG) || !SPUFS_I(dir)->i_gang) |
618 | !SPUFS_I(path->dentry->d_inode)->i_gang) | 599 | return -EINVAL; |
619 | goto out; | ||
620 | } | ||
621 | 600 | ||
622 | mode &= ~current_umask(); | 601 | mode &= ~current_umask(); |
623 | 602 | ||
624 | if (flags & SPU_CREATE_GANG) | 603 | if (flags & SPU_CREATE_GANG) |
625 | ret = spufs_create_gang(path->dentry->d_inode, | 604 | ret = spufs_create_gang(dir, dentry, path->mnt, mode); |
626 | dentry, path->mnt, mode); | ||
627 | else | 605 | else |
628 | ret = spufs_create_context(path->dentry->d_inode, | 606 | ret = spufs_create_context(dir, dentry, path->mnt, flags, mode, |
629 | dentry, path->mnt, flags, mode, | ||
630 | filp); | 607 | filp); |
631 | if (ret >= 0) | 608 | if (ret >= 0) |
632 | fsnotify_mkdir(path->dentry->d_inode, dentry); | 609 | fsnotify_mkdir(dir, dentry); |
633 | return ret; | ||
634 | 610 | ||
635 | out: | ||
636 | mutex_unlock(&path->dentry->d_inode->i_mutex); | ||
637 | dput(dentry); | ||
638 | return ret; | 611 | return ret; |
639 | } | 612 | } |
640 | 613 | ||
diff --git a/arch/powerpc/platforms/cell/spufs/syscalls.c b/arch/powerpc/platforms/cell/spufs/syscalls.c index 5665dcc382c..5b7d8ffbf89 100644 --- a/arch/powerpc/platforms/cell/spufs/syscalls.c +++ b/arch/powerpc/platforms/cell/spufs/syscalls.c | |||
@@ -70,7 +70,7 @@ static long do_spu_create(const char __user *pathname, unsigned int flags, | |||
70 | ret = PTR_ERR(dentry); | 70 | ret = PTR_ERR(dentry); |
71 | if (!IS_ERR(dentry)) { | 71 | if (!IS_ERR(dentry)) { |
72 | ret = spufs_create(&path, dentry, flags, mode, neighbor); | 72 | ret = spufs_create(&path, dentry, flags, mode, neighbor); |
73 | path_put(&path); | 73 | done_path_create(&path, dentry); |
74 | } | 74 | } |
75 | 75 | ||
76 | return ret; | 76 | return ret; |
diff --git a/arch/powerpc/sysdev/fsl_85xx_cache_ctlr.h b/arch/powerpc/sysdev/fsl_85xx_cache_ctlr.h index 60c9c0bd5ba..2aa97ddb7b7 100644 --- a/arch/powerpc/sysdev/fsl_85xx_cache_ctlr.h +++ b/arch/powerpc/sysdev/fsl_85xx_cache_ctlr.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright 2009-2010 Freescale Semiconductor, Inc | 2 | * Copyright 2009-2010, 2012 Freescale Semiconductor, Inc |
3 | * | 3 | * |
4 | * QorIQ based Cache Controller Memory Mapped Registers | 4 | * QorIQ based Cache Controller Memory Mapped Registers |
5 | * | 5 | * |
@@ -91,7 +91,7 @@ struct mpc85xx_l2ctlr { | |||
91 | 91 | ||
92 | struct sram_parameters { | 92 | struct sram_parameters { |
93 | unsigned int sram_size; | 93 | unsigned int sram_size; |
94 | uint64_t sram_offset; | 94 | phys_addr_t sram_offset; |
95 | }; | 95 | }; |
96 | 96 | ||
97 | extern int instantiate_cache_sram(struct platform_device *dev, | 97 | extern int instantiate_cache_sram(struct platform_device *dev, |
diff --git a/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c b/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c index cedabd0f4bf..68ac3aacb19 100644 --- a/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c +++ b/arch/powerpc/sysdev/fsl_85xx_l2ctlr.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright 2009-2010 Freescale Semiconductor, Inc. | 2 | * Copyright 2009-2010, 2012 Freescale Semiconductor, Inc. |
3 | * | 3 | * |
4 | * QorIQ (P1/P2) L2 controller init for Cache-SRAM instantiation | 4 | * QorIQ (P1/P2) L2 controller init for Cache-SRAM instantiation |
5 | * | 5 | * |
@@ -31,24 +31,21 @@ static char *sram_size; | |||
31 | static char *sram_offset; | 31 | static char *sram_offset; |
32 | struct mpc85xx_l2ctlr __iomem *l2ctlr; | 32 | struct mpc85xx_l2ctlr __iomem *l2ctlr; |
33 | 33 | ||
34 | static long get_cache_sram_size(void) | 34 | static int get_cache_sram_params(struct sram_parameters *sram_params) |
35 | { | 35 | { |
36 | unsigned long val; | 36 | unsigned long long addr; |
37 | unsigned int size; | ||
37 | 38 | ||
38 | if (!sram_size || (strict_strtoul(sram_size, 0, &val) < 0)) | 39 | if (!sram_size || (kstrtouint(sram_size, 0, &size) < 0)) |
39 | return -EINVAL; | 40 | return -EINVAL; |
40 | 41 | ||
41 | return val; | 42 | if (!sram_offset || (kstrtoull(sram_offset, 0, &addr) < 0)) |
42 | } | ||
43 | |||
44 | static long get_cache_sram_offset(void) | ||
45 | { | ||
46 | unsigned long val; | ||
47 | |||
48 | if (!sram_offset || (strict_strtoul(sram_offset, 0, &val) < 0)) | ||
49 | return -EINVAL; | 43 | return -EINVAL; |
50 | 44 | ||
51 | return val; | 45 | sram_params->sram_offset = addr; |
46 | sram_params->sram_size = size; | ||
47 | |||
48 | return 0; | ||
52 | } | 49 | } |
53 | 50 | ||
54 | static int __init get_size_from_cmdline(char *str) | 51 | static int __init get_size_from_cmdline(char *str) |
@@ -93,17 +90,9 @@ static int __devinit mpc85xx_l2ctlr_of_probe(struct platform_device *dev) | |||
93 | } | 90 | } |
94 | l2cache_size = *prop; | 91 | l2cache_size = *prop; |
95 | 92 | ||
96 | sram_params.sram_size = get_cache_sram_size(); | 93 | if (get_cache_sram_params(&sram_params)) { |
97 | if ((int)sram_params.sram_size <= 0) { | ||
98 | dev_err(&dev->dev, | ||
99 | "Entire L2 as cache, Aborting Cache-SRAM stuff\n"); | ||
100 | return -EINVAL; | ||
101 | } | ||
102 | |||
103 | sram_params.sram_offset = get_cache_sram_offset(); | ||
104 | if ((int64_t)sram_params.sram_offset <= 0) { | ||
105 | dev_err(&dev->dev, | 94 | dev_err(&dev->dev, |
106 | "Entire L2 as cache, provide a valid sram offset\n"); | 95 | "Entire L2 as cache, provide valid sram offset and size\n"); |
107 | return -EINVAL; | 96 | return -EINVAL; |
108 | } | 97 | } |
109 | 98 | ||
@@ -125,14 +114,14 @@ static int __devinit mpc85xx_l2ctlr_of_probe(struct platform_device *dev) | |||
125 | * Write bits[0-17] to srbar0 | 114 | * Write bits[0-17] to srbar0 |
126 | */ | 115 | */ |
127 | out_be32(&l2ctlr->srbar0, | 116 | out_be32(&l2ctlr->srbar0, |
128 | sram_params.sram_offset & L2SRAM_BAR_MSK_LO18); | 117 | lower_32_bits(sram_params.sram_offset) & L2SRAM_BAR_MSK_LO18); |
129 | 118 | ||
130 | /* | 119 | /* |
131 | * Write bits[18-21] to srbare0 | 120 | * Write bits[18-21] to srbare0 |
132 | */ | 121 | */ |
133 | #ifdef CONFIG_PHYS_64BIT | 122 | #ifdef CONFIG_PHYS_64BIT |
134 | out_be32(&l2ctlr->srbarea0, | 123 | out_be32(&l2ctlr->srbarea0, |
135 | (sram_params.sram_offset >> 32) & L2SRAM_BARE_MSK_HI4); | 124 | upper_32_bits(sram_params.sram_offset) & L2SRAM_BARE_MSK_HI4); |
136 | #endif | 125 | #endif |
137 | 126 | ||
138 | clrsetbits_be32(&l2ctlr->ctl, L2CR_L2E, L2CR_L2FI); | 127 | clrsetbits_be32(&l2ctlr->ctl, L2CR_L2E, L2CR_L2FI); |
diff --git a/arch/powerpc/sysdev/xics/icp-hv.c b/arch/powerpc/sysdev/xics/icp-hv.c index 253dce98c16..14469cf9df6 100644 --- a/arch/powerpc/sysdev/xics/icp-hv.c +++ b/arch/powerpc/sysdev/xics/icp-hv.c | |||
@@ -111,7 +111,7 @@ static unsigned int icp_hv_get_irq(void) | |||
111 | if (vec == XICS_IRQ_SPURIOUS) | 111 | if (vec == XICS_IRQ_SPURIOUS) |
112 | return NO_IRQ; | 112 | return NO_IRQ; |
113 | 113 | ||
114 | irq = irq_radix_revmap_lookup(xics_host, vec); | 114 | irq = irq_find_mapping(xics_host, vec); |
115 | if (likely(irq != NO_IRQ)) { | 115 | if (likely(irq != NO_IRQ)) { |
116 | xics_push_cppr(vec); | 116 | xics_push_cppr(vec); |
117 | return irq; | 117 | return irq; |
diff --git a/arch/powerpc/sysdev/xics/icp-native.c b/arch/powerpc/sysdev/xics/icp-native.c index 4c79b6fbee1..48861d3fcd0 100644 --- a/arch/powerpc/sysdev/xics/icp-native.c +++ b/arch/powerpc/sysdev/xics/icp-native.c | |||
@@ -119,7 +119,7 @@ static unsigned int icp_native_get_irq(void) | |||
119 | if (vec == XICS_IRQ_SPURIOUS) | 119 | if (vec == XICS_IRQ_SPURIOUS) |
120 | return NO_IRQ; | 120 | return NO_IRQ; |
121 | 121 | ||
122 | irq = irq_radix_revmap_lookup(xics_host, vec); | 122 | irq = irq_find_mapping(xics_host, vec); |
123 | if (likely(irq != NO_IRQ)) { | 123 | if (likely(irq != NO_IRQ)) { |
124 | xics_push_cppr(vec); | 124 | xics_push_cppr(vec); |
125 | return irq; | 125 | return irq; |
diff --git a/arch/powerpc/sysdev/xics/xics-common.c b/arch/powerpc/sysdev/xics/xics-common.c index cd1d18db92c..9049d9f4448 100644 --- a/arch/powerpc/sysdev/xics/xics-common.c +++ b/arch/powerpc/sysdev/xics/xics-common.c | |||
@@ -329,9 +329,6 @@ static int xics_host_map(struct irq_domain *h, unsigned int virq, | |||
329 | 329 | ||
330 | pr_devel("xics: map virq %d, hwirq 0x%lx\n", virq, hw); | 330 | pr_devel("xics: map virq %d, hwirq 0x%lx\n", virq, hw); |
331 | 331 | ||
332 | /* Insert the interrupt mapping into the radix tree for fast lookup */ | ||
333 | irq_radix_revmap_insert(xics_host, virq, hw); | ||
334 | |||
335 | /* They aren't all level sensitive but we just don't really know */ | 332 | /* They aren't all level sensitive but we just don't really know */ |
336 | irq_set_status_flags(virq, IRQ_LEVEL); | 333 | irq_set_status_flags(virq, IRQ_LEVEL); |
337 | 334 | ||