Dave,

On 1/15/07, Dave Airlie <[EMAIL PROTECTED]> wrote:


> ...
> I did a little more digging on this.  It really looks like the address
of "
> ring.start" is completely different than what is in
RADEON_CP_RB_BASE.  (I
> realize that ring.start is a virtual address and RADEON_CP_RB_BASE is a
bus
> address.  However, the drmAddMap call in RADEONDRIPciInit sets the
address
> to 0, so I don't think it is setting 0x5800000 properly either...)
>
> In any event, I think that the radeon DRM module and the card have a
> completely different idea of where the ringbuffer is.  (And as a result
the
> card is executing crap....)
>
> I'm off to find out how all of those mappings work... (I also am going
to
> strace the fglrx driver to see how it sets them up...)
>


I've looked at one of these laptops yesterday (thanks mjg59...) and I
thought it might be possible to get PCI GART working on it, I didn't get
it working, but I think it might be an initial method.. I'm hoping to get
some time later in the week to look at it again..


Since you obviously understand how the GART fits in, I have some questions.
;-)

I've been reading through code and googling, but I haven't been able to find
a clear explanation about how you actually USE the gart.

Are these the right steps for using a GART?

1) Allocate as many host pages as the GART can map.

2) Fill in the GART table with the physical addresses of the pages that you
just allocated.

3) Tell the card the bus address of the GART table
  RADEON_WRITE(RADEON_AIC_PT_BASE, dev_priv->gart_info.bus_addr);

4) Tell the card about the lower/upper address of the vm which should be
remapped.
dev_priv->gart_vm_start

(This is the same view of memory that the process has...)

5) Write stuff to dev_priv->gart_vm_start (from the process's point of
view), and the graphics card will be able to retrieve it at the same
address.

(A simple explanation about the view of memory from the graphics card vs.
the system would be helpful.  I found the following, but I could use more
details: http://lists.freedesktop.org/archives/xorg/2005-May/007673.html)

NOTE:The fglrx 8.32.5 driver makes NO calls to the following registers (I
have a 200M w/128M sideport and no UMA):
RADEON_AIC_STAT,RADEON_AIC_PT_BASE,RADEON_AIC_TLB_ADDR,
RADEON_AIC_TLB_DATA
-or-
RADEON_PCIE_TX_DISCARD_RD_ADDR_LO,RADEON_PCIE_TX_GART_BASE,
RADEON_PCIE_TX_GART_START_LO,RADEON_PCIE_TX_GART_END_LO,
RADEON_PCIE_TX_GART_CNTL,

However, driver does set RADEON_CP_CSQ_CNTL to 0x80000000, which is not
defined anywhere that I've found...

another quick hack
method might be to place the CP in the reserved framebuffer memory (as
it is all UMA) and see if that works....


In my BIOS, I've configured things so that I have no UMA memory and only
128MB of sideport. (If I turn on UMA, the 8.32.5 driver gets unstable...)
Does this mean that I shouldn't be using the GART at all?

The card expects the ring buffer to be at 0x58000000.. (The FB begins at
0x50000000... I think that this is a bus address..)

How do I get that region mmaped into my virtual address space, so that the
kernel can actually write commands to the proper location?

Dave.


Oh.  BTW. I tried the 8.32.5 cp FW, and it doesn't change anything.

Cheers,
--Phil
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to