---- El vie., 08 ago. 2025 08:26:08 -0300, Michael S. Tsirkin <mst@xxxxxxxxxx> escribió ---- > On Thu, Aug 07, 2025 at 10:03:29AM -0300, Igor Torrente wrote: > > The commit 206cc44588f7 ("virtio: reject shm region if length is zero") > > breaks the Virtio-gpu `host_visible` feature. > > > > Right now in the Virtio-gpu code, `host_visible_region.len` is zero because > > the struct comes directly from the `kzalloc` allocation. And Virtio-gpu > > is using the `vm_get_shm_region` (drivers/virtio/virtio_mmio.c:536) to read > > the `addr` and `len` from Qemu/Crosvm. > > > > ``` > > drivers/gpu/drm/virtio/virtgpu_kms.c > > 132 vgdev = drmm_kzalloc(dev, sizeof(struct virtio_gpu_device), GFP_KERNEL); > > [...] > > 177 if (virtio_get_shm_region(vgdev->vdev, &vgdev->host_visible_region, > > 178 VIRTIO_GPU_SHM_ID_HOST_VISIBLE)) { > > ``` > > Now it always fails. > > > > As the Virtio-gpu relies on the previous behavior, this patch reverts > > the offending commit. > > > > Fixes: 206cc44588f7 ("virtio: reject shm region if length is zero` breaks the Virtio-gpu `host_visible") > > > > This reverts commit 206cc44588f72b49ad4d7e21a7472ab2a72a83df. > > > > Signed-off-by: Igor Torrente <igor.torrente@xxxxxxxxxxxxx> > > > Fixes has to be adjacent to Signed-off-by. Ohh, I will pay attention to this next time. > But anyway, I already included v1 in my tree, pls check it out > and tell me if more fixes are needed. I tested here your branch, and it's working fine. ``` [ 0.298365] [drm] pci: virtio-gpu-pci detected at 0000:00:04.0 [ 0.298506] [drm] Host memory window: 0x200000000 +0x200000000 [ 0.298510] [drm] features: +virgl +edid +resource_blob +host_visible ``` ``` Linux debian-arm64-vm-chromebook 6.16.0mst_virt_repo_linux-next+ #159 SMP PREEMPT_DYNAMIC Fri Aug 8 11:53:04 -03 2025 aarch64 GNU/Linux ``` Thanks for applying it, --- Igor Torrente > > > --- > > v2: Improve the commit message (Michael S. Tsirkin) > > > > include/linux/virtio_config.h | 2 -- > > 1 file changed, 2 deletions(-) > > > > diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h > > index b3e1d30c765b..169c7d367fac 100644 > > --- a/include/linux/virtio_config.h > > +++ b/include/linux/virtio_config.h > > @@ -329,8 +329,6 @@ static inline > > bool virtio_get_shm_region(struct virtio_device *vdev, > > struct virtio_shm_region *region, u8 id) > > { > > - if (!region->len) > > - return false; > > if (!vdev->config->get_shm_region) > > return false; > > return vdev->config->get_shm_region(vdev, region, id); > > -- > > 2.49.0 > >