Title: RE: <Dri-devel> lockups w/ AGP 4x

> > My system is a Mobile P-4 1.8 ghz with a 16 MB 4x AGP [ATI Radeon] M7.

> > I would like to inform you that I have found the solution to the
> > above-mentioned problems.  These problems occur in several branches of
> > XFree86 starting from about one-and-a-half months ago, I believe.  The
> > removal of two lines of code was all that was necessary to correct
> > EVERY one of the above problems.  It is as follows.
> >
> > File: xc/programs/Xserver/hw/xfree86/drivers/ati/radeon_dri.c
> > Lines: 710 and 711
>
> A unified diff says more than a thousand words, but I assume
> it's about
> this:
>
>     /* Workaround for some hardware bugs */
>     if (info->ChipFamily < CHIP_FAMILY_R200)
>       OUTREG(RADEON_AGP_CNTL, INREG(RADEON_AGP_CNTL) | 0x000e0020);
>
> > I understand that this code may be beneficial for some people, but I
> > do not understand enough about X or the various registers of the
> > graphics hardware to actually 'fix' the code and these lines wreak
> > havok on my system.
>
> These lines of code come from XFree86 CVS, probably by Kevin E. Martin
> or Hui Yu, It would be interesting to hear their rationale
> behind this, putting them on CC:.

From what i have read, i think the M7 grafics chipset
does neither like nor need that workaround,
whilst it does qualify as an pre-R200 model.
So the conditional should be modified accordingly.

As far as i understand by reading public sources,
the RADEON_AGP_CNTL register is forcefulley programmed
to an aper size of 128 MB or smaller (0x20), avoiding 256 MB.
The meaning of the value 0x000e0000 is not explained there.

my suggestion based upon the chip family enum in radeon.h is this:
  /* Workaround for some hardware bugs */
  if (info->ChipFamily < CHIP_FAMILY_M7) /* M7, R200 and upwards are okay */
    OUTREG(RADEON_AGP_CNTL, INREG(RADEON_AGP_CNTL) | 0x000e0020); 

but that's all guessworks and i would be glad
if Hui or whoever knows about it can clarify on that.

-Alex.

Reply via email to