There's an incresing number of machines supporting multiple page sizes and on these machines the host and a guest can be running, each one, with a different page size.
For what pertains to virtio-gpu, this is not a problem if the page size of the guest happens to be bigger or equal than the host, but will potentially lead to failures in memory allocations and/or mappings otherwise. To deal with this, the virtio-spec was extended to introduce with the VIRTIO_GPU_F_BLOB_ALIGNMENT feature [1]. If this feature is negotiated, we must use the "blob_alignment" field in the config to ensure every CREATE_BLOB and MAP_BLOB is properly aligned before sending it to the device. We also introduce the VIRTGPU_PARAM_BLOB_ALIGNMENT parameter to allow userspace to query the alignment restrictions for blobs. This supersedes "drm/virtio: introduce the HOST_PAGE_SIZE feature" [2]. [1] https://github.com/oasis-tcs/virtio-spec/commit/f9abfd55cb663837dda1153b826216dcf4d25b84 [2] https://lkml.org/lkml/2024/7/23/438 Sergio Lopez (3): drm/virtio: support VIRTIO_GPU_F_BLOB_ALIGNMENT drm/virtio: honor blob_alignment requirements drm/virtio: add VIRTGPU_PARAM_BLOB_ALIGNMENT to params drivers/gpu/drm/virtio/virtgpu_drv.c | 1 + drivers/gpu/drm/virtio/virtgpu_drv.h | 4 +++- drivers/gpu/drm/virtio/virtgpu_ioctl.c | 5 +++++ drivers/gpu/drm/virtio/virtgpu_kms.c | 14 +++++++++++--- drivers/gpu/drm/virtio/virtgpu_object.c | 6 ++++-- drivers/gpu/drm/virtio/virtgpu_prime.c | 7 +++++-- drivers/gpu/drm/virtio/virtgpu_vq.c | 12 +++++++++++- drivers/gpu/drm/virtio/virtgpu_vram.c | 10 ++++++++-- include/uapi/drm/virtgpu_drm.h | 1 + include/uapi/linux/virtio_gpu.h | 9 +++++++++ 10 files changed, 58 insertions(+), 11 deletions(-) -- 2.51.0
