diff options
| author | Mohamed Ahmed <mohamedahmedegypt2001@gmail.com> | 2026-08-25 04:14:05 +0400 |
|---|---|---|
| committer | Lyude Paul <lyude@redhat.com> | 2026-08-25 17:49:23 -0400 |
| commit | 9421dfe912e55360e6b9301a110acb00df7e7320 (patch) | |
| tree | 394198b922dd4f27a70dbbb98e53189d0cfb46eb /scripts/objdiff | |
| parent | 39fd4b742720c68da8695ee1ffa85c5fea4f8e11 (diff) | |
| download | linux-next-9421dfe912e55360e6b9301a110acb00df7e7320.tar.gz linux-next-9421dfe912e55360e6b9301a110acb00df7e7320.zip | |
drm/nouveau/disp: fix head state readback on GB20x
The GSP path reads armed head state and the RG scanout position through
gv100_head_state() and gv100_head_rgpos() on every generation.
gv100_head_state() reads the core channel's state mirror at a 0x400
per-head stride, which NVD5.0 (GB20x) doubled. Per NVIDIA's published
CA7D class header every HEAD_SET method sits at 0x2000 + head * 0x800,
while the mirror bases are unchanged (assembly at 0x680000, armed at
+0x8000, per OpenRM's v03_00 channel-user-base HAL which is still used on
DISPv0502).
Add gb202_head_state(), the same readback at the 0x800 stride, and a
gb202_gsp_head table to supply it.
gv100_head_rgpos() is kept. The RG registers keep their per-head 0x800
stride on NVD5.0, and OpenRM's kdispReadRgLineCountAndFrameCount_v03_00
still reads NV_PDISP_RG_DPCA on DISPv0502.
Fixes: 6cc6e08d4542 ("drm/nouveau/kms: add support for GB20x")
Cc: stable@vger.kernel.org
Signed-off-by: Mohamed Ahmed <mohamedahmedegypt2001@gmail.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Link: https://patch.msgid.link/20260825001408.14219-8-mohamedahmedegypt2001@gmail.com
Diffstat (limited to 'scripts/objdiff')
0 files changed, 0 insertions, 0 deletions
