UG] LSP Diagnostics: Checking registry - 0 pending 2026-02-20T13:19:04.149Z [DEBUG] Hooks: Found 0 total hooks in registry 2026-02-20T13:19:04.149Z [DEBUG] Hooks: checkForNewResponses returning 0 responses 2026-02-20T13:19:04.154Z [DEBUG] MCP server "ide": Tool 'getDiagnostics' completed successfully in 7ms 2026-02-20T13:19:04.156Z [DEBUG] Tool search disabled via experiment (tengu_tst_kx7): below threshold, deferred tools present [source: query] 2026-02-20T13:19:04.164Z [DEBUG] Writing to temp file: /home/josie/.claude.json.tmp.91132.1771593544164 2026-02-20T13:19:04.164Z [DEBUG] Preserving file permissions: 100644 2026-02-20T13:19:04.165Z [DEBUG] Temp file written successfully, size: 139399 bytes 2026-02-20T13:19:04.165Z [DEBUG] Applied original permissions to temp file 2026-02-20T13:19:04.165Z [DEBUG] Renaming /home/josie/.claude.json.tmp.91132.1771593544164 to /home/josie/.claude.json 2026-02-20T13:19:04.165Z [DEBUG] File /home/josie/.claude.json written atomically 2026-02-20T13:19:04.166Z [DEBUG] attribution header x-anthropic-billing-header: cc_version=2.1.49.7ea; cc_entrypoint=cli; cch=00000; 2026-02-20T13:19:04.167Z [DEBUG] [API:request] Creating client, ANTHROPIC_CUSTOM_HEADERS present: false, has Authorization header: false 2026-02-20T13:19:04.167Z [DEBUG] [API:auth] OAuth token check starting 2026-02-20T13:19:04.167Z [DEBUG] [API:auth] OAuth token check complete 2026-02-20T13:19:04.170Z [DEBUG] [useDeferredValue] Messages deferred by 4 (75→79) 2026-02-20T13:19:04.977Z [DEBUG] Stream started - received first chunk 2026-02-20T13:19:04.991Z [DEBUG] [API:request] Creating client, ANTHROPIC_CUSTOM_HEADERS present: false, has Authorization header: false 2026-02-20T13:19:04.991Z [DEBUG] [API:auth] OAuth token check starting 2026-02-20T13:19:04.991Z [DEBUG] [API:auth] OAuth token check complete 2026-02-20T13:19:05.433Z [ERROR] MaxFileReadTokenExceededError: MaxFileReadTokenExceededError: File content (51242 tokens) exceeds maximum allowed tokens (25000). Please use offset and limit parameters to read specific portions of the file, or use the GrepTool to search for specific content. at q2q (file:///home/josie/.config/nvm/versions/node/v20.19.1/lib/node_modules/@anthropic-ai/claude-code/cli.js:4875:21278) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async K2q (file:///home/josie/.config/nvm/versions/node/v20.19.1/lib/node_modules/@anthropic-ai/claude-code/cli.js:4879:2435) at async Object.call (file:///home/josie/.config/nvm/versions/node/v20.19.1/lib/node_modules/@anthropic-ai/claude-code/cli.js:4884:5919) at async file:///home/josie/.config/nvm/versions/node/v20.19.1/lib/node_modules/@anthropic-ai/claude-code/cli.js:5064:1728 2026-02-20T13:19:06.360Z [DEBUG] Stream started - received first chunk 2026-02-20T13:19:06.663Z [DEBUG] [useDeferredValue] Messages deferred by 1 (79→80) 2026-02-20T13:19:06.695Z [DEBUG] High write ratio: blit=0, write=1861 (100.0% writes), screen=79x62 2026-02-20T13:19:07.265Z [DEBUG] executePreToolHooks called for tool: Bash 2026-02-20T13:19:07.268Z [DEBUG] Getting matching hook commands for PreToolUse with query: Bash 2026-02-20T13:19:07.268Z [DEBUG] Found 1 hook matchers in settings 2026-02-20T13:19:07.268Z [DEBUG] Matched 1 unique hooks for query "Bash" (1 before deduplication) 2026-02-20T13:19:07.279Z [DEBUG] [useDeferredValue] Messages deferred by 1 (80→81) 2026-02-20T13:19:07.299Z [DEBUG] High write ratio: blit=0, write=1861 (100.0% writes), screen=79x62 2026-02-20T13:19:07.303Z [DEBUG] [useDeferredValue] Messages deferred by 2 (80→82) 2026-02-20T13:19:07.329Z [DEBUG] Hooks: Checking initial response for async: {} 2026-02-20T13:19:07.329Z [DEBUG] Hooks: Parsed initial response: {} 2026-02-20T13:19:07.329Z [DEBUG] Hooks: Initial response is not async, continuing normal processing 2026-02-20T13:19:07.339Z [DEBUG] Successfully parsed and validated hook JSON output 2026-02-20T13:19:07.339Z [DEBUG] Hook PreToolUse:Bash (PreToolUse) success: {} 2026-02-20T13:19:07.344Z [DEBUG] Tool search disabled for model 'claude-haiku-4-5-20251001': model does not support tool_reference blocks. This feature is only available on Claude Sonnet 4+, Opus 4+, and newer models. 2026-02-20T13:19:07.344Z [DEBUG] Tool search disabled for model 'claude-haiku-4-5-20251001': model does not support tool_reference blocks. This feature is only available on Claude Sonnet 4+, Opus 4+, and newer models. 2026-02-20T13:19:07.344Z [DEBUG] attribution header x-anthropic-billing-header: cc_version=2.1.49.1d1; cc_entrypoint=cli; cch=00000; 2026-02-20T13:19:07.344Z [DEBUG] [API:request] Creating client, ANTHROPIC_CUSTOM_HEADERS present: false, has Authorization header: false 2026-02-20T13:19:07.344Z [DEBUG] [API:auth] OAuth token check starting 2026-02-20T13:19:07.344Z [DEBUG] attribution header x-anthropic-billing-header: cc_version=2.1.49.1d1; cc_entrypoint=cli; cch=00000; 2026-02-20T13:19:07.344Z [DEBUG] [API:request] Creating client, ANTHROPIC_CUSTOM_HEADERS present: false, has Authorization header: false 2026-02-20T13:19:07.344Z [DEBUG] [API:auth] OAuth token check starting 2026-02-20T13:19:07.345Z [DEBUG] [API:auth] OAuth token check complete 2026-02-20T13:19:07.345Z [DEBUG] [API:auth] OAuth token check complete 2026-02-20T13:19:08.276Z [DEBUG] Stream started - received first chunk 2026-02-20T13:19:09.139Z [DEBUG] Stream started - received first chunk 2026-02-20T13:19:09.184Z [DEBUG] Permission suggestions for Bash: [ { "type": "addRules", "rules": [ { "toolName": "Bash", "ruleContent": "claude mcp list:*" } ], "behavior": "allow", "destination": "localSettings" } ] 2026-02-20T13:19:09.189Z [DEBUG] executePermissionRequestHooks called for tool: Bash 2026-02-20T13:19:09.192Z [DEBUG] Getting matching hook commands for PermissionRequest with query: Bash 2026-02-20T13:19:09.192Z [DEBUG] Found 0 hook matchers in settings 2026-02-20T13:19:09.192Z [DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication) 2026-02-20T13:19:15.222Z [DEBUG] Getting matching hook commands for Notification with query: permission_prompt 2026-02-20T13:19:15.222Z [DEBUG] Found 0 hook matchers in settings 2026-02-20T13:19:15.222Z [DEBUG] Matched 0 unique hooks for query "permission_prompt" (0 before deduplication) 2026-02-20T13:35:48.578Z [DEBUG] AutoUpdaterWrapper: Installation type: npm-global 2026-02-20T13:35:49.224Z [DEBUG] Bash tool error (658ms): Shell command failed 2026-02-20T13:35:49.226Z [DEBUG] Getting matching hook commands for PostToolUseFailure with query: Bash 2026-02-20T13:35:49.226Z [DEBUG] Found 0 hook matchers in settings 2026-02-20T13:35:49.226Z [DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication) 2026-02-20T13:35:49.227Z [DEBUG] MCP server "ide": Calling MCP tool: getDiagnostics 2026-02-20T13:35:49.227Z [DEBUG] LSP Diagnostics: getLSPDiagnosticAttachments called 2026-02-20T13:35:49.227Z [DEBUG] LSP Diagnostics: Checking registry - 0 pending 2026-02-20T13:35:49.227Z [DEBUG] Hooks: Found 0 total hooks in registry 2026-02-20T13:35:49.227Z [DEBUG] Hooks: checkForNewResponses returning 0 responses 2026-02-20T13:35:49.228Z [DEBUG] [useDeferredValue] Messages deferred by 1 (82→83) 2026-02-20T13:35:49.235Z [DEBUG] MCP server "ide": Tool 'getDiagnostics' completed successfully in 8ms 2026-02-20T13:35:49.236Z [DEBUG] Tool search disabled via experiment (tengu_tst_kx7): below threshold, deferred tools present [source: query] 2026-02-20T13:35:49.240Z [DEBUG] Writing to temp file: /home/josie/.claude.json.tmp.91132.1771594549240 2026-02-20T13:35:49.240Z [DEBUG] Preserving file permissions: 100644 2026-02-20T13:35:49.241Z [DEBUG] Temp file written successfully, size: 139399 bytes 2026-02-20T13:35:49.241Z [DEBUG] Applied original permissions to temp file 2026-02-20T13:35:49.241Z [DEBUG] Renaming /home/josie/.claude.json.tmp.91132.1771594549240 to /home/josie/.claude.json 2026-02-20T13:35:49.241Z [DEBUG] File /home/josie/.claude.json written atomically 2026-02-20T13:35:49.242Z [DEBUG] attribution header x-anthropic-billing-header: cc_version=2.1.49.7ea; cc_entrypoint=cli; cch=00000; 2026-02-20T13:35:49.242Z [DEBUG] [API:“ GraphQL Endpoint: https://gitlab.com/api/graphql/\n ! No token found (checked config file, keyring, and environment variables).\ngitlab.archlinux.org\n ✓ Logged in to gitlab.archlinux.org as pfeifferj (/home/josie/.config/glab-cli/config.yml)\n ✓ Git operations for gitlab.archlinux.org configured to use ssh protocol.\n ✓ API calls for gitlab.archlinux.org are made over https protocol.\n ✓ REST API Endpoint: https://gitlab.archlinux.org/api/v4/\n ✓ GraphQL Endpoint: https://gitlab.archlinux.org/api/graphql/\n ✓ Token found: **************************\n \n ERROR \n \n X could not authenticate to one or more of the configured GitLab instances.. \n\n\ngitlab.com\n x gitlab.com: API call failed: GET https://gitlab.com/api/v4/user: 401 {message: 401 Unauthorized}\n ✓ Git operations for gitlab.com configured to use ssh protocol.\n ✓ API calls for gitlab.com are made over https protocol.\n ✓ REST API Endpoint: https://gitlab.com/api/v4/\n ✓ GraphQL Endpoint: https://gitlab.com/api/graphql/\n ! No token found (checked config file, keyring, and environment variables).\ngitlab.archlinux.org\n ✓ Logged in to gitlab.archlinux.org as pfeifferj (/home/josie/.config/glab-cli/config.yml)\n ✓ Git operations for gitlab.archlinux.org configured to use ssh protocol.\n ✓ API calls for gitlab.archlinux.org are made over https protocol.\n ✓ REST API Endpoint: https://gitlab.archlinux.org/api/v4/\n ✓ GraphQL Endpoint: https://gitlab.archlinux.org/api/graphql/\n ✓ Token found: **************************\n \n ERROR \n \n X could not authenticate to one or more of the configured GitLab instances..","is_error":true,"tool_use_id":"toolu_012nNZofo3HnQeYpRUjPuEbj"}]},"uuid":"03933ef3-ff1a-41fe-8e57-3febb39003dc","timestamp":"2026-02-21T19:55:55.645Z","toolUseResult":"Error: Exit code 1\ngitlab.com\n x gitlab.com: API call failed: GET https://gitlab.com/api/v4/user: 401 {message: 401 Unauthorized}\n ✓ Git operations for gitlab.com configured to use ssh protocol.\n ✓ API calls for gitlab.com are made over https protocol.\n ✓ REST API Endpoint: https://gitlab.com/api/v4/\n ✓ GraphQL Endpoint: https://gitlab.com/api/graphql/\n ! No token found (checked config file, keyring, and environment variables).\ngitlab.archlinux.org\n ✓ Logged in to gitlab.archlinux.org as pfeifferj (/home/josie/.config/glab-cli/config.yml)\n ✓ Git operations for gitlab.archlinux.org configured to use ssh protocol.\n ✓ API calls for gitlab.archlinux.org are made over https protocol.\n ✓ REST API Endpoint: https://gitlab.archlinux.org/api/v4/\n ✓ GraphQL Endpoint: https://gitlab.archlinux.org/api/graphql/\n ✓ Token found: **************************\n \n ERROR \n \n X could not authenticate to one or more of the configured GitLab instances.. \n\n\ngitlab.com\n x gitlab.com: API call failed: GET https://gitlab.com/api/v4/user: 401 {message: 401 Unauthorized}\n ✓ Git operations for gitlab.com configured to use ssh protocol.\n ✓ API calls for gitlab.com are made over https protocol.\n ✓ REST API Endpoint: https://gitlab.com/api/v4/\n ✓ GraphQL Endpoint: https://gitlab.com/api/graphql/\n ! No token found (checked config file, keyring, and environment variables).\ngitlab.archlinux.org\n ✓ Logged in to gitlab.archlinux.org as pfeifferj (/home/josie/.config/glab-cli/config.yml)\n ✓ Git operations for gitlab.archlinux.org configured to use ssh protocol.\n ✓ API calls for gitlab.archlinux.org are made over https protocol.\n ✓ REST API Endpoint: https://gitlab.archlinux.org/api/v4/\n ✓ GraphQL Endpoint: https://gitlab.archlinux.org/api/graphql/\n ✓ Token found: **************************\n \n ERROR \n \n X could not authenticate to one or more of the configured GitLab instances..","sourceToolAssistantUUID":"2b4f27f2-a5ac-43d7-afa8-cfab4a640da1"} {"parentUuid":"03933ef3-ff1a-41fe-8e57-3febb39003dc","isSidechain":false,"userType":"external","cwd":"/home/josie","sessionId":"7cf8c4f9-7e12-43b8-82c6-335bc6403f87","version":"2.1.49","gitBranch":"HEAD","message":{"model":"claude-opus-4-6","id":"msg_0186c3DQQcXPFRjpq2xKjWj5","type":"message","role":"assistant","content":[{"type":"text","text":"Authenticated as `pfeifferj` on `gitlab.archlinux.org` -- that's working. The error is just from the stale `gitlab.com` entry. The MCP server will work fine for Arch Linux GitLab.\n\nYou'll need to restart Claude Code for the new MCP server to load. Once you do, you can check it's connected with `/mcp`. From there I'll be able to use `glab` tools to query issues, MRs, pipelines, etc. directly in conversation.\n\nWant me to clean up that dead `gitlab.com` auth entry too?"}],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":1,"cache_creation_input_tokens":750,"cache_read_input_tokens":33971,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":750},"output_tokens":2,"service_tier":"standard","inference_geo":"not_available"}},"requestId":"req_011CYMoWGbBi4LNAmWx5anc9","type":"assistant","uuid":"e0c13a0d-4dad-4f8e-ae26-ff1df7c1da97","timestamp":"2026-02-21T19:56:00.622Z"} {"parentUuid":"e0c13a0d-4dad-4f8e-ae26-ff1df7c1da97","isSidechain":false,"userType":"external","cwd":"/home/josie","sessionId":"7cf8c4f9-7e12-43b8-82c6-335bc6403f87","version":"2.1.49","gitBranch":"HEAD","type":"progress","data":{"type":"hook_progress","hookEvent":"Stop","hookName":"Stop","command":"${CLAUDE_PLUGIN_ROOT}/hooks/stop-hook.sh"},"parentToolUseID":"b85af8ac-5663-44ef-87d8-b4baccbcaa27","toolUseID":"b85af8ac-5663-44ef-87d8-b4baccbcaa27","timestamp":"2026-02-21T19:56:00.650Z","uuid":"04784b95-3f5a-4d23-8136-b6ed2e671e57"} {"parentUuid":"04784b95-3f5a-4d23-8136-b6ed2e671e57","isSidechain":false,"userType":"external","cwd":"/home/josie","sessionId":"7cf8c4f9-7e12-43b8-82c6-335bc6403f87","version":"2.1.49","gitBranch":"HEAD","type":"progress","data":{"type":"hook_progress","hookEvent":"Stop","hookName":"Stop","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/stop.py"},"parentToolUseID":"b85af8ac-5663-44ef-87d8-b4baccbcaa27","toolUseID":"b85af8ac-5663-44ef-87d8-b4baccbcaa27","timestamp":"2026-02-21T19:56:00.650Z","uuid":"1a239a7c-2f69-4a49-93b9-126b33234789"} {"parentUuid":"1a239a7c-2f69-4a49-93b9-126b33234789","isSidechain":false,"userType":"external","cwd":"/home/josie","sessionId":"7cf8c4f9-7e12-43b8-82c6-335bc6403f87","version":"2.1.49","gitBranch":"HEAD","type":"system","subtype":"stop_hook_summary","hookCount":2,"hookInfos":[{"command":"${CLAUDE_PLUGIN_ROOT}/hooks/stop-hook.sh","durationMs":12},{"command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/stop.py","durationMs":41}],"hookErrors":[],"preventedContinuation":false,"stopReason":"","hasOutput":true,"level":"suggestion","timestamp":"2026-02-21T19:56:00.717Z","uuid":"f4d428a7-db9f-45d1-a5c5-99622abbd51b","toolUseID":"b85af8ac-5663-44ef-87d8-b4baccbcaa27"} {"type":"file-history-snapshot","messageId":"b9a92f0e-bc05-4392-aa2d-7d894e737e92","snapshot":{"messageId":"b9a92f0e-bc05-4392-aa2d-7d894e737e92","trackedFileBackups":{},"timestamp":"2026-02-21T19:56:28.267Z"},"isSnapshotUpdate":false} {"parentUuid":"f4d428a7-db9f-45d1-a5c5-99622abbd51b","isSidechain":false,"userType":"external","cwd":"/home/josie","sessionId":"7cf8c4f9-7e12-43b8-82c6-335bc6403f87","version":"2.1.49","gitBranch":"HEAD","type":"user","message":{"role":"user","content":"yea"},"uuid":"b9a92f0e-bc05-4392-aa2d-7d894e737e92","timestamp":"2026-02-21T19:56:28.220Z","todos":[],"permissionMode":"default"} {"parentUuid":"b9a92f0e-bc05-4392-aa2d-7d894e737e92","isSidechain":false,"userType":"external","cwd":"/home/josie","sessionId":"7cf8c4f9-7e12-43b8-82c6-335bc6403f87","version":"2.1.49","gitBranch":"HEAD","message":{"model":"claude-opus-4-6","id":"msg_014NtbxKg92rtFBH1JWw3Ppe","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_013NWjXAdZ5BBouA3TW4W4PE","name":"Bash","input":{"command":"glab auth logout --hostname gitlab.com 2>&1","description":"Remove stale gitlab.com auth entry"},"caller":{"type":"direct"}}],"stowsOroN2btaZWa0VVrHn uzXKI6IBl8cWNNCzCn8+XKbDrZojvCeuuqnqG4Erxp1nitWCPD85bM34nxo8xOYz2pNA45 /T1u9OHCnUcYGMf85pKwITh6FA+s3VQ= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-101-zj45U-_kP8CQJ9QCIKwe3w-1; Mon, 01 Dec 2025 12:57:08 -0500 X-MC-Unique: zj45U-_kP8CQJ9QCIKwe3w-1 X-Mimecast-MFC-AGG-ID: zj45U-_kP8CQJ9QCIKwe3w_1764611826 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 490C4195609F; Mon, 1 Dec 2025 17:57:05 +0000 (UTC) Received: from chopper.redhat.com (unknown [10.22.88.42]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6EBBC30001A4; Mon, 1 Dec 2025 17:57:01 +0000 (UTC) From: Lyude Paul To: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org, Danilo Krummrich , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Airlie , Timur Tabi , Ben Skeggs , Zhi Wang , Mel Henning Subject: [PATCH] drm/nouveau/gsp: Prepare fwsec-sb and fwsec-frts at boot Date: Mon, 1 Dec 2025 12:56:28 -0500 Message-ID: <20251201175634.248900-1-lyude@redhat.com> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-DKIM: signer='redhat.com' status='pass' reason='' DKIMCheck: Server passes DKIM test, 0 Spam score X-Spam-Score: 0.4 (/) X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has performed the tests listed below against this email. Information: https://mxroutedocs.com/directadmin/spamfilters/ --- Content analysis details: (0.4 points) --- pts rule name description ---- ---------------------- ----------------------------------------- 0.0 RCVD_IN_DNSWL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to DNSWL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block for more information. [142.0.200.124 listed in list.dnswl.org] 1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager -0.0 DKIMWL_WL_HIGH DKIMwl.org - High trust sender SpamTally: Final spam score: 4 At the moment - the memory allocations for fwsec-sb and fwsec-frts are created as needed and released after being used. This can cause runtime suspend/resume to initially work on driver load, but then later fail on a machine that has been running for long enough with sufficiently high enough memory pressure: kworker/7:1: page allocation failure: order:5, mode:0xcc0(GFP_KERNEL), nodemask=(null),cpuset=/,mems_allowed=0 CPU: 7 UID: 0 PID: 875159 Comm: kworker/7:1 Not tainted 6.17.8-300.fc43.x86_64 #1 PREEMPT(lazy) Hardware name: SLIMBOOK Executive/Executive, BIOS N.1.10GRU06 02/02/2024 Workqueue: pm pm_runtime_work Call Trace: dump_stack_lvl+0x5d/0x80 warn_alloc+0x163/0x190 ? __alloc_pages_direct_compact+0x1b3/0x220 __alloc_pages_slowpath.constprop.0+0x57a/0xb10 __alloc_frozen_pages_noprof+0x334/0x350 __alloc_pages_noprof+0xe/0x20 __dma_direct_alloc_pages.isra.0+0x1eb/0x330 dma_direct_alloc_pages+0x3c/0x190 dma_alloc_pages+0x29/0x130 nvkm_firmware_ctor+0x1ae/0x280 [nouveau] nvkm_falcon_fw_ctor+0x3e/0x60 [nouveau] nvkm_gsp_fwsec+0x10e/0x2c0 [nouveau] ? sysvec_apic_timer_interrupt+0xe/0x90 nvkm_gsp_fwsec_sb+0x27/0x70 [nouveau] tu102_gsp_fini+0x65/0x110 [nouveau] ? ktime_get+0x3c/0xf0 nvkm_subdev_fini+0x67/0xc0 [nouveau] nvkm_device_fini+0x94/0x140 [nouveau] nvkm_udevice_fini+0x50/0x70 [nouveau] nvkm_object_fini+0xb1/0x140 [nouveau] nvkm_object_fini+0x70/0x140 [nouveau] ? __pfx_pci_pm_runtime_suspend+0x10/0x10 nouveau_do_suspend+0xe4/0x170 [nouveau] nouveau_pmops_runtime_suspend+0x3e/0xb0 [nouveau] pci_pm_runtime_suspend+0x67/0x1a0 ? __pfx_pci_pm_runtime_suspend+0x10/0x10 __rpm_callback+0x45/0x1f0 ? __pfx_pci_pm_runtime_suspend+0x10/0x10 rpm_callback+0x6d/0x80 rpm_suspend+0xe5/0x5e0 ? finish_task_switch.isra.0+0x99/0x2c0 pm_runtime_work+0x98/0xb0 process_one_work+0x18f/0x350 worker_thread+0x25a/0x3a0 ? __pfx_worker_thread+0x10/0x10 kthread+0xf9/0x240 ? __pfx_kthread+0x10/0x10 ? __pfx_kthread+0x10/0x10 ret_from_fork+0xf1/0x110 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1a/0x30 The reason this happens is because the fwsec-sb and fwsec-frts firmware images only support being booted from a contiguous coherent sysmem allocation. If a system runs into enough memory fragmentation from memory pressure, such as what can happen on systems with low amounts of memory, this can lead to a situation where it later becomes impossible to find space for a large enough contiguous allocation to hold each firmware image. As such, we fail to allocate memory for the falcon firmware images - fail to boot the GPU, and the driver falls over. Since this firmware can't use non-contiguous allocations, the best solution to avoid this issue is to simply allocate the memory for both fwsec-sb and fwsec-frts during initial driver load, and reuse said allocations whenever either firmware image needs to be used. We then release the memory allocations on driver unload. Signed-off-by: Lyude Paul Fixes: 594766ca3e53 ("drm/nouveau/gsp: move booter handling to GPU-specific code") Cc: # v6.16+ --- .../gpu/drm/nouveau/include/nvkm/subdev/gsp.h | 5 ++ .../gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c | 56 ++++++++++++++----- .../gpu/drm/nouveau/nvkm/subdev/gsp/priv.h | 8 ++- .../drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c | 11 +++- .../gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c | 4 ++ 5 files changed, 68 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h index 226c7ec56b8ed..608ef5189eddb 100644 --- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h +++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h @@ -73,6 +73,11 @@ struct nvkm_gsp { const struct firmware *bl; const struct firmware *rm; + + struct { + struct nvkm_falcon_fw sb; + struct nvkm_falcon_fw frts; + } falcon; } fws; struct nvkm_firmware fw; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c index 5b721bd9d7994..be9a0b103aa1f 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/fwsec.c @@ -259,18 +259,16 @@ nvkm_gsp_fwsec_v3(struct nvkm_gsp *gsp, const char *name, } static int -nvkm_gsp_fwsec(struct nvkm_gsp *gsp, const char *name, u32 init_cmd) +nvkm_gsp_fwsec_init(struct nvkm_gsp *gsp, struct nvkm_falcon_fw *fw, const char *name, u32 init_cmd) { struct nvkm_subdev *subdev = &gsp->subdev; struct nvkm_device *device = subdev->device; struct nvkm_bios *bios = device->bios; const union nvfw_falcon_ucode_desc *desc; struct nvbios_pmuE flcn_ucode; - u8 idx, ver, hdr; u32 data; u16 size, vers; - struct nvkm_falcon_fw fw = {}; - u32 mbox0 = 0; + u8 idx, ver, hdr; int ret; /* Lookup in VBIOS. */ @@ -291,8 +289,8 @@ nvkm_gsp_fwsec(struct nvkm_gsp *gsp, const char *name, u32 init_cmd) vers = (desc->v2.Hdr & 0x0000ff00) >> 8; switch (vers) { - case 2: ret = nvkm_gsp_fwsec_v2(gsp, name, &desc->v2, size, init_cmd, &fw); break; - case 3: ret = nvkm_gsp_fwsec_v3(gsp, name, &desc->v3, size, init_cmd, &fw); break; + case 2: ret = nvkm_gsp_fwsec_v2(gsp, name, &desc->v2, size, init_cmd, fw); break; + case 3: ret = nvkm_gsp_fwsec_v3(gsp, name, &desc->v3, size, init_cmd, fw); break; default: nvkm_error(subdev, "%s(v%d): version unknown\n", name, vers); return -EINVAL; @@ -303,15 +301,19 @@ nvkm_gsp_fwsec(struct nvkm_gsp *gsp, const char *name, u32 init_cmd) return ret; } - /* Boot. */ - ret = nvkm_falcon_fw_boot(&fw, subdev, true, &mbox0, NULL, 0, 0); - nvkm_falcon_fw_dtor(&fw); - if (ret) - return ret; - return 0; } +static int +nvkm_gsp_fwsec_boot(struct nvkm_gsp *gsp, struct nvkm_falcon_fw *fw) +{ + struct nvkm_subdev *subdev = &gsp->subdev; + u32 mbox0 = 0; + + /* Boot */ + return nvkm_falcon_fw_boot(fw, subdev, true, &mbox0, NULL, 0, 0); +} + int nvkm_gsp_fwsec_sb(struct nvkm_gsp *gsp) { @@ -320,7 +322,7 @@ nvkm_gsp_fwsec_sb(struct nvkm_gsp *gsp) int ret; u32 err; - ret = nvkm_gsp_fwsec(gsp, "fwsec-sb", NVFW_FALCON_APPIF_DMEMMAPPER_CMD_SB); + ret = nvkm_gsp_fwsec_boot(gsp, &gsp->fws.falcon.sb); if (ret) return ret; @@ -334,6 +336,19 @@ nvkm_gsp_fwsec_sb(struct nvkm_gsp *gsp) return 0; } +int +nvkm_gsp_fwsec_sb_ctor(struct nvkm_gsp *gsp) +{ + return nvkm_gsp_fwsec_init(gsp, &gsp->fws.falcon.sb, "fwsec-sb", + NVFW_FALCON_APPIF_DMEMMAPPER_CMD_SB); +} + +void +nvkm_gsp_fwsec_sb_dtor(struct nvkm_gsp *gsp) +{ + nvkm_falcon_fw_dtor(&gsp->fws.falcon.sb); +} + int nvkm_gsp_fwsec_frts(struct nvkm_gsp *gsp) { @@ -342,7 +357,7 @@ nvkm_gsp_fwsec_frts(struct nvkm_gsp *gsp) int ret; u32 err, wpr2_lo, wpr2_hi; - ret = nvkm_gsp_fwsec(gsp, "fwsec-frts", NVFW_FALCON_APPIF_DMEMMAPPER_CMD_FRTS); + ret = nvkm_gsp_fwsec_boot(gsp, &gsp->fws.falcon.frts); if (ret) return ret; @@ -358,3 +373,16 @@ nvkm_gsp_fwsec_frts(struct nvkm_gsp *gsp) nvkm_debug(subdev, "fwsec-frts: WPR2 @ %08x - %08x\n", wpr2_lo, wpr2_hi); return 0; } + +int +nvkm_gsp_fwsec_frts_ctor(struct nvkm_gsp *gsp) +{ + return nvkm_gsp_fwsec_init(gsp, &gsp->fws.falcon.frts, "fwsec-frts", + NVFW_FALCON_APPIF_DMEMMAPPER_CMD_FRTS); +} + +void +nvkm_gsp_fwsec_frts_dtor(struct nvkm_gsp *gsp) +{ + nvkm_falcon_fw_dtor(&gsp->fws.falcon.frts); +} diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h index c3494b7ac572b..d0ce34b5806c2 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/priv.h @@ -5,8 +5,14 @@ #include enum nvkm_acr_lsf_id; -int nvkm_gsp_fwsec_frts(struct nvkm_gsp *); + +int nvkm_gsp_fwsec_sb_ctor(struct nvkm_gsp *); int nvkm_gsp_fwsec_sb(struct nvkm_gsp *); +void nvkm_gsp_fwsec_sb_dtor(struct nvkm_gsp *); + +int nvkm_gsp_fwsec_frts_ctor(struct nvkm_gsp *); +int nvkm_gsp_fwsec_frts(struct nvkm_gsp *); +void nvkm_gsp_fwsec_frts_dtor(struct nvkm_gsp *); struct nvkm_gsp_fwif { int version; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c index 32e6a065d6d7a..33db4bad44ef5 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c @@ -1817,12 +1817,16 @@ r535_gsp_rm_boot_ctor(struct nvkm_gsp *gsp) RM_RISCV_UCODE_DESC *desc; int ret; + ret = nvkm_gsp_fwsec_sb_ctor(gsp); + if (ret) + return ret; + hdr = nvfw_bin_hdr(&gsp->subdev, fw->data); desc = (void *)fw->data + hdr->header_offset; ret = nvkm_gsp_mem_ctor(gsp, hdr->data_size, &gsp->boot.fw); if (ret) - return ret; + goto dtor_fwsec; memcpy(gsp->boot.fw.data, fw->data + hdr->data_offset, hdr->data_size); @@ -1831,6 +1835,9 @@ r535_gsp_rm_boot_ctor(struct nvkm_gsp *gsp) gsp->boot.manifest_offset = desc->manifestOffset; gsp->boot.app_version = desc->appVersion; return 0; +dtor_fwsec: + nvkm_gsp_fwsec_sb_dtor(gsp); + return ret; } static const struct nvkm_firmware_func @@ -2087,6 +2094,7 @@ r535_gsp_dtor(struct nvkm_gsp *gsp) nvkm_gsp_radix3_dtor(gsp, &gsp->radix3); nvkm_gsp_mem_dtor(&gsp->sig); nvkm_firmware_dtor(&gsp->fw); + nvkm_gsp_fwsec_sb_dtor(gsp); nvkm_falcon_fw_dtor(&gsp->booter.unload); nvkm_falcon_fw_dtor(&gsp->booter.load); @@ -2105,6 +2113,7 @@ r535_gsp_dtor(struct nvkm_gsp *gsp) nvkm_gsp_mem_dtor(&gsp->rmargs); nvkm_gsp_mem_dtor(&gsp->wpr_meta); nvkm_gsp_mem_dtor(&gsp->shm.mem); + nvkm_gsp_fwsec_frts_dtor(gsp); r535_gsp_libos_debugfs_fini(gsp); diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c index 81e56da0474a1..b9047da609b81 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/tu102.c @@ -331,6 +331,10 @@ tu102_gsp_oneinit(struct nvkm_gsp *gsp) if (ret) return ret; + ret = nvkm_gsp_fwsec_frts_ctor(gsp); + if (WARN_ON(ret)) + return ret; + ret = nvkm_gsp_fwsec_frts(gsp); if (WARN_ON(ret)) return ret; base-commit: 62433efe0b06042d8016ba0713d801165a939229 -- 2.52.0 From - Mon Dec 01 18:02:41 2025 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 Return-Path: Delivered-To: hi@josie.lol Received: from witcher.mxrouting.net by witcher.mxrouting.net with LMTP id IM4mBD7YLWnVzTEAYBR5ng (envelope-from ) for ; Mon, 01 Dec 2025 18:02:38 +0000 Return-path: Envelope-to: hi@josie.lol Delivery-date: Mon, 01 Dec 2025 18:02:38 +0000 Received: from sv.mirrors.kernel.org ([139.178.88.99]) by witcher.mxrouting.net with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.98) (envelope-from ) id 1vQ8EP-0000000DnOm-2M8j for hi@josie.lol; Mon, 01 Dec 2025 18:02:38 +0000 Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 5CBA83A3B3E for ; Mon, 1 Dec 2025 18:02:36 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A4BA83074A9; Mon, 1 Dec 2025 18:02:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="TFhWGQj3" X-Original-To: stable@vger.kernel.org Received: from BL2PR02CU003.outbound.protection.outlook.com (mail-eastusazon11011002.outbound.protection.outlook.com [52.101.52.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8A8831F3B8A; Mon, 1 Dec 2025 18:02:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.52.2 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=176461215eJÂð ù‚‚kJ