linux/arch/s390
Christian Borntraeger 8ba742c051 s390/boot/decompression: disable floating point in decompressor
[ Upstream commit adc0b7fbf6 ]

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
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2015-10-27 22:13:16 -04:00
..
appldata s390/appldata: add slab.h for kzalloc/kfree 2014-05-20 08:58:51 +02:00
boot s390/boot/decompression: disable floating point in decompressor 2015-10-27 22:13:16 -04:00
configs s390: update default configuration 2014-10-27 13:27:03 +01:00
crypto crypto: s390/ghash - Fix incorrect ghash icv buffer handling. 2015-06-10 13:42:28 -04:00
hypfs hypfs: Add clarification for "weight_min" attribute 2014-03-17 15:53:03 +01:00
include kexec: allocate the kexec control page with KEXEC_CONTROL_MEMORY_GFP 2015-08-27 13:26:05 -04:00
kernel s390/compat: correct uc_sigmask of the compat signal frame 2015-10-27 22:13:15 -04:00
kvm KVM: s390: fix get_all_floating_irqs 2015-05-17 19:11:49 -04:00
lib s390/uprobes: fix kprobes dependency 2014-10-17 14:45:51 +02:00
math-emu s390: fix save and restore of the floating-point-control register 2013-10-24 17:17:11 +02:00
mm mm/hugetlb: use pmd_page() in follow_huge_pmd() 2015-05-17 19:12:31 -04:00
net net: filter: constify detection of pkt_type_offset 2014-09-13 17:07:21 -04:00
oprofile s390: Replace __get_cpu_var uses 2014-08-26 13:45:52 -04:00
pci s390/pci: introduce lazy IOTLB flushing for DMA unmap 2014-07-22 09:26:24 +02:00
defconfig s390: update default configuration 2014-10-27 13:27:03 +01:00
Kbuild s390/pci: base support 2012-11-30 15:40:45 +01:00
Kconfig Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2014-10-14 03:47:00 +02:00
Kconfig.debug Kconfig: consolidate CONFIG_DEBUG_STRICT_USER_COPY_CHECKS 2013-04-30 17:04:09 -07:00
Makefile s390: pass march flag to assembly files as well 2014-09-09 08:53:28 +02:00