<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Arial,Helvetica,sans-serif">
<p>okay, thanks <br>
</p>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>发件人:</b> Alex Deucher <alexdeucher@gmail.com><br>
<b>发送时间:</b> 2017年1月14日 0:35:45<br>
<b>收件人:</b> Liu, Monk<br>
<b>抄送:</b> amd-gfx list<br>
<b>主题:</b> Re: [PATCH 3/3] drm/amdgpu:invoke meta-data write around cntx_cntl</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">On Fri, Jan 13, 2017 at 11:28 AM, Alex Deucher <alexdeucher@gmail.com> wrote:<br>
> On Thu, Jan 12, 2017 at 2:41 AM, Monk Liu <Monk.Liu@amd.com> wrote:<br>
>> ce's META-DATA write need prior to cntx_cntrl package<br>
>> and de's should following.<br>
>><br>
>> Change-Id: I2bf436d8a16bae38ce484f846f0b399e16cfe80a<br>
>> Signed-off-by: Monk Liu <Monk.Liu@amd.com><br>
><br>
> Reviewed-by: Alex Deucher <alexander.deucher@amd.com><br>
Actually, I take that back.  A few comments below.<br>
<br>
><br>
>> ---<br>
>>  drivers/gpu/drm/amd/amdgpu/amdgpu.h    | 1 +<br>
>>  drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 3 +++<br>
>>  drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c  | 8 ++++++++<br>
>>  3 files changed, 12 insertions(+)<br>
>><br>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h<br>
>> index 2039da7..b7f7679 100644<br>
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h<br>
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h<br>
>> @@ -953,6 +953,7 @@ struct amdgpu_cs_parser {<br>
>>  #define AMDGPU_PREAMBLE_IB_PRESENT          (1 << 0) /* bit set means command submit involves a preamble IB */<br>
>>  #define AMDGPU_PREAMBLE_IB_PRESENT_FIRST    (1 << 1) /* bit set means preamble IB is first presented in belonging context */<br>
>>  #define AMDGPU_HAVE_CTX_SWITCH              (1 << 2) /* bit set means context switch occured */<br>
>> +#define AMDGPU_VM_DOMAIN                    (1 << 3) /* bit set means in virtual memory context */<br>
>><br>
>>  struct amdgpu_job {<br>
>>         struct amd_sched_job    base;<br>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c<br>
>> index 16308eb..6939822 100644<br>
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c<br>
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c<br>
>> @@ -184,6 +184,9 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,<br>
>>                 if (need_ctx_switch)<br>
>>                         status |= AMDGPU_HAVE_CTX_SWITCH;<br>
>>                 status |= job->preamble_status;<br>
>> +<br>
>> +               if (vm)<br>
>> +                       status |= AMDGPU_VM_DOMAIN;<br>
>>                 amdgpu_ring_emit_cntxcntl(ring, status);<br>
>>         }<br>
>><br>
<br>
This top chunk should be a separate patch.<br>
<br>
<br>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
>> index 3e8cff3..8a5c818 100644<br>
>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
>> @@ -6704,6 +6704,10 @@ static void gfx_v8_ring_emit_cntxcntl(struct amdgpu_ring *ring, uint32_t flags)<br>
>>  {<br>
>>         uint32_t dw2 = 0;<br>
>><br>
>> +       if (amdgpu_sriov_vf(ring->adev))<br>
>> +               gfx_v8_0_ring_emit_ce_meta_init(ring,<br>
>> +                       (flags & AMDGPU_VM_DOMAIN) ? AMDGPU_CSA_VADDR : ring->adev->virt.csa_vmid0_addr);<br>
>> +<br>
>>         dw2 |= 0x80000000; /* set load_enable otherwise this package is just NOPs */<br>
>>         if (flags & AMDGPU_HAVE_CTX_SWITCH) {<br>
>>                 gfx_v8_0_ring_emit_vgt_flush(ring);<br>
>> @@ -6728,6 +6732,10 @@ static void gfx_v8_ring_emit_cntxcntl(struct amdgpu_ring *ring, uint32_t flags)<br>
>>         amdgpu_ring_write(ring, PACKET3(PACKET3_CONTEXT_CONTROL, 1));<br>
>>         amdgpu_ring_write(ring, dw2);<br>
>>         amdgpu_ring_write(ring, 0);<br>
>> +<br>
>> +       if (amdgpu_sriov_vf(ring->adev))<br>
>> +               gfx_v8_0_ring_emit_de_meta_init(ring,<br>
>> +                       (flags & AMDGPU_VM_DOMAIN) ? AMDGPU_CSA_VADDR : ring->adev->virt.csa_vmid0_addr);<br>
>>  }<br>
>><br>
<br>
I think you need to update the emit_frame_size to reflect the larger frame.<br>
<br>
>>  static void gfx_v8_0_set_gfx_eop_interrupt_state(struct amdgpu_device *adev,<br>
>> --<br>
>> 2.7.4<br>
>><br>
>> _______________________________________________<br>
>> amd-gfx mailing list<br>
>> amd-gfx@lists.freedesktop.org<br>
>> <a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
</div>
</span></font>
</body>
</html>