summaryrefslogtreecommitdiff
path: root/rust/helpers.c
diff options
context:
space:
mode:
authorEric Farman <farman@linux.ibm.com>2024-02-06 00:43:00 +0300
committerJanosch Frank <frankja@linux.ibm.com>2024-02-22 12:36:42 +0300
commit85a19b3054274e09bcd9043d7d3203c3836688d0 (patch)
treeb2839c629177de81721a609a72c46ddab7077df3 /rust/helpers.c
parent7b2411e793673b6282ab7907be26b82234681313 (diff)
downloadlinux-85a19b3054274e09bcd9043d7d3203c3836688d0.tar.xz
KVM: s390: only deliver the set service event bits
The SCLP driver code masks off the last two bits of the parameter [1] to determine if a read is required, but doesn't care about the contents of those bits. Meanwhile, the KVM code that delivers event interrupts masks off those two bits but sends both to the guest, even if only one was specified by userspace [2]. This works for the driver code, but it means any nuances of those bits gets lost. Use the event pending mask as an actual mask, and only send the bit(s) that were specified in the pending interrupt. [1] Linux: sclp_interrupt_handler() (drivers/s390/char/sclp.c:658) [2] QEMU: service_interrupt() (hw/s390x/sclp.c:360..363) Fixes: 0890ddea1a90 ("KVM: s390: protvirt: Add SCLP interrupt handling") Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com> Reviewed-by: Janosch Frank <frankja@linux.ibm.com> Link: https://lore.kernel.org/r/20240205214300.1018522-1-farman@linux.ibm.com Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Message-Id: <20240205214300.1018522-1-farman@linux.ibm.com>
Diffstat (limited to 'rust/helpers.c')
0 files changed, 0 insertions, 0 deletions