[RfC PATCH 5/6] vfio/display: adding region support
Gerd Hoffmann
kraxel at redhat.com
Wed Oct 11 10:47:20 UTC 2017
Hi,
> > + ret = ioctl(vdev->vbasedev.fd, VFIO_DEVICE_QUERY_GFX_PLANE,
> > &plane);
> > + if (ret < 0) {
> > + fprintf(stderr, "ioctl VFIO_DEVICE_QUERY_GFX_PLANE: %s\n",
> > + strerror(errno));
>
> %m?
Oh, neat, didn't know this even exists.
man page says it is a glibc extension though. So do we really want use
it in a portable code base? In this specific case it would probably
not cause any trouble though as vfio is linux-only anyway.
> > + if (vdev->region_mmap == NULL) {
> > + /* mmap region */
> > + ret = vfio_get_region_info(&vdev->vbasedev,
> > plane.region_index,
> > + ®ion);
> > + if (ret != 0) {
> > + fprintf(stderr, "%s: vfio_get_region_info(%d): %s\n",
> > + __func__, plane.region_index, strerror(-ret));
> > + return;
> > + }
> > + vdev->region_size = region->size;
> > + vdev->region_mmap = mmap(NULL, region->size,
> > + PROT_READ, MAP_SHARED,
> > + vdev->vbasedev.fd,
> > + region->offset);
> > + if (vdev->region_mmap == MAP_FAILED) {
> > + fprintf(stderr, "%s: mmap region %d: %s\n", __func__,
> > + plane.region_index, strerror(errno));
> > + vdev->region_mmap = NULL;
> > + g_free(region);
> > + return;
> > + }
>
> Seems like we should really try to use a VFIORegion for this.
IIRC I checked this, but it didn't look straight forward as VFIORegion
is designed for guest access not host access.
cheers,
Gerd
More information about the intel-gvt-dev
mailing list