• Jan Niehusmann's avatar
    drm/i915: fix memory corruption with GM965 and >4GB RAM · 6927faf3
    Jan Niehusmann authored
    On a Thinkpad x61s, I noticed some memory corruption when
    plugging/unplugging the external VGA connection. The symptoms are that
    4 bytes at the beginning of a page get overwritten by zeroes.
    The address of the corruption varies when rebooting the machine, but
    stays constant while it's running (so it's possible to repeatedly write
    some data and then corrupt it again by plugging the cable).
    
    Further investigation revealed that the corrupted address is
    (dev_priv->status_page_dmah->busaddr & 0xffffffff), ie. the beginning of
    the hardware status page of the i965 graphics card, cut to 32 bits.
    
    So it seems that for some memory access, the hardware uses only 32 bit
    addressing. If the hardware status page is located >4GB, this
    corrupts unrelated memory.
    Signed-off-by: default avatarJan Niehusmann <jan@gondor.com>
    Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: stable@kernel.org
    6927faf3
i915_dma.c 57.2 KB