* Alex Williamson <alex.william...@redhat.com> [2017-04-24 20:16:18 -0600]:
> On Tue, 25 Apr 2017 10:10:22 +0800 > Dong Jia Shi <bjsdj...@linux.vnet.ibm.com> wrote: > > > * Alex Williamson <alex.william...@redhat.com> [2017-04-24 16:52:58 -0600]: > > > > > On Wed, 12 Apr 2017 07:21:08 +0200 > > > Dong Jia Shi <bjsdj...@linux.vnet.ibm.com> wrote: > > > > > > > In order to support subchannels pass-through, we introduce a s390 > > > > subchannel device called "s390-ccw" to hold the real subchannel info. > > > > The s390-ccw devices inherit from the abstract CcwDevice which connect > > > > to the existing virtual-css-bus. > > > > > > > > Signed-off-by: Dong Jia Shi <bjsdj...@linux.vnet.ibm.com> > > > > --- > > > > hw/s390x/Makefile.objs | 1 + > > > > hw/s390x/s390-ccw.c | 134 > > > > +++++++++++++++++++++++++++++++++++++++++++++++++ > > > > hw/s390x/s390-ccw.h | 38 ++++++++++++++ > > > > 3 files changed, 173 insertions(+) > > > > create mode 100644 hw/s390x/s390-ccw.c > > > > create mode 100644 hw/s390x/s390-ccw.h > > > > > > > > diff --git a/hw/s390x/Makefile.objs b/hw/s390x/Makefile.objs > > > > index 41ac4ec..72a3d37 100644 > > > > --- a/hw/s390x/Makefile.objs > > > > +++ b/hw/s390x/Makefile.objs > > > > @@ -13,3 +13,4 @@ obj-y += ccw-device.o > > > > obj-y += s390-pci-bus.o s390-pci-inst.o > > > > obj-y += s390-skeys.o > > > > obj-$(CONFIG_KVM) += s390-skeys-kvm.o > > > > +obj-y += s390-ccw.o > > > > diff --git a/hw/s390x/s390-ccw.c b/hw/s390x/s390-ccw.c > > > > new file mode 100644 > > > > index 0000000..f3d5ed1 > > > > --- /dev/null > > > > +++ b/hw/s390x/s390-ccw.c > > > > @@ -0,0 +1,134 @@ > > > > +/* > > > > + * s390 CCW Assignment Support > > > > + * > > > > + * Copyright 2017 IBM Corp > > > > + * Author(s): Dong Jia Shi <bjsdj...@linux.vnet.ibm.com> > > > > + * Xiao Feng Ren <renxi...@linux.vnet.ibm.com> > > > > + * Pierre Morel <pmo...@linux.vnet.ibm.com> > > > > + * > > > > + * This work is licensed under the terms of the GNU GPL, version 2 > > > > + * or (at your option) any later version. See the COPYING file in the > > > > + * top-level directory. > > > > + */ > > > > +#include "qemu/osdep.h" > > > > +#include "qapi/error.h" > > > > +#include "hw/sysbus.h" > > > > +#include "libgen.h" > > > > +#include "hw/s390x/css.h" > > > > +#include "hw/s390x/css-bridge.h" > > > > +#include "s390-ccw.h" > > > > + > > > > +static void s390_ccw_get_dev_info(S390CCWDevice *cdev, > > > > + char *sysfsdev, > > > > + Error **errp) > > > > +{ > > > > + char dev_path[PATH_MAX], *tmp; > > > > + unsigned int cssid, ssid, devid; > > > > + > > > > + if (!sysfsdev) { > > > > + error_setg(errp, "No host device provided"); > > > > + error_append_hint(errp, "Use > > > > -vfio-ccw,sysfsdev=PATH_TO_DEVICE\n"); > > > > > > nit, the leading '-' here seems strange, either you're describing > > > '-device vfio-ccw,...', or only the 'vfio-ccw,...' part. Maybe I > > > notice this because sometimes I do accidentally type -vfio-pci instead > > > of -device vfio-pci. Thanks, > > > > > > Alex > > > > > Ok. I will change it to: > > error_append_hint(errp, > > "Use -device vfio-ccw,sysfsdev=PATH_TO_DEVICE\n"); > > > > BTW, I learned this from the pci code. > > hw/vfio/pci.c:2628: > > error_append_hint(errp, "Use -vfio-pci,host=DDDD:BB:DD.F " > > "or -vfio-pci,sysfsdev=PATH_TO_DEVICE\n") > > Welcome a fix to that too? > > Aha, maybe that's where I learned my bad habit. Yes, please send a > patch separate from this series. Thanks, > > Alex > Will do soon. ;> > > > > + return; > > > > + } > > > > + > > > > + if (!realpath(sysfsdev, dev_path)) { > > > > + error_setg(errp, "Host device '%s' not found", sysfsdev); > > > > + return; > > > > + } > > > > + > > > > + cdev->mdevid = g_strdup(basename(dev_path)); > > > > + > > > > + tmp = basename(dirname(dev_path)); > > > > + sscanf(tmp, "%2x.%1x.%4x", &cssid, &ssid, &devid); > > > > + > > > > + cdev->hostid.cssid = cssid; > > > > + cdev->hostid.ssid = ssid; > > > > + cdev->hostid.devid = devid; > > > > + cdev->hostid.valid = true; > > > > +} > > > > + > > [...] > > > -- Dong Jia Shi