Public bug reported:

commit 0b0ed657fe ("s390: remove critical section cleanup from entry.S")
introduced a problem where FPU registers were not properly restored when
entering SIE. This leads to crashes of applications runnning inside kvm,
as most of the programs in use nowdays are using FPU registers for
backing of general register content.


Fix is upstream:
author  Sven Schnelle <[email protected]>     2020-11-20 14:17:52 +0100
committer       Heiko Carstens <[email protected]>     2020-11-23 11:52:13 
+0100
commit  1179f170b6f0af7bb0b3b7628136eaac450ddf31 (patch)
tree    19e8acb64e0968b41de4899cc1315c41b002839e /arch/s390/kernel/entry.S
parent  78d732e1f326f74f240d416af9484928303d9951 (diff)
download        linux-1179f170b6f0af7bb0b3b7628136eaac450ddf31.tar.gz
s390: fix fpu restore in entry.S
We need to disable interrupts in load_fpu_regs(). Otherwise an
interrupt might come in after the registers are loaded, but before
CIF_FPU is cleared in load_fpu_regs(). When the interrupt returns,
CIF_FPU will be cleared and the registers will never be restored.

The entry.S code usually saves the interrupt state in __SF_EMPTY on the
stack when disabling/restoring interrupts. sie64a however saves the pointer
to the sie control block in __SF_SIE_CONTROL, which references the same
location.  This is non-obvious to the reader. To avoid thrashing the sie
control block pointer in load_fpu_regs(), move the __SIE_* offsets eight
bytes after __SF_EMPTY on the stack.

Cc: <[email protected]> # 5.8
Fixes: 0b0ed657fe00 ("s390: remove critical section cleanup from entry.S")
Reported-by: Pierre Morel <[email protected]>
Signed-off-by: Sven Schnelle <[email protected]>
Acked-by: Christian Borntraeger <[email protected]>
Reviewed-by: Heiko Carstens <[email protected]>
Signed-off-by: Heiko Carstens <[email protected]>

** Affects: ubuntu-z-systems
     Importance: Undecided
         Status: New

** Affects: linux (Ubuntu)
     Importance: Undecided
     Assignee: Skipper Bug Screeners (skipper-screen-team)
         Status: New


** Tags: architecture-s39064 bugnameltc-189961 severity-critical 
targetmilestone-inin---

** Tags added: architecture-s39064 bugnameltc-189961 severity-critical
targetmilestone-inin---

** Changed in: ubuntu
     Assignee: (unassigned) => Skipper Bug Screeners (skipper-screen-team)

** Package changed: ubuntu => linux (Ubuntu)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1906255

Title:
  [UBUNTU 20.10] Applications runing in QEMU/KVM get translation faults

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/1906255/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to