• David Mosberger's avatar
    [PATCH] Replace check_bridge_mode() with (bridge->mode & AGSTAT_MODE_3_0). · 66bb8bf8
    David Mosberger authored
    [AGPGART] Replace check_bridge_mode() with (bridge->mode & AGSTAT_MODE_3_0).
    
    As mentioned earlier, the current check_bridge_mode() code assumes
    that AGP bridges are PCI devices.  This isn't always true.  Definitely
    not for HP zx1 chipset and the same seems to be the case for SGI's AGP
    bridge.
    
    The patch below fixes the problem by picking up the AGP_MODE_3_0 bit
    from bridge->mode.  I feel like I may be missing something, since I
    can't see any reason why check_bridge_mode() wasn't doing that in the
    first place.  According to the AGP 3.0 specs, the AGP_MODE_3_0 bit is
    determined during the hardware reset and cannot be changed, so it
    seems to me it should be safe to pick it up from bridge->mode.
    
    With the patch applied, I can definitely use AGP acceleration both
    with AGP 2.0 and AGP 3.0 (one with an Nvidia card, the other with an
    ATI FireGL card).
    
    Unless someone spots a problem, please apply this patch so 3d
    acceleration can work on zx1 boxes again.
    
    This makes AGP work again on machines with an AGP bridge that isn't a
    PCI device.
    Signed-off-by: default avatarDavid Mosberger-Tang <davidm@hpl.hp.com>
    Signed-off-by: default avatarDave Jones <davej@redhat.com>
    66bb8bf8
generic.c 31.2 KB