[ltp] Re: Savage IX-MV / Thinkpad T20/T21/T22 AGP incompatibility
Alex Deucher
linux-thinkpad@linux-thinkpad.org
Sat, 22 Mar 2008 11:18:49 -0400
On Fri, Mar 21, 2008 at 10:03 PM, Bryce Harrington <bryce@canonical.com> wrote:
> Hi Alex,
>
> A couple years ago you looked into[1] a problem with certain savage
> cards on a particular Intel AGP bridge, and identified as a workaround
> to force it to use BusType PCI, which has been documented as a
> semi-official workaround by the thinkpad community[2].
>
> This workaround has been quite thoroughly tested by Ubuntu users[3]. In
> the spirit of minimizing xorg.conf hacking they need to do, I'd like to
> put this into Ubuntu's savage driver. I've made a first cut at a
> patch[4], and would appreciate if you could take a look. In particular,
> while I think I have an adequate check for the device PCI ID, I'm
> uncertain how to test the host bridge id?
This looks fine. There are drm functions to get the AGP bridge info:
unsigned int vendor = drmAgpVendorId(psav->drmFD);
unsigned int device = drmAgpDeviceId(psav->drmFD);
Take a look at SAVAGEDRIAgpInit() in savage_dri.c.
Alex
>
> Thanks,
> Bryce
>
> 1: http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2006-March/032672.html
> 2: http://www.thinkwiki.org/wiki/Problem_with_video_related_system_lockup
> 3: https://bugs.launchpad.net/ubuntu/hardy/+source/xserver-xorg-video-savage/+bug/33617
> 4: http://launchpadlibrarian.net/12802717/03_s3_savage_ix_mv_agp_bridge_incompat.diff
>
>
>
> diff -Nurp xserver-xorg-video-savage-2.1.3-patched/src/savage_driver.c xserver-xorg-video-savage-2.1.3-working/src/savage_driver.c
> --- xserver-xorg-video-savage-2.1.3-patched/src/savage_driver.c 2008-03-21 17:27:16.000000000 -0700
> +++ xserver-xorg-video-savage-2.1.3-working/src/savage_driver.c 2008-03-21 18:34:57.000000000 -0700
> @@ -1535,6 +1535,25 @@ static Bool SavagePreInit(ScrnInfoPtr pS
> "Invalid BusType option, using %s DMA\n",
> psav->IsPCI ? "PCI" : "AGP");
> }
> + } else {
> + /* Thinkpads T10, T21, T22 fail in AGP mode with this specific card
> + * due to an AGP bridge incompatibility (LP: #33617)
> + *
> + * S3 Inc. 86C270-294 Savage/IX-MV (rev 13)
> + * (chip 5333:8c12 card 1014:017f)
> + *
> + * "Intel 440BX/ZX/DX - 82443BX/ZX/DX" AGP bridge
> + * (8086:7192)
> + * TODO: Need to also verify the bridge ID
> + */
> + if (VENDOR_ID(psav->PciInfo) == 0x1014 &&
> + DEVICE_ID(psav->PciInfo) == 0x017f
> + /* && bridge == 8086:7192 (TODO: how to do this?) */
> + )
> + {
> + psav->IsPCI = TRUE;
> + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "BusType set to PCI (see LP: #33617)\n");
> + }
> }
>
> psav->AgpDMA = !psav->IsPCI;
>