On Fri, 8 Jun 2018 15:13:28 +0200 Halil Pasic <pasic@xxxxxxxxxxxxx> wrote: > On 06/08/2018 02:20 PM, Cornelia Huck wrote: > >>> My proposal is to do the same > >>> copying to scsw(r) again, which would mean we get a request with both > >>> the halt and the start bit set. The vfio code now needs to do a hsch > >>> (instead of a ssch). The real channel subsystem should figure this out, > >>> as we can't reliably check whether the start function has concluded > >>> already (there's always a race window). > >> This I do not agree scsw(r) is part of the driver. > >> The interface here is not a device interface anymore but a driver > >> interface. > >> SCSW is a status, it is at its place in QEMU device interface with the > >> guest > >> but here pwrite() sends a command. > > Hm, I rather consider that "we write a status, and the backend figures > > out what to do based on that status". > > > > The status of what? Kind of a target status? > > I think this approach is the source of lots of complications. For instance > take xsch. How are we supposed to react to a guest xsch (in QEMU and > in the kernel module)? My guess is that the right thing to do is to issue > an xsch in the vfio-ccw kernel module on the passed through subchannel. > But there is no bit in fctl for cancel. > > Bottom line is: I'm not happy with the current design but I'm not sure > if it's practical to do something about it (i.e. change it radically). It might make sense to keep this for ssch, maybe reuse it for hsch/csch, and think about something else for other things we want to handle (xsch, channel monitoring, the path handling stuff for which we already had a prototype etc.) It's probably not practical to do radical surgery on the existing code. [Speaking of which: Is there any current effort on the path handling things?]