diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-02 15:13:06 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-02 15:13:06 -0400 |
| commit | c9bf1cf098c8ea4daeb3e6c9b274a9025c03045d (patch) | |
| tree | 91b1dc03fc3916a92e1c99bd91a6643842c62525 /kernel/firmware_analyzer.c | |
| parent | 7621dff1d3fba7bdb31b2b15abca1e5ff8ca4380 (diff) | |
| download | open-iov-c9bf1cf098c8ea4daeb3e6c9b274a9025c03045d.tar.gz open-iov-c9bf1cf098c8ea4daeb3e6c9b274a9025c03045d.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/firmware_analyzer.c')
| -rw-r--r-- | kernel/firmware_analyzer.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/kernel/firmware_analyzer.c b/kernel/firmware_analyzer.c index 2d8d84d..9873181 100644 --- a/kernel/firmware_analyzer.c +++ b/kernel/firmware_analyzer.c @@ -3,6 +3,8 @@ * Auto-discovers RPC handler addresses, struct layouts, and firmware signatures */ +#define pr_fmt(fmt) "vgsp-fw-analyzer: " fmt + #include <linux/module.h> #include <linux/kernel.h> #include <linux/slab.h> @@ -116,19 +118,19 @@ static int analyze_rpc_dispatcher(const u8 *fw, size_t fw_len, struct fw_address ret = find_pattern(fw, fw_len, pattern_rpc_dispatch, sizeof(pattern_rpc_dispatch), &offset); if (ret == 0) { addrs->rpc_dispatch_primary = GSP_FW_BASE + offset; - pr_info("FW_ANALYZER: Found RPC dispatcher at 0x%llx\n", addrs->rpc_dispatch_primary); + pr_info("Found RPC dispatcher at 0x%llx\n", addrs->rpc_dispatch_primary); } ret = find_pattern(fw, fw_len, pattern_jump_table, sizeof(pattern_jump_table), &offset); if (ret == 0) { addrs->rpc_jump_table = GSP_FW_BASE + offset; - pr_info("FW_ANALYZER: Found RPC jump table at 0x%llx\n", addrs->rpc_jump_table); + pr_info("Found RPC jump table at 0x%llx\n", addrs->rpc_jump_table); } ret = find_pattern(fw, fw_len, pattern_alloc, sizeof(pattern_alloc), &offset); if (ret == 0) { addrs->alloc_main = GSP_FW_BASE + offset; - pr_info("FW_ANALYZER: Found ALLOC handler at 0x%llx\n", addrs->alloc_main); + pr_info("Found ALLOC handler at 0x%llx\n", addrs->alloc_main); } return 0; @@ -153,8 +155,8 @@ int fw_analyzer_analyze(const u8 *fw_data, size_t fw_len, struct fw_analysis_res if (ret) return ret; - pr_info("FW_ANALYZER: Firmware size=%zu, CRC32=0x%08x\n", fw_len, result->crc32); - pr_info("FW_ANALYZER: SHA256: %*phN\n", 32, result->sha256); + pr_info("Firmware size=%zu, CRC32=0x%08x\n", fw_len, result->crc32); + pr_info("SHA256: %*phN\n", 32, result->sha256); /* Match against known signatures */ for (size_t i = 0; i < ARRAY_SIZE(known_signatures); i++) { @@ -163,13 +165,13 @@ int fw_analyzer_analyze(const u8 *fw_data, size_t fw_len, struct fw_analysis_res strncpy(result->version, known_signatures[i].version, sizeof(result->version) - 1); result->addresses = known_signatures[i].addrs; result->matched = true; - pr_info("FW_ANALYZER: Matched known firmware version: %s\n", result->version); + pr_info("Matched known firmware version: %s\n", result->version); return 0; } } /* Auto-discover addresses if no match */ - pr_info("FW_ANALYZER: No known signature match, attempting auto-discovery\n"); + pr_info("No known signature match, attempting auto-discovery\n"); ret = analyze_rpc_dispatcher(fw_data, fw_len, &result->addresses); if (ret == 0) { result->matched = false; @@ -186,7 +188,7 @@ int fw_analyzer_load_and_analyze(const char *fw_path, struct fw_analysis_result ret = request_firmware(&fw, fw_path, NULL); if (ret) { - pr_err("FW_ANALYZER: Failed to load firmware %s: %d\n", fw_path, ret); + pr_err("Failed to load firmware %s: %d\n", fw_path, ret); return ret; } |
