From bccabda5868107eb02c38322c7b79161f5e27511 Mon Sep 17 00:00:00 2001 From: Sasha Finkelstein Date: Fri, 17 Jan 2025 12:34:28 +0100 Subject: [PATCH 21/21] virtgpu: mixed page size This allows running different page sizes between host and guest on platforms that support mixed page sizes. Signed-off-by: Sasha Finkelstein --- drivers/gpu/drm/virtio/virtgpu_vram.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_vram.c b/drivers/gpu/drm/virtio/virtgpu_vram.c index 64e2c6dbdd67..cbadcba2c773 100644 --- a/drivers/gpu/drm/virtio/virtgpu_vram.c +++ b/drivers/gpu/drm/virtio/virtgpu_vram.c @@ -137,6 +137,12 @@ bool virtio_gpu_is_vram(struct virtio_gpu_object *bo) return bo->base.base.funcs == &virtio_gpu_vram_funcs; } +#if defined(__powerpc64__) || defined(__aarch64__) || defined(__mips__) || defined(__loongarch__) +#define MAX_PAGE_SIZE 65536 +#else +#define MAX_PAGE_SIZE PAGE_SIZE +#endif + static int virtio_gpu_vram_map(struct virtio_gpu_object *bo) { int ret; @@ -149,8 +155,8 @@ static int virtio_gpu_vram_map(struct virtio_gpu_object *bo) return -EINVAL; spin_lock(&vgdev->host_visible_lock); - ret = drm_mm_insert_node(&vgdev->host_visible_mm, &vram->vram_node, - bo->base.base.size); + ret = drm_mm_insert_node_generic(&vgdev->host_visible_mm, &vram->vram_node, + bo->base.base.size, MAX_PAGE_SIZE, 0, 0); spin_unlock(&vgdev->host_visible_lock); if (ret) -- 2.47.1