summaryrefslogtreecommitdiffstats
path: root/kernel/include
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-05 12:25:05 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-05 12:25:05 -0400
commit549d1e8126f96b3515d37037ae22e0dce430c20b (patch)
tree5fc949da9f724b75a84dc8b5fdc4e6462ff94335 /kernel/include
parent3b1dcb87279a2f58210b87028a39c9a0932faf2c (diff)
downloadopen-iov-549d1e8126f96b3515d37037ae22e0dce430c20b.tar.gz
open-iov-549d1e8126f96b3515d37037ae22e0dce430c20b.zip
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.
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/ioctl.h2
-rw-r--r--kernel/include/nvidia-vgpu-vfio.h12
2 files changed, 14 insertions, 0 deletions
diff --git a/kernel/include/ioctl.h b/kernel/include/ioctl.h
index 36d28ac..58fea37 100644
--- a/kernel/include/ioctl.h
+++ b/kernel/include/ioctl.h
@@ -42,6 +42,7 @@ struct nv_vgpu_type_info {
u64 vdev_id;
u64 pdev_id;
u32 max_instances;
+ u32 vram_mb; /* emulated framebuffer size; 0 = 512 MiB default */
};
struct nv_vgpu_ioctl_get_info {
@@ -111,6 +112,7 @@ struct nv_vgpu_ioctl_register_vgpu_type {
u64 vdev_id;
u64 pdev_id;
u32 max_instances;
+ u32 vram_mb;
};
int nv_vgpu_ioctl_get_info(struct nv_vgpu_device *vgpu, void __user *arg);
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 { \