• Tormod Volden's avatar
    drm: Compare only lower 32 bits of framebuffer map offsets · 66aa6962
    Tormod Volden authored
    Drivers using multiple framebuffers got broken by commit
    41c2e75e which ignored the framebuffer
    (or register) map offset when looking for existing maps. The rationale
    was that the kernel-userspace ABI is fixed at a 32-bit offset, so the
    real offsets could not always be handed over for comparison.
    
    Instead of ignoring the offset we will compare the lower 32 bit. Drivers
    using multiple framebuffers should just make sure that the lower 32 bit
    are different. The existing drivers in question are practically limited
    to 32-bit systems so that should be fine for them.
    
    It is assumed that current drivers always specify a correct framebuffer
    map offset, even if this offset was ignored since above commit. So this
    patch should not change anything for drivers using only one framebuffer.
    
    Drivers needing multiple framebuffers with 64-bit map offsets will need
    to cook up something, for instance keeping an ID in the lower bit which
    is to be aligned away when it comes to using the offset.
    
    All of above applies to _DRM_REGISTERS as well.
    Signed-off-by: default avatarTormod Volden <debian.tormod@gmail.com>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    66aa6962
drm_bufs.c 42.5 KB