[PATCH] drm/amdgpu: Fix minmax error

Christian König christian.koenig at amd.com
Fri Nov 25 07:45:07 UTC 2022



Am 24.11.22 um 22:19 schrieb Luben Tuikov:
> Fix minmax compilation error by using min_t()/max_t(), of the assignment type.
>
> Cc: James Zhu <James.Zhu at amd.com>
> Cc: Felix Kuehling <Felix.Kuehling at amd.com>
> Fixes: 58170a7a002ad6 ("drm/amdgpu: fix stall on CPU when allocate large system memory")
> Signed-off-by: Luben Tuikov <luben.tuikov at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c | 10 +++++++---
>   1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c
> index 8a2e5716d8dba2..d22d14b0ef0c84 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.c
> @@ -191,14 +191,18 @@ int amdgpu_hmm_range_get_pages(struct mmu_interval_notifier *notifier,
>   	hmm_range->dev_private_owner = owner;
>   
>   	do {
> -		hmm_range->end = min(hmm_range->start + MAX_WALK_BYTE, end);
> +		hmm_range->end = min_t(typeof(hmm_range->end),
> +				       hmm_range->start + MAX_WALK_BYTE,
> +				       end);

Since end is a local variable I would strongly prefer to just have it 
use the correct type for it.

Otherwise we might end up using something which doesn't work on all 
architectures.

Regards,
Christian.

>   
>   		pr_debug("hmm range: start = 0x%lx, end = 0x%lx",
>   			hmm_range->start, hmm_range->end);
>   
>   		/* Assuming 512MB takes maxmium 1 second to fault page address */
> -		timeout = max((hmm_range->end - hmm_range->start) >> 29, 1ULL) *
> -			HMM_RANGE_DEFAULT_TIMEOUT;
> +		timeout = max_t(typeof(timeout),
> +				(hmm_range->end - hmm_range->start) >> 29,
> +				1ULL);
> +		timeout *= HMM_RANGE_DEFAULT_TIMEOUT;
>   		timeout = jiffies + msecs_to_jiffies(timeout);
>   
>   retry:
>
> base-commit: d5e8f4912061ad2e577b4909556e1364e2c2018e
> prerequisite-patch-id: 6024d0c36cae3e4a995a8fcf787b91f511a37486



More information about the amd-gfx mailing list