• Matthew Garrett's avatar
    [PATCH] agp: restore APBASE after setting APSIZE · b0825488
    Matthew Garrett authored
    When leaving S3 state, the AGP bridge may not have all PCI configuration
    registers set in the same way as they were at boot.  This should be fixed
    by pci_restore_state - however, the APBASE register cannot be set to
    conflict with the APSIZE register.  If APSIZE is larger than it was before
    suspend, pci_restore_state will not restore APBASE correctly.  The attached
    patch adds an extra item to the agp_bridge_data structure and uses it to
    store the value of APBASE.  On resume, this is then written after APSIZE
    has been set.  This patch only touches the path used for Intel chipsets
    without integrated graphics, and may need to be extended to work with the
    others.
    
    Without this patch, I get the symptoms described in bug 4921 - APBASE ends
    up overlapping various PCI devices, and as a result they fail to work after
    resume.
    Signed-off-by: default avatarMatthew Garrett <mjg59@srcf.ucam.org>
    Acked-by: default avatarDave Jones <davej@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    b0825488
intel-agp.c 51.2 KB