Why the vram always with WC flag even if the architecture don't support WC memory
Michel Dänzer
michel at daenzer.net
Thu Jan 18 11:19:05 UTC 2018
On 2018-01-18 12:08 PM, Lvzhihong (ReJohn) wrote:
> Hi All,
>
> I have a logical question when create buffer object in the amdgpu
> kernel driver code. My ARM64 architecture don't support WC memory , but
> in the driver , the VRAM BO still set WC flags.
>
> At file: drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
>
> In function amdgpu_bo_do_create ,
>
> it determine the bo->flags by the architectures like below:
>
> if (!drm_arch_can_wc_memory())
> bo->flags &= ~AMDGPU_GEM_CREATE_CPU_GTT_USWC;
>
> but then in the function :amdgpu_ttm_placement_from_domain(bo, domain);
> it still set TTM_PL_FLAG_WC for the VRAM bo:
>
>
>
> if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
> unsigned visible_pfn = adev->mc.visible_vram_size >>
> PAGE_SHIFT;
>
> places[c].fpfn = 0;
> places[c].lpfn = 0;
> places[c].flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED |
> TTM_PL_FLAG_VRAM;
>
> ……
> }
>
> I want to know why vram always with WC flag even if the
> architecture don't support WC memory, And in the architecture which are
> not support WC memory, vram bo with WC flag may cause some unpredicted
> results ?
I think it's fine. Platforms without write-combining should fall back to
normal uncacheable mappings. This is fine for VRAM, because it can't be
cacheable. But for GTT, we want to use cacheable mappings if
write-combining isn't available, because uncacheable mappings would be
much slower.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the amd-gfx
mailing list