Am 17.05.22 um 13:33 schrieb Thomas Zimmermann:
Some DRM helpers assume that all potential color planes of a framebuffer are available; even if the color format didn't specify them. Non-existing planes are silently ignored. This behavior is inconsistent with other helpers and apparently leads to subtle bugs with uninitialized GEM buffer mappings. [1]
Change all affected code to look at the framebuffer format's number of color planes and only process these planes. The update has been discussed in [2] before.
Tested with GEM SHMEM helpers on simpledrm and with GEM VRAM helpers on ast.
I'm not deep enough into all the details for a full review, but feel free to add an Acked-by: Christian König christian.koenig@amd.com to the series.
Thanks, Christian.
v2:
- refactor GEM VRAM code before fixing it (Javier)
- print more error information in #1 (Javier)
- commit-message fixes (Javier)
[1] https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kerne... [2] https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kerne...
Thomas Zimmermann (5): drm/gem: Share code between drm_gem_fb_{begin,end}_cpu_access() drm/gem: Ignore color planes that are unused by framebuffer format drm/gem-vram: Share code between GEM VRAM's _{prepare,cleanup}_fb() drm/gem-vram: Ignore planes that are unused by framebuffer format drm/gem: Warn on trying to use a non-existing framebuffer plane
drivers/gpu/drm/drm_gem_atomic_helper.c | 6 +- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 104 +++++++++---------- drivers/gpu/drm/drm_gem_vram_helper.c | 54 ++++++---- include/drm/drm_gem_framebuffer_helper.h | 10 +- 4 files changed, 92 insertions(+), 82 deletions(-)