[PATCH 1/2] drm/amdgpu: don't clean the framebuffer for VF
Ding, Pixel
Pixel.Ding at amd.com
Tue Feb 7 01:37:38 UTC 2017
Hi Christian,
I think you mean loading KMS multiple times by “reuse”. At every time loading KMS, guest driver tells the host to clear FB during early init. I can’t see a case that fb_probe is invoked out of loading KMS, is there?
Anyway I understand we don’t want to have many SRIOV conditional code paths. If I remove memset_io here and add GPU clear flag, should it be common logic or specific for VF?
—
Sincerely Yours,
Pixel
On 06/02/2017, 5:17 PM, "Koenig, Christian" <Christian.Koenig at amd.com> wrote:
>Hi Pixel,
>
>you don't seem to understand the reason for the clear here.
>
>It is completely irrelevant that the host is clearing the memory for the
>guest, the problem is that the guest reuse the memory it got assigned
>from the host multiple times.
>
>IIRC we added this because you could see leftovers of the slash screen
>in the text console when the resolution wasn't a multiple of the
>character height.
>
>Regards,
>Christian.
>
>Am 06.02.2017 um 10:09 schrieb Ding, Pixel:
>> Hi Christian,
>>
>> The underlying host driver clears VF’s framebuffer when guest driver shake hands with it, that is done before guest driver init. I think it’s unnecessary to clear FB again even with GPU for VF.
>>
>> —
>> Sincerely Yours,
>> Pixel
>>
>>
>>
>>
>>
>> On 06/02/2017, 4:49 PM, "Koenig, Christian" <Christian.Koenig at amd.com> wrote:
>>
>>> Am 06.02.2017 um 07:24 schrieb Pixel Ding:
>>>> The SRIOV host driver cleans framebuffer for each VF, guest driver
>>>> needn't this action which costs much time on some virtualization
>>>> platform, otherwise it might get timeout to initialize.
>>>>
>>>> Signed-off-by: Pixel Ding <Pixel.Ding at amd.com>
>>>> ---
>>>> drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 4 +++-
>>>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
>>>> index 1e735c4..f1eb4f5 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
>>>> @@ -242,7 +242,9 @@ static int amdgpufb_create(struct drm_fb_helper *helper,
>>>> /* setup helper */
>>>> rfbdev->helper.fb = fb;
>>>>
>>>> - memset_io(abo->kptr, 0x0, amdgpu_bo_size(abo));
>>>> + if (!amdgpu_sriov_vf(adev)) {
>>>> + memset_io(abo->kptr, 0x0, amdgpu_bo_size(abo));
>>>> + }
>>> Nit pick only, but coding style says to not use "{" "}" in an if without
>>> else and only a single line of code.
>>>
>>> Additional to that I'm not sure if that's a good idea. The memory
>>> allocated here might be already be used and so we need to clear it no
>>> matter where it came from.
>>>
>>> It's probably easier to just set the AMDGPU_GEM_CREATE_VRAM_CLEARED in
>>> the call to amdgpu_gem_object_create(). This makes the GPU clear the
>>> memory before the first CPU access to it.
>>>
>>> Regards,
>>> Christian.
>>>
>>>>
>>>> strcpy(info->fix.id, "amdgpudrmfb");
>>>>
>>>
>
More information about the amd-gfx
mailing list