• Daniel Vetter's avatar
    intel-gtt: fix gtt_total_entries detection · e5e408fc
    Daniel Vetter authored
    In commit f1befe71 Chris Wilson added some code to clear the full gtt
    on g33/pineview instead of just the mappable part. The code looks like
    it was copy-pasted from agp/intel-gtt.c, at least an identical piece
    of code is still there (in intel_i830_init_gtt_entries). This lead to
    a regression in 2.6.35 which was supposedly fixed in commit e7b96f28
    
    Now this commit makes absolutely no sense to me. It seems to be
    slightly confused about chipset generations - it references docs for
    4th gen but the regression concerns 3rd gen g33. Luckily the the g33
    gmch docs are available with the GMCH Graphics Control pci config
    register definitions. The other (bigger problem) is that the new
    check in there uses the i830 stolen mem bits (.5M, 1M or 8M of stolen
    mem). They are different since the i855GM.
    
    The most likely case is that it hits the 512M fallback, which was
    probably the right thing for the boxes this was tested on.
    
    So the original approach by Chris Wilson seems to be wrong and the
    current code is definitely wrong. There is a third approach by Jesse
    Barnes from his RFC patch "Who wants a bigger GTT mapping range?"
    where he simply shoves g33 in the same clause like later chipset
    generations.
    
    I've asked him and Jesse confirmed that this should work. So implement
    it.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=16891$Tested-by: default avatarAnisse Astier <anisse@astier.eu>
    Cc: stable@kernel.org
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    e5e408fc
intel-gtt.c 48.3 KB