[PATCH] drm/amdgpu: add coreboot workaround for KV/KB
Christian König
ckoenig.leichtzumerken at gmail.com
Fri Jan 17 18:46:59 UTC 2020
Am 17.01.20 um 18:07 schrieb Felix Kuehling:
> On 2020-01-17 3:17 a.m., Christian König wrote:
>> Am 17.01.20 um 03:01 schrieb Felix Kuehling:
>>> On 2020-01-16 8:09, Christian König wrote:
>>>> Coreboot seems to have a problem correctly setting up access to the
>>>> stolen VRAM
>>>> on KV/KB. Use the direct access only when necessary.
>>>
>>> I'm not sure what you mean by "necessary".
>>
>> Necessary for better performance.
>
> Right. So your patch description says that sometimes better
> performance is not necessary.
Well what I want to say is that it is not necessary for better
performance. If FB is small enough we can use the BAR as well.
> The criteria is based on the size of the BAR, which doesn't really
> have anything to do with performance.
Why? Most of the performance gain comes from not shuffling around VRAM
buffers for CPU access any more.
Additional to that there is a reduction in latency when accessing the
VRAM, but that usually doesn't matter for performance.
>
>
>>
>>>
>>>>
>>>> Signed-off-by: Christian König <christian.koenig at amd.com>
>>>> ---
>>>> drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 3 ++-
>>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
>>>> b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
>>>> index 19d5b133e1d7..9da9596a3638 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
>>>> @@ -381,7 +381,8 @@ static int gmc_v7_0_mc_init(struct
>>>> amdgpu_device *adev)
>>>> adev->gmc.aper_size = pci_resource_len(adev->pdev, 0);
>>>> #ifdef CONFIG_X86_64
>>>> - if (adev->flags & AMD_IS_APU) {
>>>> + if (adev->flags & AMD_IS_APU &&
>>>> + adev->gmc.real_vram_size > adev->gmc.aper_size) {
>>>
>>> CPU access to the whole VRAM isn't really necessary. I thought the
>>> main motivation for accessing FB directly on APUs was better
>>> performance. You're disabling that optimization on all APUs where
>>> the FB is smaller than the aperture size.
>>
>> Correct, yes. For some reason coreboot seems to explicitly setup the
>> memory used for the FB as write-protected.
>>
>> The GPU can still read/write it normally cause it ignores that
>> protection, but the CPU can't change the FB memory any more with that
>> setup.
>
> Can we test whether writing to FB works and make the decision based on
> that?
Thought about that as well. But it is complicated to implement and we
would need to test the whole FB to be sure and that could take a while.
Christian.
>
> Thanks,
> Felix
>
>>
>> No idea why they do this, most likely just an over conservative
>> protection of a reserved area of memory.
>>
>> Regards,
>> Christian.
>>
>>>
>>> Regards,
>>> Felix
>>>
>>>
>>>> adev->gmc.aper_base = ((u64)RREG32(mmMC_VM_FB_OFFSET)) <<
>>>> 22;
>>>> adev->gmc.aper_size = adev->gmc.real_vram_size;
>>>> }
>>> _______________________________________________
>>> amd-gfx mailing list
>>> amd-gfx at lists.freedesktop.org
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7Cfelix.kuehling%40amd.com%7Cd59490f0e7f547d3a3fc08d79b25bed4%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637148458759658617&sdata=To9fsEHvQ4dokZKSwTZQ7V8LIREA%2Bj58ouvaUVtHfpI%3D&reserved=0
>>>
>>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
More information about the amd-gfx
mailing list