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