<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:微软雅黑
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
Yes, I transplant the radeon_driver from 64bit_kernel to a mini 32bit_os. The purpose is to open radeon_benchmark&nbsp; or Xorg in the mini_32bit_os.<br>So, I think ring_test success means GPU&nbsp; work correctly and smmothly. <br><br>But ,my ring_test in the mini_32bit_os does not success. When I read scratch register, it`s not the value wrote into the memory location.So, I think the address space does not map correct. <br><pre><font color="#ff0000">&gt;&gt; |--系统内存--|--显存--|--GTT内存--|</font>
<font color="#ff0000">&gt;&gt; 0           256M     384M        896M</font></pre>Such memory alloction in my mini32bit_os has been build up. There are&nbsp; differences between linux-kernel and my mini32bit_os :<br>first,&nbsp; mymini32bit_os does not have TTM;<br>second, the mini32bit_os use 0x8000,0000-----0x9000,0000 virtual address which map to 0x0----0x1000,0000 physical address . While linux-kernel use 0x9800,0000,fc24,0000——0x9800,0000,ff00,0000 CPU vritual address which map to 0x0000,0000,fc24,0000——0x0000,0000,ff00,0000 physical address.I have 2g memory.<br><br>I also use gart_table to tell GPU my mini32bit_os address. set_gart_pages. But ring_test still does not work. If we can use gart_table to tell GPU the ring_buffer memory location, I alloc the ring_buffer from the low 16M memory, then fill the gart_table, GPU would konw that address and ring_test would sucess. <font style="" color="#FF0000">But, when I use the low 16M memory for ring_buffer, ring_test failed. I have reserved the low 16M memory&nbsp; at the boot time</font>.<br><br>That is the exactly confused me. Why? I move ring_buffer any other palace, ring_test will not work?<br><br><br><div><div id="SkyDrivePlaceholder"></div>&gt; Date: Wed, 13 Jun 2012 22:35:45 -0400<br>&gt; Subject: Re: about_radeon_dma<br>&gt; From: alexdeucher@gmail.com<br>&gt; To: sizhiying@hotmail.com<br>&gt; CC: konrad.wilk@oracle.com; dri-devel@lists.freedesktop.org<br>&gt; <br>&gt; On Wed, Jun 13, 2012 at 9:55 PM, llittle了了 &lt;sizhiying@hotmail.com&gt; wrote:<br>&gt; &gt; Thanks for you reply!<br>&gt; &gt;<br>&gt; &gt; I use PCI----MMIO to access VRAM and GTT areas. And for ring_buffer, it<br>&gt; &gt; alloced from the vmalloc--area and vmap to the physical address using page<br>&gt; &gt; table.<br>&gt; &gt;<br>&gt; &gt;  If  enable the radeon_benchmark, it first to prepare the dma channel.<br>&gt; &gt; "set_tex_resource(), set_render_target(), cp_set_surface_sync()" ,such<br>&gt; &gt; functions only write ring_buffer. The ring_buffer is vma-area, even it map<br>&gt; &gt; to physical area. But for radeon_card, how it know the physical-area??<br>&gt; &gt;<br>&gt; &gt;  The question is same to the SCRACH test, ring_test. Why I write into<br>&gt; &gt; ring_buffer,then the card register will know the value "deadbeef" ??<br>&gt; &gt;<br>&gt; &gt; Do I not understand the real card work?  ring_test??<br>&gt; <br>&gt; What exactly are you trying to accomplish?  The GPU has it's own<br>&gt; internal address space that is used by on chip clients. Within that<br>&gt; address space you map can map vram, AGP, and on-chip gart apertures.<br>&gt; The on chip gart aperture lets you map system pages into a contiguous<br>&gt; linear aperture within the GPU's address space.  Once you have these<br>&gt; apertures set up, internal GPU clients need only point to the<br>&gt; appropriate internal address to access a buffer in either system ram<br>&gt; (via on-chip gart or AGP) or vram.  For example, you can store<br>&gt; textures in system memory pages and point the texture hardware at them<br>&gt; and the chip will read from those pages and use the textures on a quad<br>&gt; rendered to vram, or vice versa.<br>&gt; <br>&gt; Command are sent to the GPU via a command processor (CP) that fetches<br>&gt; commands from a ring buffer.  You write the commands into the ring<br>&gt; buffer and update the write pointer.  The CP then executes the<br>&gt; commands in the ring buffer until the read pointer and write pointer<br>&gt; both point to the same index.  At that point the CP stops and waits<br>&gt; until the write pointer is updated again.  In the ring test, we put<br>&gt; command packets on the ring to write to a scatch register or memory<br>&gt; location.  When the CP is done, we check the register or memory<br>&gt; location to make sure it was properly updated.  That way we know the<br>&gt; ring buffer is working.<br>&gt; <br>&gt; Alex<br>&gt; <br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;&gt; Date: Wed, 13 Jun 2012 09:57:28 -0400<br>&gt; &gt;&gt; From: konrad.wilk@oracle.com<br>&gt; &gt;&gt; To: sizhiying@hotmail.com<br>&gt; &gt;&gt; CC: dri-devel@lists.freedesktop.org<br>&gt; &gt;&gt; Subject: Re: about_radeon_dma<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; On Wed, Jun 1 3, 2012 at 09:44:19AM +0800, llittle了了 wrote:<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; HI,all<br>&gt; &gt;&gt; &gt; Now, my lab is using radeon_ati card。And, I need ati_card dma<br>&gt; &gt;&gt; &gt; function。But, I do not clear that how the ati card know the dma address<br>&gt; &gt;&gt; &gt; which alloced by kernel??<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; By using the PCI API.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt; Can any kernel drivers for radeon card give me some advise or explain<br>&gt; &gt;&gt; &gt; the answer?<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; I have read the radeon driver in kernel (/driver/gpu/drm/randeon/xxx<br>&gt; &gt;&gt; &gt; )and the TTM manager. So, as I know, If I use GFP_KERNEL sign to alloc<br>&gt; &gt;&gt; &gt; memory, the radeon_card work right, but any other palce ,it failed. Why and<br>&gt; &gt;&gt; &gt; how this happened?<br>&gt; &gt;&gt; &gt; Is there any way to tell the dma address and ring buffer address in<br>&gt; &gt;&gt; &gt; kernel to the radeon_card ?<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; It`s so confused! Hope for your answer!<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt; &gt; Thanks so much!<br>&gt; &gt;&gt; &gt; zhiyig Si<br>&gt; &gt;&gt; &gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; &gt; _______________________________________________<br>&gt; &gt;&gt; &gt; dri-devel mailing list<br>&gt; &gt;&gt; &gt; dri-devel@lists.freedesktop.org<br>&gt; &gt;&gt; &gt; http://lists.freedesktop.org/mailman/listinfo/dri-devel<br>&gt; &gt;&gt;<br>&gt; &gt;<br>&gt; &gt; _______________________________________________<br>&gt; &gt; dri-devel mailing list<br>&gt; &gt; dri-devel@lists.freedesktop.org<br>&gt; &gt; http://lists.freedesktop.org/mailman/listinfo/dri-devel<br>&gt; &gt;<br></div>                                               </div></body>
</html>