[PATCH] drm/amdgpu: Use uncached ioremap() for LoongArch
Christian König
christian.koenig at amd.com
Sun Mar 5 16:40:23 UTC 2023
Am 05.03.23 um 06:21 schrieb Huacai Chen:
> LoongArch maintains cache coherency in hardware, but its WUC attribute
> (Weak-ordered UnCached, which is similar to WC) is out of the scope of
> cache coherency machanism. This means WUC can only used for write-only
> memory regions. So use uncached ioremap() for LoongArch in the amdgpu
> driver.
Well NAK. This is leaking platform dependencies into the driver code.
When you have a limitation that ioremap_wc() can't guarantee read/write
ordering then that's pretty clearly a platform bug and you would need to
apply this workaround to all drivers using ioremap_wc() which isn't
really feasible.
The x86 cache dependencies is because the GPU can also be part of the
CPU in which case PCIe is not used to access the aperture base.
Regards,
Christian.
>
> Signed-off-by: Huacai Chen <chenhuacai at loongson.cn>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index c5ef7f7bdc15..c6888a58819a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1750,8 +1750,13 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>
> else
> #endif
> +#ifdef CONFIG_LOONGARCH
> + adev->mman.aper_base_kaddr = ioremap(adev->gmc.aper_base,
> + adev->gmc.visible_vram_size);
> +#else
> adev->mman.aper_base_kaddr = ioremap_wc(adev->gmc.aper_base,
> adev->gmc.visible_vram_size);
> +#endif
> #endif
>
> /*
More information about the amd-gfx
mailing list