On Tue, 2 May 2017 10:15:19 +0800 Dong Jia Shi <bjsdjshi@xxxxxxxxxxxxxxxxxx> wrote: > * Auger Eric <eric.auger@xxxxxxxxxx> [2017-05-01 19:28:23 +0200]: > > > static void vfio_ccw_io_notifier_handler(void *opaque) > > > { > > > VFIOCCWDevice *vcdev = opaque; > > > + struct ccw_io_region *region = vcdev->io_region; > > > + S390CCWDevice *cdev = S390_CCW_DEVICE(vcdev); > > > + CcwDevice *ccw_dev = CCW_DEVICE(cdev); > > > + SubchDev *sch = ccw_dev->sch; > > > + SCSW *s = &sch->curr_status.scsw; > > > + IRB irb; > > > > > > if (!event_notifier_test_and_clear(&vcdev->io_notifier)) { > > > return; > > > } > > > + > > > + if (pread(vcdev->vdev.fd, region, > > > + vcdev->io_region_size, vcdev->io_region_offset) == -1) { > > is it possible to read less bytes than requested? > Currently, impossible. The kernel side returns either the full region, > or an error. > But we surely could make it more friendly for a partial return. I will > add a check for that case, and generate a channel program check for it. I think a channel-control check would be more appropriate here.