I had seperated the dispatch packet and DMA DATA packet into 2 IBs, and called 
the amdgpu_cs_ioctl twice. 
If I was not mistaken, the `amdgpu_ib_schedule` would emit fence packets for 
each amdgpu_cs_ioctl call. 
Did I need to insert the fence packet explicitly after the dispatch packet?


> -----Original Messages-----
&gt; From: "Alex Deucher" <alexdeuc...@gmail.com>
&gt; Sent Time: 2021-06-03 10:11:46 (Thursday)
&gt; To: "Chen Lei" <chenlei...@ict.ac.cn>
&gt; Cc: "amd-gfx list" <amd-gfx@lists.freedesktop.org>
&gt; Subject: Re: Re: [BUG] Data race when use PACKET3_DMA_DATA?
&gt; 
&gt; On Wed, Jun 2, 2021 at 8:29 PM Chen Lei <chenlei...@ict.ac.cn> wrote:
&gt; &gt;
&gt; &gt; Hi Alex. Thanks for your quick reply.
&gt; &gt; I first submit the OpenCL kernel packet and then submit the DMA DATA 
packet. And the OpenCL kernel reads the value written by the DMA DATA packet.
&gt; &gt; If I understand you correctly, that is because the CP engine 
continues on to process the DMA DATA packet after launching the OpenCL kernel. 
If so, is there any way to sync the CP engine until the OpenCL kernel is 
complete?
&gt; &gt;
&gt; 
&gt; Once the kernel has been dispatched to the shader cores, the CP will
&gt; continue to execute packets in the queue.  If you want it to wait for
&gt; the pipeline to drain you'll need to insert a fence packet (e.g.,
&gt; RELEASE_MEM).
&gt; 
&gt; Alex
&gt; 
&gt; &gt;
&gt; &gt; &gt; -----Original Messages-----
&gt; &gt; &gt; From: "Alex Deucher" <alexdeuc...@gmail.com>
&gt; &gt; &gt; Sent Time: 2021-06-02 21:37:51 (Wednesday)
&gt; &gt; &gt; To: "Chen Lei" <chenlei...@ict.ac.cn>
&gt; &gt; &gt; Cc: "amd-gfx list" <amd-gfx@lists.freedesktop.org>
&gt; &gt; &gt; Subject: Re: [BUG] Data race when use PACKET3_DMA_DATA?
&gt; &gt; &gt;
&gt; &gt; &gt; On Wed, Jun 2, 2021 at 8:44 AM Chen Lei <chenlei...@ict.ac.cn> 
wrote:
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; Hi, I noticed that there are two ways to do DMA for amd 
gpu: the SDMA copy packet and the PM4 dma packet.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; I had tested the PM4 dma packet:  PACKET3_DMA_DATA. In most 
of time, it works.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; But when I launch an OpenCL kernel followed by a 
host-to-gpu DMA packet, it seems that the OpenCL kernel read the new value 
written by the following DMA packet.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; Both the OpenCL kernel and the PM4 dma packet are submitted 
using the amdgpu_cs_ioctl, and they are submitted to the same ring.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; I was not family with the hardware details. According to my 
understanding, because the ring is FIFO, there is no need for any explicit 
synchronization between the OpenCL kernel launch packet and the dma packet. So 
the result looked weird. And when I add the synchronization(i.e. 
amdgpu_cs_wait_ioctl) before the dma packet, everything is OK.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; Was it a hardware bug or did I miss something?
&gt; &gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; The CP DMA engine is separate from the various CP micro engines. 
 When
&gt; &gt; &gt; there is a DMA DATA packet, the DMA operation is offloaded to 
the CP
&gt; &gt; &gt; DMA engine and the CP engine that processed the packet continues 
on to
&gt; &gt; &gt; the next packet.  You need to use the ENGINE_SEL and CP_SYNC 
bits in
&gt; &gt; &gt; the DMA DATA packet to specify the behavior you want.  The 
ENGINE_SEL
&gt; &gt; &gt; bit selects which CP engine processes the packet (PFP or ME) and 
the
&gt; &gt; &gt; CP_SYNC bit stops further packet processing on the selected 
engine
&gt; &gt; &gt; until the DMA is complete.
&gt; &gt; &gt;
&gt; &gt; &gt; Alex
&gt; &gt; 
</chenlei...@ict.ac.cn></amd-gfx@lists.freedesktop.org></chenlei...@ict.ac.cn></alexdeuc...@gmail.com>
&gt; &gt; _______________________________________________
&gt; &gt; amd-gfx mailing list
&gt; &gt; amd-gfx@lists.freedesktop.org
&gt; &gt; https://lists.freedesktop.org/mailman/listinfo/amd-gfx
</chenlei...@ict.ac.cn></amd-gfx@lists.freedesktop.org></chenlei...@ict.ac.cn></alexdeuc...@gmail.com>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to