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