diff options
author | Christian Borntraeger <borntraeger@de.ibm.com> | 2015-09-28 23:47:42 +0300 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2015-09-29 15:45:10 +0300 |
commit | adc0b7fbf6fe9967505c0254d9535ec7288186ae (patch) | |
tree | 3ec22eda5f75d641e016d5205e26912773320748 /lib/mpi/mpicoder.c | |
parent | 22be9cd9f22a4b2acc5fe6666ca23206ebe4d495 (diff) | |
download | linux-adc0b7fbf6fe9967505c0254d9535ec7288186ae.tar.xz |
s390/boot/decompression: disable floating point in decompressor
my gcc 5.1 used an ldgr instruction with a register != 0,2,4,6 for
spilling/filling into a floating point register in our decompressor.
This will cause an AFP-register data exception as the decompressor
did not setup the additional floating point registers via cr0.
That causes a program check loop that looked like a hang with
one "Uncompressing Linux... " message (directly booted via kvm)
or a loop of "Uncompressing Linux... " messages (when booted via
zipl boot loader).
The offending code in my build was
48e400: e3 c0 af ff ff 71 lay %r12,-1(%r10)
-->48e406: b3 c1 00 1c ldgr %f1,%r12
48e40a: ec 6c 01 22 02 7f clij %r6,2,12,0x48e64e
but gcc could do spilling into an fpr at any function. We can
simply disable floating point support at that early stage.
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: stable@vger.kernel.org
Diffstat (limited to 'lib/mpi/mpicoder.c')
0 files changed, 0 insertions, 0 deletions