diff options
Diffstat (limited to 'kernel/gsp_phys_gpu.c')
| -rw-r--r-- | kernel/gsp_phys_gpu.c | 267 |
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); |
