lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <560baf50-1bc5-473c-9889-59f7d625ddd9@amd.com>
Date: Mon, 9 Jun 2025 08:46:22 -0400
From: Felix Kuehling <felix.kuehling@....com>
To: francisco_flynn <francisco_flynn@...mail.com>
Cc: alexander.deucher@....com, christian.koenig@....com, airlied@...il.com,
 simona@...ll.ch, amd-gfx@...ts.freedesktop.org,
 dri-devel@...ts.freedesktop.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] drm/amdkfd: register HMM dev memory to DMA-able range
 first


On 2025-06-09 5:36, francisco_flynn wrote:
> HMM device memory is allocated at the top of
> iomem_resource, when iomem_resource is larger than
> GPU device's dma mask, after devm_memremap_pages,
> max_pfn will also be update and exceed device's
> dma mask, when there are multiple card on system
> need to be init, ttm_device_init would be called
> with use_dma32=true, and this is not necessary at
> all. let's request dev memory region at DMA-able
> range first.

That doesn't make sense to me. The addresses allocated here are not DMA addresses. They cannot be accessed by the GPU via DMA. They are purely fictional addresses for the purposes of creating struct pages for device-private memory. There should be no need to limit them by the GPU's DMA mask.

Regards,
  Felix


>
> Signed-off-by: francisco_flynn <francisco_flynn@...mail.com>
> ---
>  drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
> index 79251f22b702..3856b9fd2a70 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
> @@ -1020,6 +1020,7 @@ int kgd2kfd_init_zone_device(struct amdgpu_device *adev)
>  	struct amdgpu_kfd_dev *kfddev = &adev->kfd;
>  	struct dev_pagemap *pgmap;
>  	struct resource *res = NULL;
> +	struct resource temp_res = iomem_resource;
>  	unsigned long size;
>  	void *r;
>  
> @@ -1042,7 +1043,10 @@ int kgd2kfd_init_zone_device(struct amdgpu_device *adev)
>  		pgmap->range.end = adev->gmc.aper_base + adev->gmc.aper_size - 1;
>  		pgmap->type = MEMORY_DEVICE_COHERENT;
>  	} else {
> -		res = devm_request_free_mem_region(adev->dev, &iomem_resource, size);
> +		temp_res.end = dma_get_mask(adev->dev);
> +		res = devm_request_free_mem_region(adev->dev, &temp_res, size);
> +		if (IS_ERR(res))
> +			res = devm_request_free_mem_region(adev->dev, &iomem_resource, size);
>  		if (IS_ERR(res))
>  			return PTR_ERR(res);
>  		pgmap->range.start = res->start;

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ