On Wed, Sep 09, 2020 at 08:23:39AM +0200, Bjoern Walk wrote:
Erik Skultety <eskultet(a)redhat.com> [2020-09-08, 06:01PM
+0200]:
> On Mon, Aug 24, 2020 at 01:59:15PM +0200, Bjoern Walk wrote:
> > From: Boris Fiuczynski <fiuczy(a)linux.ibm.com>
> > + case VIR_NODE_DEV_CAP_SYSTEM:
> > + case VIR_NODE_DEV_CAP_USB_DEV:
> > + case VIR_NODE_DEV_CAP_USB_INTERFACE:
> > + case VIR_NODE_DEV_CAP_NET:
> > + case VIR_NODE_DEV_CAP_SCSI_HOST:
> > + case VIR_NODE_DEV_CAP_SCSI_TARGET:
> > + case VIR_NODE_DEV_CAP_SCSI:
> > + case VIR_NODE_DEV_CAP_STORAGE:
> > + case VIR_NODE_DEV_CAP_FC_HOST:
> > + case VIR_NODE_DEV_CAP_VPORTS:
> > + case VIR_NODE_DEV_CAP_SCSI_GENERIC:
> > + case VIR_NODE_DEV_CAP_DRM:
> > + case VIR_NODE_DEV_CAP_MDEV_TYPES:
> > + case VIR_NODE_DEV_CAP_MDEV:
> > + case VIR_NODE_DEV_CAP_CCW_DEV:
>
> What about ccw mdevs? I would think that it's CCW end point device that
> we would want to assign concurrently, but we're only "slicing" the
root channel
> subsystem device. If you have and CSS mdev, are the CCW subchannels separate
> for each VM or does it behave kind of like NPIV with its vHBAs? OR I'm
> completely off here?
You are correct. This is an unfortunate architectural decision on our
platform. For vfio-ccw, we instatiate the mdevs on the CSS layer, which
has a 1-to-1 relation to the underlying CCW device. That's why we need
the information about the CSS devices in libvirt, to give the user a
chance to easily find this relation when he wants to do passthrough with
a DASD for example. It's a bit unintuitive and even silly for the
end user, but it's architecturally correct and hence it was implemented
like this in the vfio-ccw kernel driver. We don't even get the benefits
of something like NPIV because for every subchannel there is only one
CCW device (at least to my knowledge).
Having read both Connie's blog on channels and the I/O chapter in the free
architectural publication you linked in the other reply, I now have a very
vague understating of the architecture. One thing that still
puzzles me though is that if there's a 1:1 subchannel mapping between CSS and an
CCW device which then communicates via a control unit (which there may be more
than 1) with CSS over up to 8 channel paths (this at least to me resembles
NPIV), what does the mdev really solve, can't you assign one of the channel
paths of one of the several control units the device is connected to to
plug into the VM? Well, clearly not, I'm just being curious and trying to
understand the use case here.
Regards,
Erik