linux/arch/s390
Christian Borntraeger ff7cad4b0d s390/boot/decompression: disable floating point in decompressor
commit adc0b7fbf6 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-10-22 14:43:14 -07:00
..
appldata s390: appldata: drop owner assignment from platform_drivers 2014-10-20 16:20:13 +02:00
boot s390/boot/decompression: disable floating point in decompressor 2015-10-22 14:43:14 -07:00
configs s390: update default configuration 2015-01-22 12:16:09 +01:00
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2015-05-22 14:26:36 -07:00
hypfs sysfs: Create mountpoints with sysfs_create_mount_point 2015-07-21 10:10:01 -07:00
include s390/nmi: fix vector register corruption 2015-08-10 12:21:52 -07:00
kernel s390/compat: correct uc_sigmask of the compat signal frame 2015-10-22 14:43:14 -07:00
kvm KVM: s390: clear floating interrupt bitmap and parameters 2015-07-10 09:49:36 -07:00
lib s390: remove "64" suffix from mem64.S and swsusp_asm64.S 2015-03-25 11:49:51 +01:00
mm s390/mm: change swap pte encoding and pgtable cleanup 2015-04-23 16:56:20 +02:00
net s390/bpf: clear correct BPF accumulator register 2015-08-10 12:21:52 -07:00
oprofile s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2015-04-20 10:15:33 -07:00
defconfig s390: update default configuration 2015-01-22 12:16:09 +01:00
Kbuild s390: remove 31 bit support 2015-03-25 11:49:33 +01:00
Kconfig s390/bpf: add dependency to z196 features 2015-04-23 16:55:50 +02:00
Kconfig.debug Kconfig: consolidate CONFIG_DEBUG_STRICT_USER_COPY_CHECKS 2013-04-30 17:04:09 -07:00
Makefile s390: remove 31 bit support 2015-03-25 11:49:33 +01:00