d665afae2a
A couple of fixes, including one which gives confidence we can submit to Factory finally. OBS-URL: https://build.opensuse.org/request/show/612290 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=410
49 lines
1.8 KiB
Diff
49 lines
1.8 KiB
Diff
From 2b39c3abb35d0725bd94b21475737098fbea22ff Mon Sep 17 00:00:00 2001
|
|
From: Cornelia Huck <cohuck@redhat.com>
|
|
Date: Fri, 4 May 2018 14:53:16 +0200
|
|
Subject: [PATCH] s390x/css: disabled subchannels cannot be status pending
|
|
|
|
The 3270 code will try to post an attention interrupt when the
|
|
3270 emulator (e.g. x3270) attaches. If the guest has not yet
|
|
enabled the subchannel for the 3270 device, we will present a spurious
|
|
cc 1 (status pending) when it uses msch on it later on, e.g. when
|
|
trying to enable the subchannel.
|
|
|
|
To fix this, just don't do anything in css_conditional_io_interrupt()
|
|
if the subchannel is not enabled. The 3270 code will work fine with
|
|
that, and the other user of this function (virtio-ccw) never
|
|
attempts to post an interrupt for a disabled device to begin with.
|
|
|
|
CC: qemu-stable@nongnu.org
|
|
Reported-by: Thomas Huth <thuth@redhat.com>
|
|
Tested-by: Thomas Huth <thuth@redhat.com>
|
|
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
|
|
Acked-by: Halil Pasic <pasic@linux.ibm.com>
|
|
Reviewed-by: David Hildenbrand <david@redhat.com>
|
|
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
|
|
(cherry picked from commit 6e9c893ecd00afd5344c35d0d0ded50eaa0938f6)
|
|
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
|
---
|
|
hw/s390x/css.c | 8 ++++++++
|
|
1 file changed, 8 insertions(+)
|
|
|
|
diff --git a/hw/s390x/css.c b/hw/s390x/css.c
|
|
index 301bf1772f..56c3fa8c89 100644
|
|
--- a/hw/s390x/css.c
|
|
+++ b/hw/s390x/css.c
|
|
@@ -616,6 +616,14 @@ void css_inject_io_interrupt(SubchDev *sch)
|
|
|
|
void css_conditional_io_interrupt(SubchDev *sch)
|
|
{
|
|
+ /*
|
|
+ * If the subchannel is not enabled, it is not made status pending
|
|
+ * (see PoP p. 16-17, "Status Control").
|
|
+ */
|
|
+ if (!(sch->curr_status.pmcw.flags & PMCW_FLAGS_MASK_ENA)) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
/*
|
|
* If the subchannel is not currently status pending, make it pending
|
|
* with alert status.
|