Skip to content

Commit a2ff820

Browse files
committed
Merge branch 'parisc-3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc fix from Helge Deller: "This is a 2-line patch to save the CPU register which holds our task thread info pointer before calling a firmware function and then to restore it again afterwards. This is necessary because on some 64bit machines the high-order 32bits are being clobbered by the firmware call, and thus we failed to bring up secondary CPUs (and instead crashed the kernel) in some situations eg if we had more than 4GB RAM. This patch fixes a bug which has been since ever in the parisc linux kernel and which prevented some people to use a 64bit kernel" * 'parisc-3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: parisc: Do not crash 64bit SMP kernels on machines with >= 4GB RAM
2 parents aff22d3 + 54e181e commit a2ff820

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

arch/parisc/kernel/head.S

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,8 @@ common_stext:
195195
ldw MEM_PDC_HI(%r0),%r6
196196
depd %r6, 31, 32, %r3 /* move to upper word */
197197

198+
mfctl %cr30,%r6 /* PCX-W2 firmware bug */
199+
198200
ldo PDC_PSW(%r0),%arg0 /* 21 */
199201
ldo PDC_PSW_SET_DEFAULTS(%r0),%arg1 /* 2 */
200202
ldo PDC_PSW_WIDE_BIT(%r0),%arg2 /* 2 */
@@ -203,6 +205,8 @@ common_stext:
203205
copy %r0,%arg3
204206

205207
stext_pdc_ret:
208+
mtctl %r6,%cr30 /* restore task thread info */
209+
206210
/* restore rfi target address*/
207211
ldd TI_TASK-THREAD_SZ_ALGN(%sp), %r10
208212
tophys_r1 %r10

0 commit comments

Comments
 (0)