[PATCH] drm/amdgpu: fix the page fault of raven2

Christian König ckoenig.leichtzumerken at gmail.com
Mon Sep 24 08:49:02 UTC 2018


Am 24.09.2018 um 04:07 schrieb Huang Rui:
> While the apg_end address is 0xffffffff, if add 1 with it, the value will be
> overflow and roll back to 0. So when 0 is written to
> mmMC_VM_SYSTEM_APERTURE_HIGH_ADDR, the system aperture is actually disabled. And
> so any access to vram will trigger a page fault.
>
> Raven2's HW issue only need increase the vram end address, and needn't do it on
> the agp.
>
> Signed-off-by: Huang Rui <ray.huang at amd.com>
> Acked-by: Alex Deucher <alexander.deucher at amd.com>
> Cc: Christian König <christian.koenig at amd.com>
> Cc: Marek Olšák <marek.olsak at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c | 3 ++-
>   drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c  | 3 ++-
>   2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
> index 65f58eb..ceb7847 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
> @@ -82,7 +82,8 @@ static void gfxhub_v1_0_init_system_aperture_regs(struct amdgpu_device *adev)
>   		 * to get rid of the VM fault and hardware hang.
>   		 */
>   		WREG32_SOC15(GC, 0, mmMC_VM_SYSTEM_APERTURE_HIGH_ADDR,
> -			     (max(adev->gmc.vram_end, adev->gmc.agp_end) >> 18) + 0x1);
> +			     max((adev->gmc.vram_end >> 18) + 0x1,
> +				 adev->gmc.agp_end >> 18));
>   	else
>   		WREG32_SOC15(GC, 0, mmMC_VM_SYSTEM_APERTURE_HIGH_ADDR,
>   			     max(adev->gmc.vram_end, adev->gmc.agp_end) >> 18);
> diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> index 80698b5..14649f8 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
> @@ -100,7 +100,8 @@ static void mmhub_v1_0_init_system_aperture_regs(struct amdgpu_device *adev)
>   		 * to get rid of the VM fault and hardware hang.
>   		 */
>   		WREG32_SOC15(MMHUB, 0, mmMC_VM_SYSTEM_APERTURE_HIGH_ADDR,
> -			     (max(adev->gmc.vram_end, adev->gmc.agp_end) >> 18) + 0x1);
> +			     max((adev->gmc.vram_end >> 18) + 0x1,
> +				 adev->gmc.agp_end >> 18));
>   	else
>   		WREG32_SOC15(MMHUB, 0, mmMC_VM_SYSTEM_APERTURE_HIGH_ADDR,
>   			     max(adev->gmc.vram_end, adev->gmc.agp_end) >> 18);
>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20180924/99d760d3/attachment.html>


More information about the amd-gfx mailing list