This patch series introduces enhancements to virtio-gpu to improve memory management and GPU virtualization capabilities for ROCm (Radeon Open Compute) workloads.
Usage example: -device virtio-gpu-gl,rocm=on The series includes: 1. Linux header updates for userptr blob flags: Synchronizes virtio-gpu headers with upstream kernel changes, adding VIRTIO_GPU_BLOB_FLAG_USE_USERPTR and VIRTIO_GPU_BLOB_FLAG_USERPTR_RDONLY blob flags. This enables user pointer mapping for blob resources, allowing guest applications to use user-allocated memory for GPU resources more efficiently. 2. Removal of nr_entries limit: Removes the artificial 16384 entry limit in virtio_gpu_create_mapping_iov() to align with kernel driver behavior and support legitimate large scatter-gather operations. 3. Linux header updates for ROCm capability: Synchronizes headers to add VIRTIO_GPU_CAPSET_ROCM capability set definition. 4. ROCm capability support: Adds native support for AMD's ROCm (Radeon Open Compute) platform through a new "rocm=on" device property and capability. This enables GPU compute workloads using the ROCm stack through virtio-gpu. Changes in v6: - Changed to RFC status - Removed VIRTIO_GPU_F_RESOURCE_USERPTR feature flag from patch 1 - Added VIRTIO_GPU_BLOB_FLAG_USERPTR_RDONLY flag to patch 1 Changes in v5: - Split userptr header updates into dedicated patch (patch 1/4) - Extracted nr_entries limit removal into standalone commit (patch 2/4) - Split ROCm header updates into dedicated patch (patch 3/4) - Removed VIRTIO_GPU_F_RESOURCE_USERPTR feature detection - Keep ROCm capability support with "rocm=on" device property (patch 4/4) - Change corresponding commit messages, change corresponding cover letter content - Remove RFC label Changes in v4: - Change this series to RFC - Renamed HSAKMT-related functionality to ROCm for better clarity and alignment with the ROCm ecosystem terminology - Changed device property from "hsakmt=on" to "rocm=on" - Changed flag from VIRTIO_GPU_FLAG_HSAKMT_ENABLED to VIRTIO_GPU_FLAG_ROCM_ENABLED - Changed renderer flag from VIRGL_RENDER_USE_HSAKMT to VIRGL_RENDERER_USE_ROCM - Updated capset handling to use VIRTIO_GPU_CAPSET_ROCM (8) instead of VIRTIO_GPU_CAPSET_HSAKMT (8) - Removed the error handling fix from patch 1 (virtio-gpu-virgl.c) into another thread Changes in v3: - Renamed HSAKMT-related functionality to ROCm for better clarity and alignment with the ROCm ecosystem terminology - Changed device property from "hsakmt=on" to "rocm=on" - Changed flag from VIRTIO_GPU_FLAG_HSAKMT_ENABLED to VIRTIO_GPU_FLAG_ROCM_ENABLED - Changed renderer flag from VIRGL_RENDER_USE_HSAKMT to VIRGL_RENDERER_USE_ROCM - Updated capset handling to use VIRTIO_GPU_CAPSET_ROCM (8) instead of VIRTIO_GPU_CAPSET_HSAKMT (8) - Removed the error handling fix from patch 1 (virtio-gpu-virgl.c) into another thread Changes in v2: - Fixed error handling bug in virtio-gpu-virgl.c where the return value check was inverted (changed from "if (!ret)" to "if (ret != 0)") - Added VIRGL_RENDER_USE_HSAKMT flag initialization in virtio_gpu_virgl_init() when HSAKMT support is enabled - Simplified blob resource creation logic by removing complex conditional branching for userptr vs regular blob handling - Updated commit messages to reflect bug fixes and improvements - Added references to related patches in Linux kernel, virglrenderer, and ROCm Runtime components for complete feature implementation tracking Related patches in other components: - Linux kernel virtio-gpu support: https://lore.kernel.org/lkml/[email protected]/ - Virglrenderer support: https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1568 - ROCm Runtime support (merged): https://github.com/ROCm/ROCR-Runtime/commit/48d3719dba6ca91f597a8179d8b341387ce155e8 Honglei Huang (4): virtio-gpu: Update Linux headers to add userptr blob flags virtio-gpu: Remove nr_entries limit check in create_mapping_iov virtio-gpu: Update Linux headers to add ROCM capability set virtio-gpu: Add ROCm capability support hw/display/virtio-gpu-gl.c | 2 ++ hw/display/virtio-gpu-virgl.c | 12 ++++++++++++ hw/display/virtio-gpu.c | 7 ------- include/hw/virtio/virtio-gpu.h | 3 +++ include/standard-headers/linux/virtio_gpu.h | 3 +++ 5 files changed, 20 insertions(+), 7 deletions(-) -- 2.34.1
