From 3a07fba3cbfc540e8ba2c934c1e21d149d2254f3 Mon Sep 17 00:00:00 2001 From: Acelogic <7362641+Acelogic@users.noreply.github.com> Date: Fri, 23 Oct 2026 21:03:00 -0400 Subject: [PATCH] compat: regenerate the recover table against the org q1n1 compat/adreno-recover-table.h recorded the sha256 of sme-batch12's q1n1 a16gpu_stage3.py and adreno_x2.py, so installed_fresh's recover_table_check refused a --gpu-recover reset prepare against the Snapintosh q1n1 repository (branch migrate-private, 7872398), whose files differ (adreno_x2.py moved its GPL-2.0-only tables, among them X285_NONCTXT that hw_init writes, into adreno_x2_protect.py). tools/gen-adreno-recover-table.py now also records adreno_x2_protect.py when the q1n1 checkout has it, since hw_init's non-context writes come from there. Regenerated from that q1n1, only ADRENO_RECOVER_TABLE_INPUTS changes: every replayed operation, the CP_ME_INIT words and the SECVID ops are the same. The macro is read only by the prepare check, so no monitor binary changes. tools/test-gen-adreno-recover-table.py passes against that q1n1 (it failed before). compat/adreno-ib-tables.h already records adreno_x2_protect.py, and its generator reports it fresh against the same q1n1 and the pinned Mesa. --- compat/adreno-recover-table.h | 2 +- tools/gen-adreno-recover-table.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/compat/adreno-recover-table.h b/compat/adreno-recover-table.h index 1e49a3b..c81c32f 100644 --- a/compat/adreno-recover-table.h +++ b/compat/adreno-recover-table.h @@ -14,7 +14,7 @@ */ #pragma once #include -#define ADRENO_RECOVER_TABLE_INPUTS "a16gpu_stage3.py:47df054f6fd6d59b3c14be384f8ec79433bc83d3a26ecb0abaee39ca50bf2e50 adreno_x2.py:4f3cb92f67a81f693d17e298c70b3e55690c9ba48c3b9a379d8127a44f39094f" +#define ADRENO_RECOVER_TABLE_INPUTS "a16gpu_stage3.py:0afd4df74509735e46003e5ac251fc2e42d41df57b5192d7abb2ff4258cd0041 adreno_x2.py:b3ee82f1f1dfcda4f2efafc4cd3facfd4c56b0e0275295142a93a5d8976d0caf adreno_x2_protect.py:d35d3cdf24340fd18fc7c6f1806664cd13726ec6795626f27b15ce93aa9d3cfb" #define ADRENO_RECOVER_TABLE_CP_FENCE_OPTIONS "" #define ADRENO_RECOVER_TABLE_PROTECT_GLOBAL 52u #define ADRENO_RT_WRITE 0u diff --git a/tools/gen-adreno-recover-table.py b/tools/gen-adreno-recover-table.py index c7693ab..a728646 100755 --- a/tools/gen-adreno-recover-table.py +++ b/tools/gen-adreno-recover-table.py @@ -137,7 +137,11 @@ def generate(tools, x290): S3.pipe_write(s, R.PIPE_BR, 'RB_GC_GMEM_PROTECT', gmem_protect) S3.aperture_clear(s) secvid = list(s.ops) - sources = [tools / 'a16gpu_stage3.py', tools / 'adreno_x2.py'] + ([tools / 'a16gpu_x290.py'] if x290 else []) + # adreno_x2.py loads X285_NONCTXT (hw_init's non-context writes, among them RB_GC_GMEM_PROTECT) from + # adreno_x2_protect.py since q1n1 split its GPL-2.0-only tables out; a q1n1 from before the split has none. + protect = [tools / 'adreno_x2_protect.py'] if (tools / 'adreno_x2_protect.py').exists() else [] + sources = [tools / 'a16gpu_stage3.py', tools / 'adreno_x2.py', *protect] + sources += [tools / 'a16gpu_x290.py'] if x290 else [] inputs = ' '.join(f'{p.name}:{hashlib.sha256(p.read_bytes()).hexdigest()}' for p in sources) return hw, sqe, me_init, secvid, s.skipped, inputs