From bfd269ee74d166be4f386640f8b5daad31d5d6ed Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Sun, 13 Sep 2026 19:28:03 -0400 Subject: Phase 4: Portable Architecture Implementation - Firmware Analyzer: Runtime firmware signature computation (CRC32, SHA256) and pattern-based RPC handler address discovery - Dynamic RPC Dispatcher: Version-aware dispatch with native firmware handlers (550/560/570/580) and emulation fallback - Hardware Architecture Layer: Turing, Ampere, Blackwell configs with BAR layouts, doorbell offsets, MSI-X vectors - Driver Version Adaptation Layer: Feature detection per driver version - Declarative YAML configs for hardware (turing/ampere/blackwell) and versions (550/560/570/580) - Kernel unit tests for GSP emulation (gsp_emulation_test.c) - Test infrastructure scripts (test_gsp_emu.sh, test_guest_driver.sh, test_cuda_workloads.sh, test_graphics_workloads.sh, test_windows_guest.sh, test_vgpu_stack.sh) - Updated kernel Makefile with new source files --- config/versions/550.yaml | 31 +++++++++++++++++++++++++++++++ config/versions/560.yaml | 31 +++++++++++++++++++++++++++++++ config/versions/570.yaml | 31 +++++++++++++++++++++++++++++++ config/versions/580.yaml | 31 +++++++++++++++++++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 config/versions/550.yaml create mode 100644 config/versions/560.yaml create mode 100644 config/versions/570.yaml create mode 100644 config/versions/580.yaml (limited to 'config/versions') diff --git a/config/versions/550.yaml b/config/versions/550.yaml new file mode 100644 index 0000000..696a2d6 --- /dev/null +++ b/config/versions/550.yaml @@ -0,0 +1,31 @@ +# NVIDIA Driver 550 Version Configuration +version: + name: "550" + major: 550 + minor: 0 + patch: 0 + description: "NVIDIA 550.x driver series" + kernel_module: "nvidia.ko" + firmware: + gsp_version: "550.XX" + path: "/lib/firmware/nvidia/tu102/gsp/" + features: + vgpu_vfio: true + migration: true + scheduling: true + notifications: true + wpr: true + mdev: true + interfaces: + vgpu_vfio_ops: "nvidia_vgpu_vfio_ops" + mdev_parent_ops: "nv_vgpu_mdev_parent_ops" + symbols: + - nvidia_vgpu_vfio_get_ops + - nvidia_vgpu_vfio_set_ops + - nv_vgpu_mdev_register_parent + - nv_vgpu_mdev_unregister_parent + - nv_vgpu_gsp_init + - nv_vgpu_gsp_cleanup + compat: + cuda_version: "12.0" + vulkan_version: "1.3" \ No newline at end of file diff --git a/config/versions/560.yaml b/config/versions/560.yaml new file mode 100644 index 0000000..e949b00 --- /dev/null +++ b/config/versions/560.yaml @@ -0,0 +1,31 @@ +# NVIDIA Driver 560 Version Configuration +version: + name: "560" + major: 560 + minor: 0 + patch: 0 + description: "NVIDIA 560.x driver series" + kernel_module: "nvidia.ko" + firmware: + gsp_version: "560.XX" + path: "/lib/firmware/nvidia/tu102/gsp/" + features: + vgpu_vfio: true + migration: true + scheduling: true + notifications: true + wpr: true + mdev: true + interfaces: + vgpu_vfio_ops: "nvidia_vgpu_vfio_ops" + mdev_parent_ops: "nv_vgpu_mdev_parent_ops" + symbols: + - nvidia_vgpu_vfio_get_ops + - nvidia_vgpu_vfio_set_ops + - nv_vgpu_mdev_register_parent + - nv_vgpu_mdev_unregister_parent + - nv_vgpu_gsp_init + - nv_vgpu_gsp_cleanup + compat: + cuda_version: "12.2" + vulkan_version: "1.3" \ No newline at end of file diff --git a/config/versions/570.yaml b/config/versions/570.yaml new file mode 100644 index 0000000..e9ebd0a --- /dev/null +++ b/config/versions/570.yaml @@ -0,0 +1,31 @@ +# NVIDIA Driver 570 Version Configuration +version: + name: "570" + major: 570 + minor: 144 + patch: 0 + description: "NVIDIA 570.144 driver series (OpenRM)" + kernel_module: "nvidia.ko" + firmware: + gsp_version: "570.144W" + path: "/lib/firmware/nvidia/tu102/gsp/" + features: + vgpu_vfio: true + migration: true + scheduling: true + notifications: true + wpr: true + mdev: true + interfaces: + vgpu_vfio_ops: "nvidia_vgpu_vfio_ops" + mdev_parent_ops: "nv_vgpu_mdev_parent_ops" + symbols: + - nvidia_vgpu_vfio_get_ops + - nvidia_vgpu_vfio_set_ops + - nv_vgpu_mdev_register_parent + - nv_vgpu_mdev_unregister_parent + - nv_vgpu_gsp_init + - nv_vgpu_gsp_cleanup + compat: + cuda_version: "12.4" + vulkan_version: "1.3" \ No newline at end of file diff --git a/config/versions/580.yaml b/config/versions/580.yaml new file mode 100644 index 0000000..9fb8057 --- /dev/null +++ b/config/versions/580.yaml @@ -0,0 +1,31 @@ +# NVIDIA Driver 580 Version Configuration +version: + name: "580" + major: 580 + minor: 0 + patch: 0 + description: "NVIDIA 580.x driver series (future)" + kernel_module: "nvidia.ko" + firmware: + gsp_version: "580.XX" + path: "/lib/firmware/nvidia/gb100/gsp/" + features: + vgpu_vfio: true + migration: true + scheduling: true + notifications: true + wpr: true + mdev: true + interfaces: + vgpu_vfio_ops: "nvidia_vgpu_vfio_ops" + mdev_parent_ops: "nv_vgpu_mdev_parent_ops" + symbols: + - nvidia_vgpu_vfio_get_ops + - nvidia_vgpu_vfio_set_ops + - nv_vgpu_mdev_register_parent + - nv_vgpu_mdev_unregister_parent + - nv_vgpu_gsp_init + - nv_vgpu_gsp_cleanup + compat: + cuda_version: "12.6" + vulkan_version: "1.4" \ No newline at end of file -- cgit v1.2.3