ddf19c
From d5f5a307f3396064d29ef0d300c7377756dd165b Mon Sep 17 00:00:00 2001
ddf19c
From: Cornelia Huck <cohuck@redhat.com>
ddf19c
Date: Tue, 23 Jun 2020 09:25:36 -0400
ddf19c
Subject: [PATCH 02/12] vfio-ccw: allow non-prefetch ORBs
ddf19c
ddf19c
RH-Author: Cornelia Huck <cohuck@redhat.com>
ddf19c
Message-id: <20200623092543.358315-3-cohuck@redhat.com>
ddf19c
Patchwork-id: 97692
ddf19c
O-Subject: [RHEL-8.3.0 qemu-kvm PATCH 2/9] vfio-ccw: allow non-prefetch ORBs
ddf19c
Bugzilla: 1660916
ddf19c
RH-Acked-by: Claudio Imbrenda <cimbrend@redhat.com>
ddf19c
RH-Acked-by: David Hildenbrand <david@redhat.com>
ddf19c
RH-Acked-by: Thomas Huth <thuth@redhat.com>
ddf19c
ddf19c
From: Jared Rossi <jrossi@linux.ibm.com>
ddf19c
ddf19c
Remove the explicit prefetch check when using vfio-ccw devices.
ddf19c
This check does not trigger in practice as all Linux channel programs
ddf19c
are intended to use prefetch.
ddf19c
ddf19c
Newer Linux kernel versions do not require to force the PFCH flag with
ddf19c
vfio-ccw devices anymore.
ddf19c
ddf19c
Signed-off-by: Jared Rossi <jrossi@linux.ibm.com>
ddf19c
Reviewed-by: Eric Farman <farman@linux.ibm.com>
ddf19c
Message-Id: <20200512181535.18630-2-jrossi@linux.ibm.com>
ddf19c
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
ddf19c
(cherry picked from commit 24e58a7b1d411627e326144030a20dcf0093fed0)
ddf19c
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
ddf19c
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
ddf19c
---
ddf19c
 hw/vfio/ccw.c | 13 +++----------
ddf19c
 1 file changed, 3 insertions(+), 10 deletions(-)
ddf19c
ddf19c
diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c
ddf19c
index 3b5520ae75..6bc612b5b7 100644
ddf19c
--- a/hw/vfio/ccw.c
ddf19c
+++ b/hw/vfio/ccw.c
ddf19c
@@ -74,16 +74,9 @@ static IOInstEnding vfio_ccw_handle_request(SubchDev *sch)
ddf19c
     struct ccw_io_region *region = vcdev->io_region;
ddf19c
     int ret;
ddf19c
 
ddf19c
-    if (!(sch->orb.ctrl0 & ORB_CTRL0_MASK_PFCH)) {
ddf19c
-        if (!(vcdev->force_orb_pfch)) {
ddf19c
-            warn_once_pfch(vcdev, sch, "requires PFCH flag set");
ddf19c
-            sch_gen_unit_exception(sch);
ddf19c
-            css_inject_io_interrupt(sch);
ddf19c
-            return IOINST_CC_EXPECTED;
ddf19c
-        } else {
ddf19c
-            sch->orb.ctrl0 |= ORB_CTRL0_MASK_PFCH;
ddf19c
-            warn_once_pfch(vcdev, sch, "PFCH flag forced");
ddf19c
-        }
ddf19c
+    if (!(sch->orb.ctrl0 & ORB_CTRL0_MASK_PFCH) && vcdev->force_orb_pfch) {
ddf19c
+        sch->orb.ctrl0 |= ORB_CTRL0_MASK_PFCH;
ddf19c
+        warn_once_pfch(vcdev, sch, "PFCH flag forced");
ddf19c
     }
ddf19c
 
ddf19c
     QEMU_BUILD_BUG_ON(sizeof(region->orb_area) != sizeof(ORB));
ddf19c
-- 
ddf19c
2.27.0
ddf19c