On Sunday 05 June 2005 15:55, Vladimir Dergachev wrote:
> On Sat, 4 Jun 2005, Nicolai Haehnle wrote:
> >>
> >>   The mirroring works as follows: each time scratch register is written
> > the
> >> radeon controller uses PCI to write their value to a specific location 
in
> >> system memory.
> >
> > Are you sure it uses PCI? I'm assuming that the destination address for
> > scratch writeback is controlled by the RADEON_SCRATCH_ADDR register. 
This
> > register is programmed to a value that falls within the AGP area (as
> > defined by RADEON_MC_AGP_LOCATION) if I understand the code correctly.
> 
> My understanding is that AGP only does transfers system RAM -> video RAM
> and all transfers in the opposite direction have to use plain PCI 
> transfers at least as far as the bus is concerned.

You mean system RAM -> graphics card, right? Does this mean that the 
graphics card cannot always write into memory that falls within 
RADEON_MC_AGP_LOCATION?

> It could be that AGP GART can still decode addresses for writes to system 
> memory, I guess this depends on a particular architecture.
> 
> One of the reasons to look forward to PCI Express is that it is 
> bi-directional, unlike AGP.
> 
> >
> >>   This, of course, would not work if the memory controller is
> > misprogrammed
> >> - which was the cause of failures.
> >>
> >>   Which way can memory controller be misprogrammed ? The part that
> > concerns
> >> us are positions of Video RAM, AGP and System Ram in Radeon address 
space.
> >> (these are specified by RADEON_MC_AGP_LOCATION, RADEON_MC_FB_LOCATION).
> >
> > What's the meaning of RADEON_AGP_BASE, by the way? It is programmed to
> > dev->agp->base, which is AFAIK an address from the kernel's address 
space.
> > That doesn't make much sense to me.
> 
> It could be anything. However, the recommended way to program the memory 
> controller is to set the BASE of video memory to its physical PCI address 
> and to put AGP memory where it is mirrored by the AGP GART, as, 
> presumably, this does not overlap with system RAM or any of other 
> sensitive areas.
> 
> My understanding is that dev->agp->base is the address where the AGP GART 
> mirrors the pieces of system RAM comprising AGP space.

Yes, that's my understanding, too. But what is the Radeon's business knowing 
that address? Why does it need to know this address? I thought this was CPU 
address space, not card address space.

cu,
Nicolai

Attachment: pgpmw9nGNctUV.pgp
Description: PGP signature

Reply via email to