Message ID | 20200417023440.70514-5-farman@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x/vfio-ccw: Channel Path Handling [QEMU] | expand |
On Fri, 17 Apr 2020 04:34:37 +0200 Eric Farman <farman@linux.ibm.com> wrote: > From: Farhan Ali <alifm@linux.ibm.com> > > The crw region can be used to obtain information about > Channel Report Words (CRW) from vfio-ccw driver. > > Currently only channel path related CRWs are passed to > QEMU from vfio-ccw driver. > > Signed-off-by: Farhan Ali <alifm@linux.ibm.com> > Signed-off-by: Eric Farman <farman@linux.ibm.com> > --- > > Notes: > v0->v1: [EF] > - Fixed copy/paste error in error message (s/schib/CRW) > > hw/vfio/ccw.c | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) Maybe merge this into patch 7? It is small enough. Patch looks sane to me.
On 4/21/20 8:21 AM, Cornelia Huck wrote: > On Fri, 17 Apr 2020 04:34:37 +0200 > Eric Farman <farman@linux.ibm.com> wrote: > >> From: Farhan Ali <alifm@linux.ibm.com> >> >> The crw region can be used to obtain information about >> Channel Report Words (CRW) from vfio-ccw driver. >> >> Currently only channel path related CRWs are passed to >> QEMU from vfio-ccw driver. >> >> Signed-off-by: Farhan Ali <alifm@linux.ibm.com> >> Signed-off-by: Eric Farman <farman@linux.ibm.com> >> --- >> >> Notes: >> v0->v1: [EF] >> - Fixed copy/paste error in error message (s/schib/CRW) >> >> hw/vfio/ccw.c | 18 ++++++++++++++++++ >> 1 file changed, 18 insertions(+) > > Maybe merge this into patch 7? It is small enough. Yeah, doesn't make much sense on its own. Done. > > Patch looks sane to me. >
diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c index 8aa224bf43..db565b6f38 100644 --- a/hw/vfio/ccw.c +++ b/hw/vfio/ccw.c @@ -44,6 +44,9 @@ struct VFIOCCWDevice { uint64_t schib_region_size; uint64_t schib_region_offset; struct ccw_schib_region *schib_region; + uint64_t crw_region_size; + uint64_t crw_region_offset; + struct ccw_crw_region *crw_region; EventNotifier io_notifier; bool force_orb_pfch; bool warned_orb_pfch; @@ -449,10 +452,24 @@ static void vfio_ccw_get_region(VFIOCCWDevice *vcdev, Error **errp) vcdev->schib_region = g_malloc(info->size); } + ret = vfio_get_dev_region_info(vdev, VFIO_REGION_TYPE_CCW, + VFIO_REGION_SUBTYPE_CCW_CRW, &info); + + if (!ret) { + vcdev->crw_region_size = info->size; + if (sizeof(*vcdev->crw_region) != vcdev->crw_region_size) { + error_setg(errp, "vfio: Unexpected size of the CRW region"); + goto out_err; + } + vcdev->crw_region_offset = info->offset; + vcdev->crw_region = g_malloc(info->size); + } + g_free(info); return; out_err: + g_free(vcdev->crw_region); g_free(vcdev->schib_region); g_free(vcdev->async_cmd_region); g_free(vcdev->io_region); @@ -462,6 +479,7 @@ out_err: static void vfio_ccw_put_region(VFIOCCWDevice *vcdev) { + g_free(vcdev->crw_region); g_free(vcdev->schib_region); g_free(vcdev->async_cmd_region); g_free(vcdev->io_region);