<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><br>
</p>
<div class="moz-cite-prefix">On 2019/8/29 上午1:08, Marek Olšák wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAAxE2A5MgKswdeHg1YrDs_G7hCuoZAVFuPyoHoA+DbUjA32eHg@mail.gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div>It can't break an older driver, because there is no older
driver that requires the static allocation.</div>
<div><br>
</div>
<div>Note that closed source drivers don't count, because they
don't need backward compatibility.</div>
</div>
</blockquote>
<p>Yes, I agree, we don't need take care of closed source stack.</p>
<p>But AMDVLK is indeed an open source stack, many fans are using
it, we need keep its compatibility, don't we?</p>
<p>-David<br>
</p>
<blockquote type="cite"
cite="mid:CAAxE2A5MgKswdeHg1YrDs_G7hCuoZAVFuPyoHoA+DbUjA32eHg@mail.gmail.com">
<div dir="ltr">
<div><br>
</div>
<div>Marek<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed, Aug 28, 2019 at 2:44
AM zhoucm1 <<a href="mailto:zhoucm1@amd.com"
moz-do-not-send="true">zhoucm1@amd.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
On 2019/7/23 上午3:08, Christian König wrote:<br>
> Am 22.07.19 um 17:34 schrieb Greathouse, Joseph:<br>
>> Units in the GDS block default to allowing all VMIDs
access to all<br>
>> entries. Disable shader access to the GDS, GWS, and
OA blocks from all<br>
>> compute and gfx VMIDs by default. For compute, HWS
firmware will set<br>
>> up the access bits for the appropriate VMID when a
compute queue<br>
>> requires access to these blocks.<br>
>> The driver will handle enabling access on-demand for
graphics VMIDs.<br>
<br>
gds_switch is depending on job->gds/gws/oa/_base/size.<br>
<br>
"[PATCH] drm/amdgpu: remove static GDS, GWS and OA
allocation", the <br>
default allocations in kernel were removed. If some UMD stacks
don't <br>
pass gds/gws/oa allocation to bo_list, then kernel will not
enable <br>
access of them, that will break previous driver.<br>
<br>
do we need revert "[PATCH] drm/amdgpu: remove static GDS, GWS
and OA <br>
allocation" ?<br>
<br>
-David<br>
<br>
>><br>
>> Leaving VMID0 with full access because otherwise HWS
cannot save or<br>
>> restore values during task switch.<br>
>><br>
>> v2: Fixed code and comment styling.<br>
>><br>
>> Change-Id: I3d768a96935d2ed1dff09b02c995090f4fbfa539<br>
>> Signed-off-by: Joseph Greathouse <<a
href="mailto:Joseph.Greathouse@amd.com" target="_blank"
moz-do-not-send="true">Joseph.Greathouse@amd.com</a>><br>
><br>
> Reviewed-by: Christian König <<a
href="mailto:christian.koenig@amd.com" target="_blank"
moz-do-not-send="true">christian.koenig@amd.com</a>><br>
><br>
>> ---<br>
>> drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 25
++++++++++++++++++-------<br>
>> drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 24
+++++++++++++++++-------<br>
>> drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 24
+++++++++++++++++-------<br>
>> drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 24
+++++++++++++++++-------<br>
>> 4 files changed, 69 insertions(+), 28 deletions(-)<br>
>><br>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c <br>
>> b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c<br>
>> index 73dcb632a3ce..2a9692bc34b4 100644<br>
>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c<br>
>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c<br>
>> @@ -1516,17 +1516,27 @@ static void <br>
>> gfx_v10_0_init_compute_vmid(struct amdgpu_device
*adev)<br>
>> }<br>
>> nv_grbm_select(adev, 0, 0, 0, 0);<br>
>> mutex_unlock(&adev->srbm_mutex);<br>
>> +}<br>
>> - /* Initialize all compute VMIDs to have no
GDS, GWS, or OA<br>
>> - acccess. These should be enabled by FW for
target VMIDs. */<br>
>> - for (i = FIRST_COMPUTE_VMID; i <
LAST_COMPUTE_VMID; i++) {<br>
>> - WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_BASE,
2 * i, 0);<br>
>> - WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_SIZE,
2 * i, 0);<br>
>> - WREG32_SOC15_OFFSET(GC, 0, mmGDS_GWS_VMID0,
i, 0);<br>
>> - WREG32_SOC15_OFFSET(GC, 0, mmGDS_OA_VMID0,
i, 0);<br>
>> +static void gfx_v10_0_init_gds_vmid(struct
amdgpu_device *adev)<br>
>> +{<br>
>> + int vmid;<br>
>> +<br>
>> + /*<br>
>> + * Initialize all compute and user-gfx VMIDs to
have no GDS, <br>
>> GWS, or OA<br>
>> + * access. Compute VMIDs should be enabled by FW
for target VMIDs,<br>
>> + * the driver can enable them for graphics.
VMID0 should maintain<br>
>> + * access so that HWS firmware can save/restore
entries.<br>
>> + */<br>
>> + for (vmid = 1; vmid < 16; vmid++) {<br>
>> + WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_BASE,
2 * vmid, 0);<br>
>> + WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_SIZE,
2 * vmid, 0);<br>
>> + WREG32_SOC15_OFFSET(GC, 0, mmGDS_GWS_VMID0,
vmid, 0);<br>
>> + WREG32_SOC15_OFFSET(GC, 0, mmGDS_OA_VMID0,
vmid, 0);<br>
>> }<br>
>> }<br>
>> +<br>
>> static void gfx_v10_0_tcp_harvest(struct
amdgpu_device *adev)<br>
>> {<br>
>> int i, j, k;<br>
>> @@ -1629,6 +1639,7 @@ static void
gfx_v10_0_constants_init(struct <br>
>> amdgpu_device *adev)<br>
>> mutex_unlock(&adev->srbm_mutex);<br>
>> gfx_v10_0_init_compute_vmid(adev);<br>
>> + gfx_v10_0_init_gds_vmid(adev);<br>
>> }<br>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
<br>
>> b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c<br>
>> index 3f98624772a4..48796b6824cf 100644<br>
>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c<br>
>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c<br>
>> @@ -1877,14 +1877,23 @@ static void
gfx_v7_0_init_compute_vmid(struct <br>
>> amdgpu_device *adev)<br>
>> }<br>
>> cik_srbm_select(adev, 0, 0, 0, 0);<br>
>> mutex_unlock(&adev->srbm_mutex);<br>
>> +}<br>
>> - /* Initialize all compute VMIDs to have no
GDS, GWS, or OA<br>
>> - acccess. These should be enabled by FW for
target VMIDs. */<br>
>> - for (i = FIRST_COMPUTE_VMID; i <
LAST_COMPUTE_VMID; i++) {<br>
>> - WREG32(amdgpu_gds_reg_offset[i].mem_base,
0);<br>
>> - WREG32(amdgpu_gds_reg_offset[i].mem_size,
0);<br>
>> - WREG32(amdgpu_gds_reg_offset[i].gws, 0);<br>
>> - WREG32(amdgpu_gds_reg_offset[i].oa, 0);<br>
>> +static void gfx_v7_0_init_gds_vmid(struct
amdgpu_device *adev)<br>
>> +{<br>
>> + int vmid;<br>
>> +<br>
>> + /*<br>
>> + * Initialize all compute and user-gfx VMIDs to
have no GDS, <br>
>> GWS, or OA<br>
>> + * access. Compute VMIDs should be enabled by FW
for target VMIDs,<br>
>> + * the driver can enable them for graphics.
VMID0 should maintain<br>
>> + * access so that HWS firmware can save/restore
entries.<br>
>> + */<br>
>> + for (vmid = 1; vmid < 16; vmid++) {<br>
>> + WREG32(amdgpu_gds_reg_offset[vmid].mem_base,
0);<br>
>> + WREG32(amdgpu_gds_reg_offset[vmid].mem_size,
0);<br>
>> + WREG32(amdgpu_gds_reg_offset[vmid].gws, 0);<br>
>> + WREG32(amdgpu_gds_reg_offset[vmid].oa, 0);<br>
>> }<br>
>> }<br>
>> @@ -1966,6 +1975,7 @@ static void
gfx_v7_0_constants_init(struct <br>
>> amdgpu_device *adev)<br>
>> mutex_unlock(&adev->srbm_mutex);<br>
>> gfx_v7_0_init_compute_vmid(adev);<br>
>> + gfx_v7_0_init_gds_vmid(adev);<br>
>> WREG32(mmSX_DEBUG_1, 0x20);<br>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
<br>
>> b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
>> index e4028d54f8f7..d2907186bb24 100644<br>
>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c<br>
>> @@ -3702,14 +3702,23 @@ static void
gfx_v8_0_init_compute_vmid(struct <br>
>> amdgpu_device *adev)<br>
>> }<br>
>> vi_srbm_select(adev, 0, 0, 0, 0);<br>
>> mutex_unlock(&adev->srbm_mutex);<br>
>> +}<br>
>> - /* Initialize all compute VMIDs to have no
GDS, GWS, or OA<br>
>> - acccess. These should be enabled by FW for
target VMIDs. */<br>
>> - for (i = FIRST_COMPUTE_VMID; i <
LAST_COMPUTE_VMID; i++) {<br>
>> - WREG32(amdgpu_gds_reg_offset[i].mem_base,
0);<br>
>> - WREG32(amdgpu_gds_reg_offset[i].mem_size,
0);<br>
>> - WREG32(amdgpu_gds_reg_offset[i].gws, 0);<br>
>> - WREG32(amdgpu_gds_reg_offset[i].oa, 0);<br>
>> +static void gfx_v8_0_init_gds_vmid(struct
amdgpu_device *adev)<br>
>> +{<br>
>> + int vmid;<br>
>> +<br>
>> + /*<br>
>> + * Initialize all compute and user-gfx VMIDs to
have no GDS, <br>
>> GWS, or OA<br>
>> + * access. Compute VMIDs should be enabled by FW
for target VMIDs,<br>
>> + * the driver can enable them for graphics.
VMID0 should maintain<br>
>> + * access so that HWS firmware can save/restore
entries.<br>
>> + */<br>
>> + for (vmid = 1; vmid < 16; vmid++) {<br>
>> + WREG32(amdgpu_gds_reg_offset[vmid].mem_base,
0);<br>
>> + WREG32(amdgpu_gds_reg_offset[vmid].mem_size,
0);<br>
>> + WREG32(amdgpu_gds_reg_offset[vmid].gws, 0);<br>
>> + WREG32(amdgpu_gds_reg_offset[vmid].oa, 0);<br>
>> }<br>
>> }<br>
>> @@ -3779,6 +3788,7 @@ static void
gfx_v8_0_constants_init(struct <br>
>> amdgpu_device *adev)<br>
>> mutex_unlock(&adev->srbm_mutex);<br>
>> gfx_v8_0_init_compute_vmid(adev);<br>
>> + gfx_v8_0_init_gds_vmid(adev);<br>
>> mutex_lock(&adev->grbm_idx_mutex);<br>
>> /*<br>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c <br>
>> b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c<br>
>> index 259a35395fec..bd7f431a24d9 100644<br>
>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c<br>
>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c<br>
>> @@ -2025,14 +2025,23 @@ static void
gfx_v9_0_init_compute_vmid(struct <br>
>> amdgpu_device *adev)<br>
>> }<br>
>> soc15_grbm_select(adev, 0, 0, 0, 0);<br>
>> mutex_unlock(&adev->srbm_mutex);<br>
>> +}<br>
>> - /* Initialize all compute VMIDs to have no
GDS, GWS, or OA<br>
>> - acccess. These should be enabled by FW for
target VMIDs. */<br>
>> - for (i = FIRST_COMPUTE_VMID; i <
LAST_COMPUTE_VMID; i++) {<br>
>> - WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_BASE,
2 * i, 0);<br>
>> - WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_SIZE,
2 * i, 0);<br>
>> - WREG32_SOC15_OFFSET(GC, 0, mmGDS_GWS_VMID0,
i, 0);<br>
>> - WREG32_SOC15_OFFSET(GC, 0, mmGDS_OA_VMID0,
i, 0);<br>
>> +static void gfx_v9_0_init_gds_vmid(struct
amdgpu_device *adev)<br>
>> +{<br>
>> + int vmid;<br>
>> +<br>
>> + /*<br>
>> + * Initialize all compute and user-gfx VMIDs to
have no GDS, <br>
>> GWS, or OA<br>
>> + * access. Compute VMIDs should be enabled by FW
for target VMIDs,<br>
>> + * the driver can enable them for graphics.
VMID0 should maintain<br>
>> + * access so that HWS firmware can save/restore
entries.<br>
>> + */<br>
>> + for (vmid = 1; vmid < 16; vmid++) {<br>
>> + WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_BASE,
2 * vmid, 0);<br>
>> + WREG32_SOC15_OFFSET(GC, 0, mmGDS_VMID0_SIZE,
2 * vmid, 0);<br>
>> + WREG32_SOC15_OFFSET(GC, 0, mmGDS_GWS_VMID0,
vmid, 0);<br>
>> + WREG32_SOC15_OFFSET(GC, 0, mmGDS_OA_VMID0,
vmid, 0);<br>
>> }<br>
>> }<br>
>> @@ -2080,6 +2089,7 @@ static void
gfx_v9_0_constants_init(struct <br>
>> amdgpu_device *adev)<br>
>> mutex_unlock(&adev->srbm_mutex);<br>
>> gfx_v9_0_init_compute_vmid(adev);<br>
>> + gfx_v9_0_init_gds_vmid(adev);<br>
>> }<br>
>> static void gfx_v9_0_wait_for_rlc_serdes(struct
amdgpu_device *adev)<br>
><br>
> _______________________________________________<br>
> amd-gfx mailing list<br>
> <a href="mailto:amd-gfx@lists.freedesktop.org"
target="_blank" moz-do-not-send="true">amd-gfx@lists.freedesktop.org</a><br>
> <a
href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx"
rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
_______________________________________________<br>
amd-gfx mailing list<br>
<a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank"
moz-do-not-send="true">amd-gfx@lists.freedesktop.org</a><br>
<a
href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx"
rel="noreferrer" target="_blank" moz-do-not-send="true">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a></blockquote>
</div>
</blockquote>
</body>
</html>