summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_gpu.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-02 15:13:06 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-02 15:13:06 -0400
commit4bb8550a72597ec098c6d62a75006a0aba61972e (patch)
treebd0ec74c26ff056251052a5e1ba0b59d14fb1f6a /kernel/gsp_phys_gpu.c
parent8b491c4e7ebde76c17faddaad47f92898d6c97de (diff)
downloadopen-iov-4bb8550a72597ec098c6d62a75006a0aba61972e.tar.gz
open-iov-4bb8550a72597ec098c6d62a75006a0aba61972e.zip
kernel: GR context-promote bisection modes 4-17 and server-managed-ctxbuf registry variant; complete vgsp rename; docs/tooling refresh
- gsp_phys_booter: GR promote bisection modes 4-17 (two-phase zero-field VA, batched entries, hVirtMemory, bare VA, KMD SKIP_CTXBUFFER_ALLOC channel, old-interface GPU_INITIALIZE_CTX, FBMEM context buffer, UVM-faithful PA-only, PATCH/PM auxiliary promotes, server-managed no-promote path); PATCH/PM geometry queries and buffers; pre-boot SET_REGISTRY profile selection - gsp_phys_gpu: gsp_phys_rmcall_gr_promote clamp 0..17 and gsp_phys_srv_ctxbuf parameter; registry image variant with RMSetClientRMAllocatedCtxBuffer=0 - vgsp rename across kernel, scripts, tools and docs (module vgsp.ko, /sys/kernel/debug/vgsp/, vgsp-<subsystem>: log prefixes) - risc-v-gsp-rm-debugger user-facing rename and docs/CI refresh; guest-diag tool updates; README/SBOM/install/Makefile sync Live status: CE ladder and P6 guest-copy forwarding green; GR engine context commit still open (all promote shapes accepted or cleanly refused; the channel stays CTXNOTVALID) - see Handoff-vGPU-IO.md Addendum 21 (local).
Diffstat (limited to 'kernel/gsp_phys_gpu.c')
-rw-r--r--kernel/gsp_phys_gpu.c267
1 files changed, 161 insertions, 106 deletions
diff --git a/kernel/gsp_phys_gpu.c b/kernel/gsp_phys_gpu.c
index a52714c..d8eed89 100644
--- a/kernel/gsp_phys_gpu.c
+++ b/kernel/gsp_phys_gpu.c
@@ -162,6 +162,26 @@ bool gsp_phys_ctrl_forward_enabled(void)
EXPORT_SYMBOL_GPL(gsp_phys_ctrl_forward_enabled);
/*
+ * Server-managed GR context buffers (default 0). When set, the pre-boot
+ * SET_REGISTRY profile is the variant with RMSetClientRMAllocatedCtxBuffer=0:
+ * the GSP-RM allocates and commits the GR engine context on the physical-RM
+ * path instead of requiring a client-owned-buffer GPU_PROMOTE_CTX (the flow
+ * that kept returning NV_ERR_INVALID_STATE in every promote shape). The
+ * registry key is read once at GPU init, so the profile is selected at boot
+ * prime; a runtime change has no effect until the next boot.
+ */
+static bool gsp_phys_srv_ctxbuf_param;
+module_param_named(gsp_phys_srv_ctxbuf, gsp_phys_srv_ctxbuf_param, bool, 0644);
+MODULE_PARM_DESC(gsp_phys_srv_ctxbuf,
+ "Send the SET_REGISTRY profile with RMSetClientRMAllocatedCtxBuffer=0 so the GSP-RM manages the GR context buffers (default 0: host default profile, client-managed ctx buffers)");
+
+bool gsp_phys_srv_ctxbuf_value(void)
+{
+ return gsp_phys_srv_ctxbuf_param;
+}
+EXPORT_SYMBOL_GPL(gsp_phys_srv_ctxbuf_value);
+
+/*
* P5 wave-1 shadow work forwarding (default 0). When set, the sema service
* requests one real CE copy on the debugfs ladder's channel for each decoded
* guest CE push, using only the ladder's module-owned buffers; the software
@@ -350,8 +370,43 @@ EXPORT_SYMBOL_GPL(gsp_phys_rmcall_engine_value);
* queries, the context buffer/PT allocation, the PDB mapping and the
* channel/compute alloc, then stops before BIND with a clear log);
* 1 = single MAIN entry, bInitialize=1/bNonmapped=0, size raw+subctx;
- * 2 = two-phase external-VAS shape (PA-only nonmapped first, then VA-only);
- * 3 = single MAIN entry like 1 but with size = the exact raw save size.
+ * 2 = two-phase external-VAS shape (PA-only nonmapped first, then VA-only
+ * with the same PA/VA/size);
+ * 3 = single MAIN entry like 1 but with size = the exact raw save size;
+ * 4 = like 2 but the VA-only step is the reference client's zero-field
+ * entry (only bufferId/gpuVirtAddr/bNonmapped are set);
+ * 5 = one control with entryCount=2: PA-only init + zero-field VA-only;
+ * 6 = no-entry hVirtMemory: first allocate an NV01_MEMORY_VIRTUAL
+ * (class 0x70) VA-range object on the ladder VAS at the context
+ * window, then PROMOTE_CTX with hVirtMemory, virtAddress/size and
+ * entryCount=0 (the server creates the memdesc/vaList entry);
+ * 7 = no-entry bare (virtAddress, size) with entryCount=0 and no
+ * hVirtMemory (the other documented no-entry branch);
+ * 8 = single MAIN entry like 1 but on the KMD-managed channel variant V6
+ * (V5 plus NVOS04_FLAGS_SKIP_CTXBUFFER_ALLOC): the server takes its
+ * client-context-buffer path and creates the virtual context memdesc
+ * itself, instead of resolving our raw-PTE VA against a server-side
+ * booking (the mode-1/2/4 assert);
+ * 9 = the stock 570 client's KMD-managed shape: the same V6 channel with
+ * the zero-field VA-only MAIN entry (bInitialize=0, bNonmapped=0,
+ * PA/size/physAttr zero) the client sends when the channel skips the
+ * context-buffer allocation;
+ * 10 = the old-interface client-managed flow on the same V6 channel:
+ * GPU_INITIALIZE_CTX (0x2080012d) installs the physical context
+ * memdesc first, then PROMOTE_CTX with entryCount=0 and the bare
+ * (virtAddress, size) pair builds the virtual memdesc and binds it;
+ * 11 = mode 10 with a server-owned FBMEM context buffer (VIDMEM physAttr
+ * 0x4, local-aperture leaf PTEs) instead of host sysmem.
+ * Live results: modes 1, 2 step 2 and 4 asserted GSP-RM (0x52a8b04) and
+ * wedged the device; the PA-only nonmapped steps were accepted; mode 6
+ * (hVirtMemory) was refused cleanly with NV_ERR_INVALID_ARGUMENT and a clean
+ * release (no wedge) because the channel was not KMD-managed; mode 8 (V6
+ * channel, init+VA entry) and mode 9 (V6 channel, zero-field VA-only entry)
+ * both reached the KMD-managed path and were refused cleanly with
+ * NV_ERR_INVALID_STATE (0x40), again with clean releases; mode 10's
+ * GPU_INITIALIZE_CTX was accepted (status 0) but the following bare-VA
+ * promote returned the same clean 0x40, pointing at the sysmem context
+ * buffer the KMD machinery refuses - which mode 11 replaces with FBMEM.
* The set callback clamps out-of-range values to 0 and warns on every nonzero
* enable: a failed GR context promote can wedge the device and needs a reboot
* with human approval, so run it only when reboot readiness is confirmed.
@@ -363,19 +418,19 @@ static int gsp_phys_rmcall_gr_promote_param;
static int gsp_phys_rmcall_gr_promote_set(const char *val,
const struct kernel_param *kp)
{
- int ret;
+ int ret = param_set_int(val, kp);
- ret = param_set_int(val, kp);
if (ret)
return ret;
+
if (gsp_phys_rmcall_gr_promote_param < 0 ||
- gsp_phys_rmcall_gr_promote_param > 3) {
- pr_warn("gsp-phys: gsp_phys_rmcall_gr_promote=%d is outside 0..3; clamping to 0 (no PROMOTE_CTX)\n",
+ gsp_phys_rmcall_gr_promote_param > 17) {
+ pr_warn("vgsp: gsp_phys_rmcall_gr_promote=%d is outside 0..17; clamping to 0 (no PROMOTE_CTX)\n",
gsp_phys_rmcall_gr_promote_param);
gsp_phys_rmcall_gr_promote_param = 0;
}
if (gsp_phys_rmcall_gr_promote_param != 0)
- pr_warn("gsp-phys: WARNING: gsp_phys_rmcall_gr_promote=%d enabled: a failed GR context promote can assert GSP-RM (NOCAT recType=5 errorCode=0x52a8b04) and wedge the device with WPR2 left up and teardown unable to clear it; recovery requires a reboot with human approval - run only when reboot readiness is confirmed\n",
+ pr_warn("vgsp: WARNING: gsp_phys_rmcall_gr_promote=%d enabled: a failed GR context promote can assert GSP-RM (NOCAT recType=5 errorCode=0x52a8b04) and wedge the device with WPR2 left up and teardown unable to clear it; recovery requires a reboot with human approval - run only when reboot readiness is confirmed\n",
gsp_phys_rmcall_gr_promote_param);
return 0;
}
@@ -389,7 +444,7 @@ module_param_cb(gsp_phys_rmcall_gr_promote,
&gsp_phys_rmcall_gr_promote_ops,
&gsp_phys_rmcall_gr_promote_param, 0644);
MODULE_PARM_DESC(gsp_phys_rmcall_gr_promote,
- "GR context-promote bisection (default 0: never send PROMOTE_CTX; 1: single entry init+nonmapped=0 size=raw+subctx, the p6h1b shape; 2: two-phase PA-only nonmapped then VA-only; 3: single entry size=raw); values outside 0..3 clamp to 0 with a warning");
+ "GR context-promote bisection (default 0: never send PROMOTE_CTX; 1: single entry init+nonmapped=0 size=raw+subctx, the p6h1b shape; 2: two-phase PA-only nonmapped then VA-only with the same fields; 3: single entry size=raw; 4: two-phase with a zero-field VA-only step; 5: batched entryCount=2 PA-only init + zero-field VA-only; 6: no-entry hVirtMemory, NV01_MEMORY_VIRTUAL (class 0x70) on the VAS at the context window + PROMOTE_CTX entryCount=0; 7: no-entry bare virtAddress+size, entryCount=0; 8: single MAIN entry like 1 on the KMD-managed channel (V6 SKIP_CTXBUFFER_ALLOC), server creates the virtual context memdesc itself; 9: same V6 channel with the stock client's zero-field VA-only MAIN entry, bInitialize=0; 10: same V6 channel, GPU_INITIALIZE_CTX (0x2080012d) installs the physical context memdesc then PROMOTE_CTX entryCount=0 bare virtAddress+size; 11: mode 10 with a server FBMEM context buffer, VIDMEM physAttr 0x4; 12: V5 UVM/vGPU-faithful PA-only MAIN entry (bInitialize=1 bNonmapped=1, no VA) and continue to BIND/SCHEDULE/submit; 13: mode 12 plus a PATCH PA-only promote first, sized from GET_ENGINE_CONTEXT_PROPERTIES engineId 0x10; 14: KMD channel (V6) + PATCH PA-only then the single-entry MAIN init+VA (the flow that books the context VA and commits ENG_CTX_VALID); 15: mode 14 with a server FBMEM MAIN context buffer and VIDMEM physAttr 0x4; 16: mode 14 plus a PM ctxsw PA-only promote first; 17: no client PROMOTE_CTX, paired with gsp_phys_srv_ctxbuf=1 so the GSP-RM server-manages and commits the context); values outside 0..17 clamp to 0 with a warning");
int gsp_phys_rmcall_gr_promote_value(void)
{
@@ -572,7 +627,7 @@ int gsp_phys_guest_ram_configure(const char *path, u64 gpa_base,
goto out;
}
if (!S_ISREG(file_inode(f)->i_mode)) {
- pr_err("gsp-phys: guest RAM %s is not a regular file; refusing\n",
+ pr_err("vgsp: guest RAM %s is not a regular file; refusing\n",
path);
ret = -EINVAL;
goto out_fput;
@@ -584,7 +639,7 @@ int gsp_phys_guest_ram_configure(const char *path, u64 gpa_base,
*/
if (file_offset + size < file_offset ||
i_size_read(file_inode(f)) < file_offset + size) {
- pr_err("gsp-phys: guest RAM range (off=0x%llx size=0x%llx) does not fit %s (file size=0x%llx); refusing\n",
+ pr_err("vgsp: guest RAM range (off=0x%llx size=0x%llx) does not fit %s (file size=0x%llx); refusing\n",
file_offset, size, path,
(u64)i_size_read(file_inode(f)));
ret = -ERANGE;
@@ -593,7 +648,7 @@ int gsp_phys_guest_ram_configure(const char *path, u64 gpa_base,
guest_ram_file = f;
strscpy(guest_ram_path, path, sizeof(guest_ram_path));
} else if (strcmp(guest_ram_path, path)) {
- pr_err("gsp-phys: guest RAM already configured from %s; one file per module cycle (reload to switch); refusing %s\n",
+ pr_err("vgsp: guest RAM already configured from %s; one file per module cycle (reload to switch); refusing %s\n",
guest_ram_path, path);
ret = -EBUSY;
goto out;
@@ -616,7 +671,7 @@ int gsp_phys_guest_ram_configure(const char *path, u64 gpa_base,
range->file_offset = file_offset;
range->size = size;
- pr_info("gsp-phys: guest RAM configured: path=%s gpa=0x%llx off=0x%llx size=0x%llx (ranges=%u)\n",
+ pr_info("vgsp: guest RAM configured: path=%s gpa=0x%llx off=0x%llx size=0x%llx (ranges=%u)\n",
guest_ram_path, gpa_base, file_offset, size,
guest_ram_ranges_n);
@@ -639,7 +694,7 @@ void gsp_phys_guest_ram_clear(void)
{
mutex_lock(&guest_ram_lock);
if (guest_ram_file) {
- pr_info("gsp-phys: guest RAM released: path=%s ranges=%u\n",
+ pr_info("vgsp: guest RAM released: path=%s ranges=%u\n",
guest_ram_path, guest_ram_ranges_n);
fput(guest_ram_file);
guest_ram_file = NULL;
@@ -835,7 +890,7 @@ static void gsp_phys_runtime_ref_hold(struct pci_dev *pdev)
{
pm_runtime_get_noresume(&pdev->dev);
phys.runtime_ref_held = true;
- pr_debug("gsp-phys: runtime-PM reference held on %s\n", pci_name(pdev));
+ pr_debug("vgsp: runtime-PM reference held on %s\n", pci_name(pdev));
}
static void gsp_phys_runtime_ref_drop(struct pci_dev *pdev)
@@ -845,7 +900,7 @@ static void gsp_phys_runtime_ref_drop(struct pci_dev *pdev)
pm_runtime_put(&pdev->dev);
phys.runtime_ref_held = false;
- pr_debug("gsp-phys: runtime-PM reference dropped on %s\n",
+ pr_debug("vgsp: runtime-PM reference dropped on %s\n",
pci_name(pdev));
}
@@ -896,7 +951,7 @@ static int gsp_phys_fw_load(void)
ret = request_firmware(&phys.fw, gsp_phys_fw_name,
phys.pdev ? &phys.pdev->dev : NULL);
if (ret) {
- pr_err("gsp-phys-fw: request_firmware(%s) failed: %d\n",
+ pr_err("vgsp-fw: request_firmware(%s) failed: %d\n",
gsp_phys_fw_name, ret);
return ret;
}
@@ -904,13 +959,13 @@ static int gsp_phys_fw_load(void)
eh = (const Elf64_Ehdr *)phys.fw->data;
if (phys.fw->size < sizeof(*eh) ||
memcmp(eh->e_ident, ELFMAG, SELFMAG)) {
- pr_err("gsp-phys-fw: %s is not an ELF image (%zu bytes)\n",
+ pr_err("vgsp-fw: %s is not an ELF image (%zu bytes)\n",
gsp_phys_fw_name, phys.fw->size);
goto err;
}
if (eh->e_ident[EI_CLASS] != ELFCLASS64 ||
eh->e_machine != EM_RISCV) {
- pr_err("gsp-phys-fw: unexpected ELF (class=%u machine=%u)\n",
+ pr_err("vgsp-fw: unexpected ELF (class=%u machine=%u)\n",
eh->e_ident[EI_CLASS], eh->e_machine);
goto err;
}
@@ -918,7 +973,7 @@ static int gsp_phys_fw_load(void)
phys.fw_crc32 = crc32_le(0, phys.fw->data, phys.fw->size);
phys.fw_loaded = true;
- pr_info("gsp-phys-fw: loaded %s: %zu bytes, ELF64 RISC-V, "
+ pr_info("vgsp-fw: loaded %s: %zu bytes, ELF64 RISC-V, "
"entry=0x%llx shnum=%u crc32=0x%08x\n",
gsp_phys_fw_name, phys.fw->size, (u64)eh->e_entry,
eh->e_shnum, phys.fw_crc32);
@@ -946,18 +1001,18 @@ static int gsp_phys_fw_load(void)
phys.fw_sig_offset = sh->sh_offset;
phys.fw_sig_size = sh->sh_size;
}
- pr_info("gsp-phys-fw: [%02u] %-24s type=%u addr=0x%llx "
+ pr_info("vgsp-fw: [%02u] %-24s type=%u addr=0x%llx "
"off=0x%llx size=0x%llx\n", i, name,
sh->sh_type, (u64)sh->sh_addr,
(u64)sh->sh_offset, (u64)sh->sh_size);
}
if (phys.fw_image_size)
- pr_info("gsp-phys-fw: GSP-RM image section .fwimage "
+ pr_info("vgsp-fw: GSP-RM image section .fwimage "
"off=0x%llx size=0x%llx (boot-layout input)\n",
phys.fw_image_offset, phys.fw_image_size);
if (phys.fw_sig_size)
- pr_info("gsp-phys-fw: boot signature section %s "
+ pr_info("vgsp-fw: boot signature section %s "
"off=0x%llx size=0x%llx (boot input)\n",
GSP_PHYS_FW_SIGNATURE_SECTION,
phys.fw_sig_offset, phys.fw_sig_size);
@@ -1008,16 +1063,16 @@ static void gsp_phys_dump_falcon(void)
u32 wpr2_lo = readl(phys.bar0 + GSP_PHYS_WPR2_ADDR_LO);
u32 wpr2_hi = readl(phys.bar0 + GSP_PHYS_WPR2_ADDR_HI);
- pr_info("gsp-phys: GSP falcon CPUCTL=0x%08x [%s%s]\n", gsp_cpuctl,
+ pr_info("vgsp: GSP falcon CPUCTL=0x%08x [%s%s]\n", gsp_cpuctl,
gsp_cpuctl & GSP_PHYS_CPUCTL_STARTCPU ? "started " : "",
gsp_cpuctl & GSP_PHYS_CPUCTL_HALTED ? "halted" : "running");
- pr_info("gsp-phys: SEC2 falcon CPUCTL=0x%08x [%s%s] MAILBOX0=0x%08x "
+ pr_info("vgsp: SEC2 falcon CPUCTL=0x%08x [%s%s] MAILBOX0=0x%08x "
"MAILBOX1=0x%08x\n", sec2_cpuctl,
sec2_cpuctl & GSP_PHYS_CPUCTL_STARTCPU ? "started " : "",
sec2_cpuctl & GSP_PHYS_CPUCTL_HALTED ? "halted" : "running",
readl(phys.bar0 + GSP_PHYS_SEC2_MAILBOX0),
readl(phys.bar0 + GSP_PHYS_SEC2_MAILBOX1));
- pr_info("gsp-phys: RISCV_STATUS=0x%08x [%sactive] WPR2_LO=0x%08x "
+ pr_info("vgsp: RISCV_STATUS=0x%08x [%sactive] WPR2_LO=0x%08x "
"WPR2_HI=0x%08x [%s]\n", riscv,
riscv & GSP_PHYS_RISCV_ACTIVE ? "" : "not ",
wpr2_lo, wpr2_hi, wpr2_hi ? "up" : "down");
@@ -1029,11 +1084,11 @@ static int gsp_phys_probe(struct pci_dev *pdev, const struct pci_device_id *id)
u16 pci_cmd = 0;
int ret;
- pr_info("gsp-phys: probe %s\n", pci_name(pdev));
+ pr_info("vgsp: probe %s\n", pci_name(pdev));
ret = pci_enable_device(pdev);
if (ret) {
- pr_err("gsp-phys: pci_enable_device failed: %d\n", ret);
+ pr_err("vgsp: pci_enable_device failed: %d\n", ret);
return ret;
}
phys.enabled = true;
@@ -1047,7 +1102,7 @@ static int gsp_phys_probe(struct pci_dev *pdev, const struct pci_device_id *id)
*/
ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
if (ret) {
- pr_err("gsp-phys: dma_set_mask_and_coherent(DMA_BIT_MASK(64)) failed: %d\n",
+ pr_err("vgsp: dma_set_mask_and_coherent(DMA_BIT_MASK(64)) failed: %d\n",
ret);
goto err_unmap;
}
@@ -1065,14 +1120,14 @@ static int gsp_phys_probe(struct pci_dev *pdev, const struct pci_device_id *id)
*/
pci_set_master(pdev);
pci_read_config_word(pdev, PCI_COMMAND, &pci_cmd);
- pr_info("gsp-phys: claim PCI_COMMAND=0x%04x [bus_master=%s mem=%s io=%s] dev->is_busmaster=%u\n",
+ pr_info("vgsp: claim PCI_COMMAND=0x%04x [bus_master=%s mem=%s io=%s] dev->is_busmaster=%u\n",
pci_cmd, pci_cmd & PCI_COMMAND_MASTER ? "on" : "OFF",
pci_cmd & PCI_COMMAND_MEMORY ? "on" : "off",
pci_cmd & PCI_COMMAND_IO ? "on" : "off", pdev->is_busmaster);
ret = pci_request_regions(pdev, "open-iov-gsp-phys");
if (ret) {
- pr_err("gsp-phys: pci_request_regions failed: %d\n", ret);
+ pr_err("vgsp: pci_request_regions failed: %d\n", ret);
goto err_unmap;
}
phys.regions = true;
@@ -1080,32 +1135,32 @@ static int gsp_phys_probe(struct pci_dev *pdev, const struct pci_device_id *id)
phys.bar0 = pci_iomap(pdev, 0, 0);
phys.bar0_len = pci_resource_len(pdev, 0);
if (!phys.bar0) {
- pr_err("gsp-phys: BAR0 map failed\n");
+ pr_err("vgsp: BAR0 map failed\n");
ret = -ENOMEM;
goto err_unmap;
}
phys.bar1 = pci_iomap(pdev, 1, 0);
phys.bar1_len = pci_resource_len(pdev, 1);
if (!phys.bar1) {
- pr_err("gsp-phys: BAR1 map failed\n");
+ pr_err("vgsp: BAR1 map failed\n");
ret = -ENOMEM;
goto err_unmap;
}
phys.bar3 = pci_iomap(pdev, 3, 0);
phys.bar3_len = pci_resource_len(pdev, 3);
if (!phys.bar3) {
- pr_err("gsp-phys: BAR3 map failed\n");
+ pr_err("vgsp: BAR3 map failed\n");
ret = -ENOMEM;
goto err_unmap;
}
boot0 = readl(phys.bar0 + GSP_PHYS_BOOT_0);
boot1 = readl(phys.bar0 + GSP_PHYS_BOOT_1);
- pr_info("gsp-phys: BAR0 len=0x%llx BAR1 len=0x%llx BAR3 len=0x%llx\n",
+ pr_info("vgsp: BAR0 len=0x%llx BAR1 len=0x%llx BAR3 len=0x%llx\n",
(u64)phys.bar0_len, (u64)phys.bar1_len, (u64)phys.bar3_len);
- pr_info("gsp-phys: BOOT0=0x%08x BOOT1=0x%08x (chip family in BOOT0[15:4])\n",
+ pr_info("vgsp: BOOT0=0x%08x BOOT1=0x%08x (chip family in BOOT0[15:4])\n",
boot0, boot1);
- pr_info("gsp-phys: GSP_CPUCTL=0x%08x MAILBOX0=0x%08x MAILBOX1=0x%08x "
+ pr_info("vgsp: GSP_CPUCTL=0x%08x MAILBOX0=0x%08x MAILBOX1=0x%08x "
"ENGINE=0x%08x FALCON_OS=0x%08x\n",
readl(phys.bar0 + GSP_PHYS_GSP_CPUCTL),
readl(phys.bar0 + GSP_PHYS_GSP_MAILBOX0),
@@ -1117,7 +1172,7 @@ static int gsp_phys_probe(struct pci_dev *pdev, const struct pci_device_id *id)
phys.pdev = pdev;
phys.claimed = true;
- pr_info("gsp-phys: claimed %s\n", pci_name(pdev));
+ pr_info("vgsp: claimed %s\n", pci_name(pdev));
return 0;
err_unmap:
@@ -1127,7 +1182,7 @@ err_unmap:
static void gsp_phys_remove(struct pci_dev *pdev)
{
- pr_info("gsp-phys: remove %s\n", pci_name(pdev));
+ pr_info("vgsp: remove %s\n", pci_name(pdev));
phys.claimed = false;
gsp_phys_unmap(pdev);
@@ -1161,7 +1216,7 @@ static bool gsp_phys_power_lock_one(struct pci_dev *pdev)
struct gsp_phys_power_lock *lock;
if (phys.nr_locks >= ARRAY_SIZE(phys.locks)) {
- pr_warn("gsp-phys: power-lock table full, %s left unlocked\n",
+ pr_warn("vgsp: power-lock table full, %s left unlocked\n",
pci_name(pdev));
return false;
}
@@ -1174,7 +1229,7 @@ static bool gsp_phys_power_lock_one(struct pci_dev *pdev)
pm_runtime_forbid(&pdev->dev);
pci_d3cold_disable(pdev);
- pr_info("gsp-phys: power domain locked: %s (runtime_auto was %d, d3cold was %d)\n",
+ pr_info("vgsp: power domain locked: %s (runtime_auto was %d, d3cold was %d)\n",
pci_name(pdev), lock->was_runtime_auto,
lock->was_d3cold_enabled);
return true;
@@ -1226,10 +1281,10 @@ static void gsp_phys_power_unlock(void)
if (lock->was_d3cold_enabled)
pci_d3cold_enable(lock->pdev);
- pr_info("gsp-phys: power domain released: %s\n",
+ pr_info("vgsp: power domain released: %s\n",
pci_name(lock->pdev));
} else {
- pr_info("gsp-phys: power domain left LOCKED (gsp_phys_repower=0): %s\n",
+ pr_info("vgsp: power domain left LOCKED (gsp_phys_repower=0): %s\n",
pci_name(lock->pdev));
}
pci_dev_put(lock->pdev);
@@ -1282,7 +1337,7 @@ static int gsp_phys_board_check(struct pci_dev *pdev, const char *phase)
ret = pci_read_config_dword(pdev, PCI_VENDOR_ID, &id);
if (ret != PCIBIOS_SUCCESSFUL || PCI_POSSIBLE_ERROR(id) ||
(id & 0xffff) != GSP_PHYS_VENDOR) {
- WARN(1, "gsp-phys: board unresponsive %s: %s config id=0x%08x rc=%d; aborting - do not retry in this boot\n",
+ WARN(1, "vgsp: board unresponsive %s: %s config id=0x%08x rc=%d; aborting - do not retry in this boot\n",
phase, pci_name(pdev), id, ret);
return -EIO;
}
@@ -1290,16 +1345,16 @@ static int gsp_phys_board_check(struct pci_dev *pdev, const char *phase)
if (root && pci_is_pcie(root)) {
ret = pcie_capability_read_word(root, PCI_EXP_LNKSTA, &lnksta);
if (ret != PCIBIOS_SUCCESSFUL)
- pr_warn("gsp-phys: %s: root port %s link status read failed (rc=%d)\n",
+ pr_warn("vgsp: %s: root port %s link status read failed (rc=%d)\n",
phase, pci_name(root), ret);
else
- pr_info("gsp-phys: board check %s: %s id=%04x:%04x, root %s link speed %s width x%u\n",
+ pr_info("vgsp: board check %s: %s id=%04x:%04x, root %s link speed %s width x%u\n",
phase, pci_name(pdev), id & 0xffff, id >> 16,
pci_name(root), gsp_phys_link_speed(lnksta),
(lnksta & PCI_EXP_LNKSTA_NLW) >>
PCI_EXP_LNKSTA_NLW_SHIFT);
} else {
- pr_info("gsp-phys: board check %s: %s id=%04x:%04x (no PCIe root port)\n",
+ pr_info("vgsp: board check %s: %s id=%04x:%04x (no PCIe root port)\n",
phase, pci_name(pdev), id & 0xffff, id >> 16);
}
@@ -1325,10 +1380,10 @@ static void gsp_phys_claim_failed(struct pci_dev *pdev)
ret = device_attach(&pdev->dev);
drv = pdev->dev.driver;
if (drv)
- pr_info("gsp-phys: claim aborted; %s rebound to %s (rc=%d)\n",
+ pr_info("vgsp: claim aborted; %s rebound to %s (rc=%d)\n",
pci_name(pdev), drv->name, ret);
else
- pr_warn("gsp-phys: claim aborted; %s has no driver (rc=%d)\n",
+ pr_warn("vgsp: claim aborted; %s has no driver (rc=%d)\n",
pci_name(pdev), ret);
msleep(GSP_PHYS_POWER_SETTLE_MS);
@@ -1352,13 +1407,13 @@ int gsp_phys_gpu_claim(void)
return 0;
if (!gsp_phys_hazard_ack) {
- pr_err("gsp-phys: REFUSED: claiming the physical GPU unbinds the distribution NVIDIA driver; on this host that can leave the dGPU unresponsive and hard-freeze the system (observed 2026-09-30, no crash record). Pass gsp_phys_hazard_ack=1 only with a reviewed recovery plan and no other work on the host.\n");
+ pr_err("vgsp: REFUSED: claiming the physical GPU unbinds the distribution NVIDIA driver; on this host that can leave the dGPU unresponsive and hard-freeze the system (observed 2026-09-30, no crash record). Pass gsp_phys_hazard_ack=1 only with a reviewed recovery plan and no other work on the host.\n");
return -EPERM;
}
pdev = pci_get_device(GSP_PHYS_VENDOR, GSP_PHYS_DEVICE, NULL);
if (!pdev) {
- pr_err("gsp-phys: device %04x:%04x not found\n",
+ pr_err("vgsp: device %04x:%04x not found\n",
GSP_PHYS_VENDOR, GSP_PHYS_DEVICE);
return -ENODEV;
}
@@ -1372,7 +1427,7 @@ int gsp_phys_gpu_claim(void)
if (pdev->dev.power.runtime_status == RPM_SUSPENDED ||
(pci_upstream_bridge(pdev) &&
pci_upstream_bridge(pdev)->dev.power.runtime_status == RPM_SUSPENDED)) {
- pr_err("gsp-phys: refusing claim: GPU or root port already runtime-suspended; the board may be power-gated (refusing to resume it)\n");
+ pr_err("vgsp: refusing claim: GPU or root port already runtime-suspended; the board may be power-gated (refusing to resume it)\n");
pci_dev_put(pdev);
return -EBUSY;
}
@@ -1406,7 +1461,7 @@ int gsp_phys_gpu_claim(void)
}
if (READ_ONCE(pdev->dev.power.runtime_status) != RPM_ACTIVE ||
(root && READ_ONCE(root->dev.power.runtime_status) != RPM_ACTIVE)) {
- pr_err("gsp-phys: refusing to unbind: GPU/root port did not reach D0 (status GPU=%d port=%d)\n",
+ pr_err("vgsp: refusing to unbind: GPU/root port did not reach D0 (status GPU=%d port=%d)\n",
pdev->dev.power.runtime_status,
root ? root->dev.power.runtime_status : -1);
ret = -EBUSY;
@@ -1418,12 +1473,12 @@ int gsp_phys_gpu_claim(void)
msleep(100);
if (pdev->dev.driver) {
- pr_info("gsp-phys: unbinding %s from %s\n",
+ pr_info("vgsp: unbinding %s from %s\n",
pdev->dev.driver->name, pci_name(pdev));
device_release_driver(&pdev->dev);
}
if (pdev->dev.driver) {
- pr_err("gsp-phys: %s still bound after unbind (usage count?)\n",
+ pr_err("vgsp: %s still bound after unbind (usage count?)\n",
pdev->dev.driver->name);
ret = -EBUSY;
goto err_recover;
@@ -1431,13 +1486,13 @@ int gsp_phys_gpu_claim(void)
ret = pci_register_driver(&gsp_phys_driver);
if (ret) {
- pr_err("gsp-phys: register driver failed: %d\n", ret);
+ pr_err("vgsp: register driver failed: %d\n", ret);
goto err_recover;
}
phys.drv_registered = true;
if (!phys.claimed) {
- pr_err("gsp-phys: our driver did not bind %s\n", pci_name(pdev));
+ pr_err("vgsp: our driver did not bind %s\n", pci_name(pdev));
ret = -ENODEV;
goto err_recover;
}
@@ -1454,12 +1509,12 @@ int gsp_phys_gpu_claim(void)
gsp_phys_runtime_ref_hold(pdev);
pci_dev_put(pdev);
- pr_info("gsp-phys: physical GPU claimed (backend rung 1)\n");
+ pr_info("vgsp: physical GPU claimed (backend rung 1)\n");
if (gsp_phys_fw_load()) {
- pr_warn("gsp-phys: firmware load failed; backend stays at rung 1\n");
+ pr_warn("vgsp: firmware load failed; backend stays at rung 1\n");
} else {
- pr_info("gsp-phys: real GSP firmware staged (backend rung 2)\n");
+ pr_info("vgsp: real GSP firmware staged (backend rung 2)\n");
{
bool boot = gsp_phys_boot_enabled();
@@ -1477,51 +1532,51 @@ int gsp_phys_gpu_claim(void)
*/
if ((boot && boot_dry) || (boot && fwsec_dry) ||
(boot_dry && fwsec)) {
- pr_err("gsp-phys: REFUSED: conflicting stage parameters (gsp_phys_boot=%u gsp_phys_boot_dryrun=%u gsp_phys_fwsec=%u gsp_phys_fwsec_dryrun=%u); refusing all stages (nothing written)\n",
+ pr_err("vgsp: REFUSED: conflicting stage parameters (gsp_phys_boot=%u gsp_phys_boot_dryrun=%u gsp_phys_fwsec=%u gsp_phys_fwsec_dryrun=%u); refusing all stages (nothing written)\n",
(unsigned int)boot, (unsigned int)boot_dry,
(unsigned int)fwsec,
(unsigned int)fwsec_dry);
} else if (fwsec && !boot) {
- pr_err("gsp-phys-fwsec: REFUSED: FWSEC-only carve is not host-recoverable; use gsp_phys_boot=1 (full boot lifecycle) or gsp_phys_fwsec_dryrun=1 (read-only)\n");
+ pr_err("vgsp-fwsec: REFUSED: FWSEC-only carve is not host-recoverable; use gsp_phys_boot=1 (full boot lifecycle) or gsp_phys_fwsec_dryrun=1 (read-only)\n");
} else if (gsp_phys_layout_enabled() ||
gsp_phys_boot_requested() || fwsec_dry) {
if (!gsp_phys_layout_enabled() &&
!gsp_phys_boot_requested() && fwsec_dry)
- pr_info("gsp-phys: gsp_phys_fwsec_dryrun set without gsp_phys_layout (or gsp_phys_boot); initialising the stage-3b boot layout for the read-only dry-run (nothing written)\n");
+ pr_info("vgsp: gsp_phys_fwsec_dryrun set without gsp_phys_layout (or gsp_phys_boot); initialising the stage-3b boot layout for the read-only dry-run (nothing written)\n");
if (gsp_phys_boot_layout_init(&phys.boot,
phys.pdev,
phys.bar0,
phys.fw_image_size,
phys.bar1_len)) {
- pr_warn("gsp-phys: boot layout/allocation failed; backend stays at rung 2\n");
+ pr_warn("vgsp: boot layout/allocation failed; backend stays at rung 2\n");
} else if (boot) {
struct gsp_phys_boot_sources src;
if (!phys.fw_loaded || !phys.fw_image_size ||
!phys.fw_sig_size) {
- pr_err("gsp-phys: gsp_phys_boot=1 but the staged firmware lacks .fwimage/%s; refusing the boot stages (no writes)\n",
+ pr_err("vgsp: gsp_phys_boot=1 but the staged firmware lacks .fwimage/%s; refusing the boot stages (no writes)\n",
GSP_PHYS_FW_SIGNATURE_SECTION);
} else if (gsp_phys_fwsec_board_debug(phys.bar0)) {
- pr_err("gsp-phys: gsp_phys_boot=1 on a debug-fuse board but only production boot images are staged; refusing all boot stages before FWSEC (nothing written)\n");
+ pr_err("vgsp: gsp_phys_boot=1 on a debug-fuse board but only production boot images are staged; refusing all boot stages before FWSEC (nothing written)\n");
} else if (gsp_phys_fwsec_run(&phys.boot,
phys.pdev,
phys.bar0)) {
- pr_warn("gsp-phys: stage 3c FWSEC failed (see recovery log above)\n");
+ pr_warn("vgsp: stage 3c FWSEC failed (see recovery log above)\n");
} else {
gsp_phys_fw_boot_sources(&src);
- pr_info("gsp-phys: stage 3c FWSEC complete (WPR2 up; release will tear it down)\n");
+ pr_info("vgsp: stage 3c FWSEC complete (WPR2 up; release will tear it down)\n");
if (gsp_phys_boot_prime(&phys.boot,
phys.pdev,
phys.bar0,
&src,
false)) {
- pr_warn("gsp-phys: stage 3d boot staging failed (see log above)\n");
+ pr_warn("vgsp: stage 3d boot staging failed (see log above)\n");
} else if (gsp_phys_boot_run(&phys.boot,
phys.pdev,
phys.bar0)) {
- pr_warn("gsp-phys: stage 3d boot failed (see log above); release runs the existing WPR2 teardown\n");
+ pr_warn("vgsp: stage 3d boot failed (see log above); release runs the existing WPR2 teardown\n");
} else {
- pr_info("gsp-phys: stage 3d boot complete\n");
+ pr_info("vgsp: stage 3d boot complete\n");
gsp_phys_boot_rmwait(&phys.boot,
phys.bar0,
phys.bar0_len);
@@ -1534,15 +1589,15 @@ int gsp_phys_gpu_claim(void)
if (gsp_phys_fwsec_dryrun_run(
&phys.boot, phys.pdev,
phys.bar0))
- pr_warn("gsp-phys: stage 3c dry-run failed (read-only; see log above)\n");
+ pr_warn("vgsp: stage 3c dry-run failed (read-only; see log above)\n");
else
- pr_info("gsp-phys: stage 3c dry-run complete (read-only; nothing written)\n");
+ pr_info("vgsp: stage 3c dry-run complete (read-only; nothing written)\n");
}
if (boot_dry) {
if (!phys.fw_loaded ||
!phys.fw_image_size ||
!phys.fw_sig_size) {
- pr_warn("gsp-phys: stage 3d dry-run unavailable: staged firmware lacks .fwimage/%s (read-only)\n",
+ pr_warn("vgsp: stage 3d dry-run unavailable: staged firmware lacks .fwimage/%s (read-only)\n",
GSP_PHYS_FW_SIGNATURE_SECTION);
} else {
gsp_phys_fw_boot_sources(&src);
@@ -1552,9 +1607,9 @@ int gsp_phys_gpu_claim(void)
phys.bar0,
&src,
true))
- pr_warn("gsp-phys: stage 3d dry-run prime failed (read-only; see log above)\n");
+ pr_warn("vgsp: stage 3d dry-run prime failed (read-only; see log above)\n");
else
- pr_info("gsp-phys: stage 3d dry-run prime complete (read-only; nothing written)\n");
+ pr_info("vgsp: stage 3d dry-run prime complete (read-only; nothing written)\n");
}
}
}
@@ -1575,7 +1630,7 @@ err_board:
* has nothing to drop. The D0 locks are intentionally left in
* place.
*/
- pr_err("gsp-phys: claim aborted with the power domain LOCKED and no driver on %s; not rebinding the distribution driver (do not retry in this boot)\n",
+ pr_err("vgsp: claim aborted with the power domain LOCKED and no driver on %s; not rebinding the distribution driver (do not retry in this boot)\n",
pci_name(pdev));
pci_dev_put(pdev);
return ret;
@@ -1667,10 +1722,10 @@ void gsp_phys_gpu_release(void)
* abort.
*/
if (wpr2_ret) {
- pr_err("gsp-phys: NOT rebinding %s: WPR2 teardown did not complete (WPR2 still up or board unresponsive); do not boot the distribution driver against it; power domain stays LOCKED (reboot with approval; do not retry in this boot)\n",
+ pr_err("vgsp: NOT rebinding %s: WPR2 teardown did not complete (WPR2 still up or board unresponsive); do not boot the distribution driver against it; power domain stays LOCKED (reboot with approval; do not retry in this boot)\n",
pci_name(pdev));
if (phys.runtime_ref_held)
- pr_debug("gsp-phys: keeping the runtime-PM reference on %s held (WPR2 still up)\n",
+ pr_debug("vgsp: keeping the runtime-PM reference on %s held (WPR2 still up)\n",
pci_name(pdev));
pci_dev_put(pdev);
return;
@@ -1683,7 +1738,7 @@ void gsp_phys_gpu_release(void)
* driverless board cannot be power-gated again.
*/
if (gsp_phys_board_check(pdev, "before rebind")) {
- pr_err("gsp-phys: NOT rebinding %s: board unresponsive; power domain stays LOCKED (do not retry in this boot)\n",
+ pr_err("vgsp: NOT rebinding %s: board unresponsive; power domain stays LOCKED (do not retry in this boot)\n",
pci_name(pdev));
/*
* Intentional imbalance: the claim's runtime-PM
@@ -1693,7 +1748,7 @@ void gsp_phys_gpu_release(void)
* drops it; otherwise it stays held until reboot.
*/
if (phys.runtime_ref_held)
- pr_debug("gsp-phys: keeping the runtime-PM reference on %s held (intentional abort)\n",
+ pr_debug("vgsp: keeping the runtime-PM reference on %s held (intentional abort)\n",
pci_name(pdev));
pci_dev_put(pdev);
return;
@@ -1702,7 +1757,7 @@ void gsp_phys_gpu_release(void)
ret = device_attach(&pdev->dev);
drv = pdev->dev.driver;
if (!drv) {
- pr_err("gsp-phys: %s did not rebind (rc=%d); power domain stays LOCKED; rebind the distribution driver manually (e.g. `modprobe nvidia`), then unload\n",
+ pr_err("vgsp: %s did not rebind (rc=%d); power domain stays LOCKED; rebind the distribution driver manually (e.g. `modprobe nvidia`), then unload\n",
pci_name(pdev), ret);
/*
* Same intentional imbalance as the unresponsive-board
@@ -1710,13 +1765,13 @@ void gsp_phys_gpu_release(void)
* the runtime-PM reference stays held with them.
*/
if (phys.runtime_ref_held)
- pr_debug("gsp-phys: keeping the runtime-PM reference on %s held (no rebind)\n",
+ pr_debug("vgsp: keeping the runtime-PM reference on %s held (no rebind)\n",
pci_name(pdev));
pci_dev_put(pdev);
return;
}
- pr_info("gsp-phys: released %s; rebound to %s (rc=%d)\n",
+ pr_info("vgsp: released %s; rebound to %s (rc=%d)\n",
pci_name(pdev), drv->name, ret);
/*
@@ -1734,7 +1789,7 @@ void gsp_phys_gpu_release(void)
msleep(GSP_PHYS_REBIND_GATE_POLL_MS);
}
if (i == GSP_PHYS_REBIND_GATE_TRIES) {
- pr_err("gsp-phys: %s did not resume after the rebind (driver=%s status=%d); power domain stays LOCKED (do not retry in this boot)\n",
+ pr_err("vgsp: %s did not resume after the rebind (driver=%s status=%d); power domain stays LOCKED (do not retry in this boot)\n",
pci_name(pdev),
pdev->dev.driver ? pdev->dev.driver->name : "none",
pdev->dev.power.runtime_status);
@@ -1745,7 +1800,7 @@ void gsp_phys_gpu_release(void)
* again. It stays held until reboot.
*/
if (phys.runtime_ref_held)
- pr_debug("gsp-phys: keeping the runtime-PM reference on %s held (rebind gate timeout)\n",
+ pr_debug("vgsp: keeping the runtime-PM reference on %s held (rebind gate timeout)\n",
pci_name(pdev));
pci_dev_put(pdev);
return;
@@ -1848,7 +1903,7 @@ static void gsp_phys_backend_static_probe_work(struct work_struct *work)
ret = gsp_phys_backend_static_probe();
if (ret)
- pr_warn("gsp-phys: static-config probe failed: %d; the static overlay keeps the emulated model\n",
+ pr_warn("vgsp: static-config probe failed: %d; the static overlay keeps the emulated model\n",
ret);
}
@@ -1873,19 +1928,19 @@ static bool gsp_phys_backend_claim_release_locked(const char *who)
if (backend.state == GSP_PHYS_BACKEND_OFF)
return false;
if (backend.module_owned) {
- pr_info("gsp-phys: backend %s: module-owned claim stays up (released at rmmod)\n",
+ pr_info("vgsp: backend %s: module-owned claim stays up (released at rmmod)\n",
who);
return false;
}
if (backend.releasing) {
- pr_info("gsp-phys: backend %s: release already in progress\n",
+ pr_info("vgsp: backend %s: release already in progress\n",
who);
return false;
}
if (backend.state != GSP_PHYS_BACKEND_STOPPING) {
WRITE_ONCE(backend.state, GSP_PHYS_BACKEND_STOPPING);
backend.generation++;
- pr_info("gsp-phys: backend %s: STOPPING (generation=%u, refcount=%u)\n",
+ pr_info("vgsp: backend %s: STOPPING (generation=%u, refcount=%u)\n",
who, backend.generation, backend.refcount);
}
backend.releasing = true;
@@ -1918,7 +1973,7 @@ static void gsp_phys_backend_release_run(void)
backend.releasing = false;
WRITE_ONCE(backend.state, GSP_PHYS_BACKEND_OFF);
mutex_unlock(&gsp_phys_session_lock);
- pr_info("gsp-phys: backend release: OFF (owner=mdev)\n");
+ pr_info("vgsp: backend release: OFF (owner=mdev)\n");
}
int gsp_phys_backend_start(void)
@@ -1929,13 +1984,13 @@ int gsp_phys_backend_start(void)
if (backend.state == GSP_PHYS_BACKEND_STOPPING) {
mutex_unlock(&gsp_phys_session_lock);
- pr_info("gsp-phys: backend start refused: session is STOPPING\n");
+ pr_info("vgsp: backend start refused: session is STOPPING\n");
return -EAGAIN;
}
if (backend.state != GSP_PHYS_BACKEND_OFF) {
backend.refcount++;
- pr_info("gsp-phys: backend start: joining live session (state=%d, refcount=%u, owner=%s)\n",
+ pr_info("vgsp: backend start: joining live session (state=%d, refcount=%u, owner=%s)\n",
backend.state, backend.refcount,
backend.module_owned ? "module" : "mdev");
mutex_unlock(&gsp_phys_session_lock);
@@ -1953,7 +2008,7 @@ int gsp_phys_backend_start(void)
was_claimed = gsp_phys_gpu_claimed();
if (!was_claimed && !gsp_phys_gpu_enabled()) {
mutex_unlock(&gsp_phys_session_lock);
- pr_info("gsp-phys: backend start refused: gsp_phys_gpu=0, no claim requested (guest stays on emulation)\n");
+ pr_info("vgsp: backend start refused: gsp_phys_gpu=0, no claim requested (guest stays on emulation)\n");
return -EOPNOTSUPP;
}
@@ -1962,7 +2017,7 @@ int gsp_phys_backend_start(void)
if (was_claimed) {
if (!gsp_phys_boot_rm_ready())
- pr_warn("gsp-phys: backend start: joined the live module-owned claim but the GSP-RM session is not ready (init-done/unload bits); module-owned release is handled at rmmod\n");
+ pr_warn("vgsp: backend start: joined the live module-owned claim but the GSP-RM session is not ready (init-done/unload bits); module-owned release is handled at rmmod\n");
/*
* A new READY session: bump the generation (so a cache left
* from an earlier session can never match) and fill the
@@ -1971,7 +2026,7 @@ int gsp_phys_backend_start(void)
backend.generation++;
gsp_phys_backend_static_invalidate();
WRITE_ONCE(backend.state, GSP_PHYS_BACKEND_READY);
- pr_info("gsp-phys: backend start: joined the live module-owned claim (READY, generation=%u)\n",
+ pr_info("vgsp: backend start: joined the live module-owned claim (READY, generation=%u)\n",
backend.generation);
gsp_phys_backend_static_probe_schedule();
mutex_unlock(&gsp_phys_session_lock);
@@ -1981,7 +2036,7 @@ int gsp_phys_backend_start(void)
backend.generation++;
gsp_phys_backend_static_invalidate();
WRITE_ONCE(backend.state, GSP_PHYS_BACKEND_CLAIMING);
- pr_info("gsp-phys: backend start: mdev-owned claim+boot scheduled (refcount=1, generation=%u)\n",
+ pr_info("vgsp: backend start: mdev-owned claim+boot scheduled (refcount=1, generation=%u)\n",
backend.generation);
schedule_work(&gsp_phys_backend_start_work_item);
mutex_unlock(&gsp_phys_session_lock);
@@ -2013,13 +2068,13 @@ static void gsp_phys_backend_start_work(struct work_struct *work)
mutex_lock(&gsp_phys_session_lock);
if (backend.state != GSP_PHYS_BACKEND_CLAIMING) {
mutex_unlock(&gsp_phys_session_lock);
- pr_info("gsp-phys: backend start: worker aborted, session state=%d\n",
+ pr_info("vgsp: backend start: worker aborted, session state=%d\n",
backend.state);
return;
}
mutex_unlock(&gsp_phys_session_lock);
- pr_info("gsp-phys: backend start: claiming + booting the physical GPU (mdev-owned)\n");
+ pr_info("vgsp: backend start: claiming + booting the physical GPU (mdev-owned)\n");
ret = gsp_phys_gpu_claim();
@@ -2031,7 +2086,7 @@ static void gsp_phys_backend_start_work(struct work_struct *work)
WRITE_ONCE(backend.state, GSP_PHYS_BACKEND_OFF);
mutex_unlock(&gsp_phys_session_lock);
gsp_phys_backend_static_invalidate();
- pr_err("gsp-phys: backend start: claim/boot failed: %d; backend OFF, guest stays on emulation\n",
+ pr_err("vgsp: backend start: claim/boot failed: %d; backend OFF, guest stays on emulation\n",
ret);
return;
}
@@ -2046,7 +2101,7 @@ static void gsp_phys_backend_start_work(struct work_struct *work)
gsp_phys_boot_rm_flags(&rm_init_done, &rm_unload_submitted);
mutex_unlock(&gsp_phys_session_lock);
- pr_err("gsp-phys: backend start: claim succeeded but the live GSP-RM session is not ready (rm_init_done=%u unload_submitted=%u); releasing the claim (fail-open)\n",
+ pr_err("vgsp: backend start: claim succeeded but the live GSP-RM session is not ready (rm_init_done=%u unload_submitted=%u); releasing the claim (fail-open)\n",
rm_init_done, rm_unload_submitted);
if (gsp_phys_gpu_claimed())
gsp_phys_gpu_release();
@@ -2061,11 +2116,11 @@ static void gsp_phys_backend_start_work(struct work_struct *work)
}
if (backend.state == GSP_PHYS_BACKEND_STOPPING) {
mutex_unlock(&gsp_phys_session_lock);
- pr_info("gsp-phys: backend start: claim completed while STOPPING; release deferred to the stopper\n");
+ pr_info("vgsp: backend start: claim completed while STOPPING; release deferred to the stopper\n");
return;
}
WRITE_ONCE(backend.state, GSP_PHYS_BACKEND_READY);
- pr_info("gsp-phys: backend start: READY (owner=mdev, refcount=%u)\n",
+ pr_info("vgsp: backend start: READY (owner=mdev, refcount=%u)\n",
backend.refcount);
/*
* Fill the static-config snapshot once for this generation before any
@@ -2083,13 +2138,13 @@ void gsp_phys_backend_stop(void)
mutex_lock(&gsp_phys_session_lock);
if (backend.state == GSP_PHYS_BACKEND_OFF) {
mutex_unlock(&gsp_phys_session_lock);
- pr_info("gsp-phys: backend stop: already OFF\n");
+ pr_info("vgsp: backend stop: already OFF\n");
return;
}
if (backend.refcount)
backend.refcount--;
if (backend.refcount) {
- pr_info("gsp-phys: backend stop: refcount=%u, session stays up (owner=%s)\n",
+ pr_info("vgsp: backend stop: refcount=%u, session stays up (owner=%s)\n",
backend.refcount,
backend.module_owned ? "module" : "mdev");
mutex_unlock(&gsp_phys_session_lock);
@@ -2126,13 +2181,13 @@ void gsp_phys_backend_begin_stop(void)
}
if (backend.module_owned) {
mutex_unlock(&gsp_phys_session_lock);
- pr_info("gsp-phys: backend begin stop: module-owned claim; no state change\n");
+ pr_info("vgsp: backend begin stop: module-owned claim; no state change\n");
return;
}
if (backend.state != GSP_PHYS_BACKEND_STOPPING) {
WRITE_ONCE(backend.state, GSP_PHYS_BACKEND_STOPPING);
backend.generation++;
- pr_info("gsp-phys: backend begin stop: STOPPING (generation=%u, refcount=%u)\n",
+ pr_info("vgsp: backend begin stop: STOPPING (generation=%u, refcount=%u)\n",
backend.generation, backend.refcount);
}
mutex_unlock(&gsp_phys_session_lock);