RE: [PATCH] drm/amdgpu/sriov: Set the default value about gds vmid0 size
>-Original Message- >From: Christian König >Sent: Friday, October 12, 2018 3:40 PM >To: Deng, Emily ; amd-gfx@lists.freedesktop.org >Subject: Re: [PATCH] drm/amdgpu/sriov: Set the default value about gds >vmid0 size > >Am 12.10.2018 um 05:21 schrieb Emily Deng: >> For sriov, when first run windows guest, then run linux guest, the gds >> vmid0 size will be reset to 0 by windows guest. So if the value has >> been reset to 0, then set the value to the default value in linux guest. > >Can we just always use the fixed value instead of reading >mmGDS_VMID0_SIZE? > >We really don't want to introduce so much complexity here and another extra >code path for SRIOV. Thanks, will send a patch to fix the value. Best wishes Emily Deng > >Christian. > >> >> Signed-off-by: Emily Deng >> --- >> drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 14 ++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c >> b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c >> index ae86238..d9df3dd 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c >> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c >> @@ -4872,6 +4872,17 @@ static void gfx_v9_0_set_rlc_funcs(struct >amdgpu_device *adev) >> } >> } >> >> +static void gfx_v9_0_set_gds_default(struct amdgpu_device *adev) { >> +switch (adev->asic_type) { >> +case CHIP_VEGA10: >> +adev->gds.mem.total_size = 0x1; >> +break; >> +default: >> +break; >> +} >> +} >> + >> static void gfx_v9_0_set_gds_init(struct amdgpu_device *adev) >> { >> /* init asci gds info */ >> @@ -4879,6 +4890,9 @@ static void gfx_v9_0_set_gds_init(struct >amdgpu_device *adev) >> adev->gds.gws.total_size = 64; >> adev->gds.oa.total_size = 16; >> >> +if (adev->gds.mem.total_size == 0 && amdgpu_sriov_vf(adev)) >> +gfx_v9_0_set_gds_default(adev); >> + >> if (adev->gds.mem.total_size == 64 * 1024) { >> adev->gds.mem.gfx_partition_size = 4096; >> adev->gds.mem.cs_partition_size = 4096; ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH] drm/amdgpu/sriov: Set the default value about gds vmid0 size
On 10/12/2018 03:39 PM, Christian König wrote: Am 12.10.2018 um 05:21 schrieb Emily Deng: For sriov, when first run windows guest, then run linux guest, the gds vmid0 size will be reset to 0 by windows guest. So if the value has been reset to 0, then set the value to the default value in linux guest. Can we just always use the fixed value instead of reading mmGDS_VMID0_SIZE? We really don't want to introduce so much complexity here and another extra code path for SRIOV. Suppose VBIOS may set the size for different SKU so read from the register. We may confirm a fixed or default value for all gfx v9. Jerry Christian. Signed-off-by: Emily Deng --- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 14 ++ 1 file changed, 14 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index ae86238..d9df3dd 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -4872,6 +4872,17 @@ static void gfx_v9_0_set_rlc_funcs(struct amdgpu_device *adev) } } +static void gfx_v9_0_set_gds_default(struct amdgpu_device *adev) +{ + switch (adev->asic_type) { + case CHIP_VEGA10: + adev->gds.mem.total_size = 0x1; + break; + default: + break; + } +} + static void gfx_v9_0_set_gds_init(struct amdgpu_device *adev) { /* init asci gds info */ @@ -4879,6 +4890,9 @@ static void gfx_v9_0_set_gds_init(struct amdgpu_device *adev) adev->gds.gws.total_size = 64; adev->gds.oa.total_size = 16; + if (adev->gds.mem.total_size == 0 && amdgpu_sriov_vf(adev)) + gfx_v9_0_set_gds_default(adev); + if (adev->gds.mem.total_size == 64 * 1024) { adev->gds.mem.gfx_partition_size = 4096; adev->gds.mem.cs_partition_size = 4096; ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH] drm/amdgpu/sriov: Set the default value about gds vmid0 size
Am 12.10.2018 um 05:21 schrieb Emily Deng: For sriov, when first run windows guest, then run linux guest, the gds vmid0 size will be reset to 0 by windows guest. So if the value has been reset to 0, then set the value to the default value in linux guest. Can we just always use the fixed value instead of reading mmGDS_VMID0_SIZE? We really don't want to introduce so much complexity here and another extra code path for SRIOV. Christian. Signed-off-by: Emily Deng --- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 14 ++ 1 file changed, 14 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index ae86238..d9df3dd 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -4872,6 +4872,17 @@ static void gfx_v9_0_set_rlc_funcs(struct amdgpu_device *adev) } } +static void gfx_v9_0_set_gds_default(struct amdgpu_device *adev) +{ + switch (adev->asic_type) { + case CHIP_VEGA10: + adev->gds.mem.total_size = 0x1; + break; + default: + break; + } +} + static void gfx_v9_0_set_gds_init(struct amdgpu_device *adev) { /* init asci gds info */ @@ -4879,6 +4890,9 @@ static void gfx_v9_0_set_gds_init(struct amdgpu_device *adev) adev->gds.gws.total_size = 64; adev->gds.oa.total_size = 16; + if (adev->gds.mem.total_size == 0 && amdgpu_sriov_vf(adev)) + gfx_v9_0_set_gds_default(adev); + if (adev->gds.mem.total_size == 64 * 1024) { adev->gds.mem.gfx_partition_size = 4096; adev->gds.mem.cs_partition_size = 4096; ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
RE: [PATCH] drm/amdgpu/sriov: Set the default value about gds vmid0 size
>-Original Message- >From: Zhang, Jerry >Sent: Friday, October 12, 2018 1:18 PM >To: Deng, Emily ; amd-gfx@lists.freedesktop.org >Subject: Re: [PATCH] drm/amdgpu/sriov: Set the default value about gds >vmid0 size > >On 10/12/2018 11:21 AM, Emily Deng wrote: >> For sriov, when first run windows guest, then run linux guest, the gds >> vmid0 size will be reset to 0 by windows guest. So if the value has >> been reset to 0, then set the value to the default value in linux guest. >> >> Signed-off-by: Emily Deng >> --- >> drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 14 ++ >> 1 file changed, 14 insertions(+) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c >> b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c >> index ae86238..d9df3dd 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c >> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c >> @@ -4872,6 +4872,17 @@ static void gfx_v9_0_set_rlc_funcs(struct >amdgpu_device *adev) >> } >> } >> >> +static void gfx_v9_0_set_gds_default(struct amdgpu_device *adev) { >> +switch (adev->asic_type) { >> +case CHIP_VEGA10: >> +adev->gds.mem.total_size = 0x1; >Do you mean this value is same as the original value from >mmGDS_VMID0_SIZE before reset? >if so, we may provide a default value for recovery, e.g. in the gds.mem >structure. Yes. >Regards, >Jerry >> +break; >> +default: >> +break; >> +} >> +} >> + >> static void gfx_v9_0_set_gds_init(struct amdgpu_device *adev) >> { >> /* init asci gds info */ >> @@ -4879,6 +4890,9 @@ static void gfx_v9_0_set_gds_init(struct >amdgpu_device *adev) >> adev->gds.gws.total_size = 64; >> adev->gds.oa.total_size = 16; >> >> +if (adev->gds.mem.total_size == 0 && amdgpu_sriov_vf(adev)) >> +gfx_v9_0_set_gds_default(adev); >> + >> if (adev->gds.mem.total_size == 64 * 1024) { >> adev->gds.mem.gfx_partition_size = 4096; >> adev->gds.mem.cs_partition_size = 4096; ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
Re: [PATCH] drm/amdgpu/sriov: Set the default value about gds vmid0 size
On 10/12/2018 11:21 AM, Emily Deng wrote: For sriov, when first run windows guest, then run linux guest, the gds vmid0 size will be reset to 0 by windows guest. So if the value has been reset to 0, then set the value to the default value in linux guest. Signed-off-by: Emily Deng --- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 14 ++ 1 file changed, 14 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index ae86238..d9df3dd 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -4872,6 +4872,17 @@ static void gfx_v9_0_set_rlc_funcs(struct amdgpu_device *adev) } } +static void gfx_v9_0_set_gds_default(struct amdgpu_device *adev) +{ + switch (adev->asic_type) { + case CHIP_VEGA10: + adev->gds.mem.total_size = 0x1; Do you mean this value is same as the original value from mmGDS_VMID0_SIZE before reset? if so, we may provide a default value for recovery, e.g. in the gds.mem structure. Regards, Jerry + break; + default: + break; + } +} + static void gfx_v9_0_set_gds_init(struct amdgpu_device *adev) { /* init asci gds info */ @@ -4879,6 +4890,9 @@ static void gfx_v9_0_set_gds_init(struct amdgpu_device *adev) adev->gds.gws.total_size = 64; adev->gds.oa.total_size = 16; + if (adev->gds.mem.total_size == 0 && amdgpu_sriov_vf(adev)) + gfx_v9_0_set_gds_default(adev); + if (adev->gds.mem.total_size == 64 * 1024) { adev->gds.mem.gfx_partition_size = 4096; adev->gds.mem.cs_partition_size = 4096; ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
[PATCH] drm/amdgpu/sriov: Set the default value about gds vmid0 size
For sriov, when first run windows guest, then run linux guest, the gds vmid0 size will be reset to 0 by windows guest. So if the value has been reset to 0, then set the value to the default value in linux guest. Signed-off-by: Emily Deng --- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 14 ++ 1 file changed, 14 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c index ae86238..d9df3dd 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c @@ -4872,6 +4872,17 @@ static void gfx_v9_0_set_rlc_funcs(struct amdgpu_device *adev) } } +static void gfx_v9_0_set_gds_default(struct amdgpu_device *adev) +{ + switch (adev->asic_type) { + case CHIP_VEGA10: + adev->gds.mem.total_size = 0x1; + break; + default: + break; + } +} + static void gfx_v9_0_set_gds_init(struct amdgpu_device *adev) { /* init asci gds info */ @@ -4879,6 +4890,9 @@ static void gfx_v9_0_set_gds_init(struct amdgpu_device *adev) adev->gds.gws.total_size = 64; adev->gds.oa.total_size = 16; + if (adev->gds.mem.total_size == 0 && amdgpu_sriov_vf(adev)) + gfx_v9_0_set_gds_default(adev); + if (adev->gds.mem.total_size == 64 * 1024) { adev->gds.mem.gfx_partition_size = 4096; adev->gds.mem.cs_partition_size = 4096; -- 2.7.4 ___ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx