From 708a3802824358c1770d5ad0b3c2e24fae114eb8 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Mon, 5 Oct 2026 12:25:05 -0400 Subject: vgsp: per-mdev emulated VRAM size (1.0 multiple mediate sizes) - nv_vgpu_type_info/ioctl gain vram_mb; nv_vgpu_device gains fb_emul_size bound from the mdev type at create (default 512 MiB). - New nvidia-vgpu-turing-1g type (1024 MiB); turing max_instances 1 -> 2; show_description reports the per-type framebuffer and max_instance. - Thread fb_emul_size through GSCI fb_length/region/frtsOffset, WPR2, NV_PFB_PRI_MMU_LOCAL_MEMORY_RANGE, the vidmem allocator bound and the BAR1 shadow; bar_info callback uses the per-device size. - UNTESTED at commit time: builds clean; validation blocked by the Xid 140 incident (reboot pending). See Handoff-vGPU-IO.md ADDENDUM 48. --- kernel/include/nvidia-vgpu-vfio.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'kernel/include/nvidia-vgpu-vfio.h') diff --git a/kernel/include/nvidia-vgpu-vfio.h b/kernel/include/nvidia-vgpu-vfio.h index ccd7262..bed90a7 100644 --- a/kernel/include/nvidia-vgpu-vfio.h +++ b/kernel/include/nvidia-vgpu-vfio.h @@ -137,6 +137,11 @@ struct nv_vgpu_device { u64 fb_base; u64 fb_size; + /* Emulated framebuffer/vidmem size for this mdev, from its type's + * vram_mb (nv_vgpu_type_info); defaults to NV_VGPU_EMUL_FB_SIZE. All + * emulated-GSP consumers (GSCI fb_length/lb region/frtsOffset, WPR2, + * LOCAL_MEMORY_RANGE, vidmem allocator, BAR shadow) must agree. */ + u64 fb_emul_size; u64 bar0_config_base; struct list_head list; @@ -223,6 +228,13 @@ static inline struct nv_vgpu_device *mdev_to_vgpu(struct mdev_device *mdev) return dev_get_drvdata(&mdev->dev); } +/* Per-mdev emulated framebuffer size in bytes (default 512 MiB). */ +static inline u64 nv_vgpu_fb_emul_size(const struct nv_vgpu_device *vgpu) +{ + return (vgpu && vgpu->fb_emul_size) ? vgpu->fb_emul_size : + NV_VGPU_EMUL_FB_SIZE; +} + /* NULL-tolerant logging: emulation paths may run with a NULL vgpu * (e.g. unit tests, early init) - fall back to plain pr_*. */ #define nv_vgpu_dbg(vgpu, fmt, ...) do { \ -- cgit v1.2.3