On 4/21/20 11:35 AM, Cornelia Huck wrote: > On Fri, 17 Apr 2020 04:29:53 +0200 > Eric Farman <farman@xxxxxxxxxxxxx> wrote: > >> Here is a new pass at the channel-path handling code for vfio-ccw. >> Changes from previous versions are recorded in git notes for each patch. >> >> I dropped the "Remove inline get_schid()" patch from this version. >> When I made the change suggested in v2, it seemed rather frivolous and >> better to just drop it for the time being. >> >> I suspect that patches 5 and 7 would be better squashed together, but I >> have not done that here. For future versions, I guess. > > The result also might get a bit large. True. Not that someone would pick patch 5 and not 7, but vfio-ccw is broken between them, because of a mismatch in IRQs. An example from hotplug: error: internal error: unable to execute QEMU command 'device_add': vfio: unexpected number of irqs 1 Maybe I just pull the CRW_IRQ definition into 5, and leave the wiring of the CRW stuff in 7. That seems to leave a better behavior. > >> >> With this, and the corresponding QEMU series (to be posted momentarily), >> applied I am able to configure off/on a CHPID (for example, by issuing >> "chchp -c 0/1 xx" on the host), and the guest is able to see both the >> events and reflect the updated path masks in its structures. > > Basically, this looks good to me (modulo my comments). Woo! Thanks for the feedback; I'm going to try to get them all addressed in the next couple of days. > > One thing though that keeps coming up: do we need any kind of > serialization? Can there be any confusion from concurrent reads from > userspace, or are we sure that we always provide consistent data? > I'm feeling better with the rearrangement in this version of how we get data from the queue of CRWs into the region and off to the guest. The weirdness I described a few months ago seems to have been triggered by one of the patches that's now been dropped. But I'll walk through this code again once I get your latest comments applied.