Author: branden Date: 2004-11-04 09:25:23 -0500 (Thu, 04 Nov 2004) New Revision: 2011
Modified: trunk/debian/CHANGESETS trunk/debian/TODO trunk/debian/changelog trunk/debian/patches/009_ati_r128_retry_idle_until_timeout.diff Log: Update patch #009 to improve the fix for the Rage128-specific problem with engine lockups; because CCE idle commands may never finish, eventually stop the engine altogether after a long enough period of inactivity. Thanks to Daniel Jacobowitz for the original patch, this improved version, and the real-world testing. (Closes: #278654) Modified: trunk/debian/CHANGESETS =================================================================== --- trunk/debian/CHANGESETS 2004-11-03 19:05:41 UTC (rev 2010) +++ trunk/debian/CHANGESETS 2004-11-04 14:25:23 UTC (rev 2011) @@ -233,4 +233,11 @@ description, per section 6.7.7 of the Debian Developers' Reference. 2009 +Update patch #009 to improve the fix for the Rage128-specific problem with +engine lockups; because CCE idle commands may never finish, eventually +stop the engine altogether after a long enough period of inactivity. +Thanks to Daniel Jacobowitz for the original patch, this improved version, +and the real-world testing. (Closes: #278654) + 2011 + vim:set ai et sts=4 sw=4 tw=80: Modified: trunk/debian/TODO =================================================================== --- trunk/debian/TODO 2004-11-03 19:05:41 UTC (rev 2010) +++ trunk/debian/TODO 2004-11-04 14:25:23 UTC (rev 2011) @@ -55,8 +55,6 @@ because validlocale is a Perl utility provided by base-config.) * #277699: apply NX kernel support to stop AMD64 kernel users from getting SEGVs from the XFree86 X server's ELF object loader [patch; BR] -* #278654: apply Dan Jacobowitz's patch fixing a bad assumption in his previous - patch correcting the Rage 128 engine reset logic [patch; BR] * #279436: apply David Mosberger's PCI domain fix [patch; BR] 4.3.0.dfsg.1-10 Modified: trunk/debian/changelog =================================================================== --- trunk/debian/changelog 2004-11-03 19:05:41 UTC (rev 2010) +++ trunk/debian/changelog 2004-11-04 14:25:23 UTC (rev 2011) @@ -116,6 +116,12 @@ the short description, and "transitional package" in the extended description, per section 6.7.7 of the Debian Developers' Reference. + * Update patch #009 to improve the fix for the Rage128-specific problem with + engine lockups; because CCE idle commands may never finish, eventually + stop the engine altogether after a long enough period of inactivity. + Thanks to Daniel Jacobowitz for the original patch, this improved version, + and the real-world testing. (Closes: #278654) + Changes by Denis Barbier and Fabio M. Di Nitto: * Edit xc/programs/xkbcomp/symbols/pc/Imakefile so that the new pc/us_intl @@ -198,7 +204,7 @@ exiting upon encountering the first shell interpeter that fails on the script; instead, attempt all the interpreters and report all that fail. - -- Branden Robinson <[EMAIL PROTECTED]> Wed, 3 Nov 2004 12:47:55 -0500 + -- Branden Robinson <[EMAIL PROTECTED]> Thu, 4 Nov 2004 09:22:55 -0500 xfree86 (4.3.0.dfsg.1-8) unstable; urgency=high Modified: trunk/debian/patches/009_ati_r128_retry_idle_until_timeout.diff =================================================================== --- trunk/debian/patches/009_ati_r128_retry_idle_until_timeout.diff 2004-11-03 19:05:41 UTC (rev 2010) +++ trunk/debian/patches/009_ati_r128_retry_idle_until_timeout.diff 2004-11-04 14:25:23 UTC (rev 2011) @@ -10,36 +10,21 @@ --- xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c~ 2004-06-01 12:17:33.000000000 -0500 +++ xc/programs/Xserver/hw/xfree86/drivers/ati/r128_accel.c 2004-06-01 12:21:37.000000000 -0500 -@@ -228,25 +228,34 @@ - void R128CCEWaitForIdle(ScrnInfoPtr pScrn) - { - R128InfoPtr info = R128PTR(pScrn); -- int ret, i; -+ int ret, i, j; - - FLUSH_RING(); - - for (;;) { -- i = 0; -- do { -- ret = drmCommandNone(info->drmFD, DRM_R128_CCE_IDLE); +@@ -236,17 +236,23 @@ + i = 0; + do { + ret = drmCommandNone(info->drmFD, DRM_R128_CCE_IDLE); - } while ( ret && errno == EBUSY && i++ < R128_IDLE_RETRY ); -+ j = 0; -+ do { -+ i = 0; -+ do { -+ ret = drmCommandNone(info->drmFD, DRM_R128_CCE_IDLE); -+ } while ( ret && errno == EBUSY && i++ < R128_IDLE_RETRY ); -+ } while ( ret && errno == EBUSY && j++ < R128_TIMEOUT ); ++ } while ( ret && errno == EBUSY && i++ < (R128_IDLE_RETRY * R128_IDLE_RETRY) ); if (ret && ret != -EBUSY) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: CCE idle %d\n", __FUNCTION__, ret); } -+ if (i != 0 || j != 0) { ++ if (i > R128_IDLE_RETRY) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, -+ "%s: (DEBUG) CCE idle took j = %d\n", __FUNCTION__, j); ++ "%s: (DEBUG) CCE idle took i = %d\n", __FUNCTION__, i); + } + if (ret == 0) return;