From d1dc85a2cc729d39a3cfb45a01c7166cf08f7a92 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Thu, 12 Nov 2026 00:18:36 -0500 Subject: vgsp: default GPU GART size to 256 MiB (was 4096) BUS_GET_INFO_V2 GPU_GART_SIZE at 4096 MiB made the guest RM allocate a 4 GiB system-memory GART object during X/GL init. That single allocation is the 1048576-page nv_alloc_pages spike that OOM-killed or crashed the 12 GiB guest in c15-c22; with the 4 GiB FB-info over-report fixed and UseSysmemPixmapAccel off, the GART was the remaining source. c23 with bus_gart_mb=256 and the guest X config UseSysmemPixmapAccel=false: X starts, MemFree stays 11 GB, no 1M-page allocation, and glxgears renders 2601 frames in 5 s (520 FPS) on the emulated vGPU. The default should not reintroduce the fatal allocation; 0 remains available for the historical A/B. Evidence: handoff-meta-plan.md CONT.436, c23 X/gzdoom/glxgears logs. --- kernel/gsp_rm_emulation.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'kernel') diff --git a/kernel/gsp_rm_emulation.c b/kernel/gsp_rm_emulation.c index 581ed19..308de9c 100644 --- a/kernel/gsp_rm_emulation.c +++ b/kernel/gsp_rm_emulation.c @@ -3116,10 +3116,12 @@ static void gsp_rm_handle_clk_domain_info(struct gsp_emu_context *ctx, u32 cmd, * sysmem connection type"). Report a PCIe Gen3 x16 link for the emulated * vGPU and echo every requested index. */ -static u32 gsp_rm_bus_gart_mb = 4096; +static u32 gsp_rm_bus_gart_mb = 256; module_param_named(bus_gart_mb, gsp_rm_bus_gart_mb, uint, 0644); MODULE_PARM_DESC(bus_gart_mb, - "BUS_GET_INFO_V2 GPU_GART_SIZE in MiB (default 4096; 0 = historical zero reply, A/B)"); + "BUS_GET_INFO_V2 GPU_GART_SIZE in MiB (default 256; 0 = historical zero reply, A/B). " + "4096 made the guest allocate a 4 GiB GART sysmem object at GL init (c15-c22 OOM/crash); " + "256 keeps the GART well below guest RAM."); static u32 tu104_bus_info_data(u32 index) { -- cgit v1.2.3