All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Zhang, Jerry (Junwei)" <Jerry.Zhang-5C7GfCeVMHo@public.gmane.org>
To: "Christian König"
	<ckoenig.leichtzumerken-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: Re: [PATCH 09/10] drm/amdgpu: use the AGP aperture for system memory access
Date: Tue, 28 Aug 2018 10:50:29 +0800	[thread overview]
Message-ID: <5B84B875.30705@amd.com> (raw)
In-Reply-To: <20180827165337.1651-9-christian.koenig-5C7GfCeVMHo@public.gmane.org>

On 08/28/2018 12:53 AM, Christian König wrote:
> Start to use the old AGP aperture for system memory access.
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c     | 24 +++++++++++++++++++++
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h     |  1 +
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c |  9 ++++++++
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c     | 21 ++++++++++--------
>   4 files changed, 46 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> index eed5352f3136..54d353951e21 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> @@ -79,6 +79,30 @@ uint64_t amdgpu_gmc_pd_addr(struct amdgpu_bo *bo)
>   	return pd_addr;
>   }
>
> +/**
> + * amdgpu_gmc_agp_addr - return the address in the AGP address space
> + *
> + * @tbo: TTM BO which needs the address, must be in GTT domain
> + *
> + * Tries to figure out how to access the BO through the AGP aperture. Returns
> + * AMDGPU_BO_INVALID_OFFSET if that is not possible.
> + */
> +uint64_t amdgpu_gmc_agp_addr(struct ttm_buffer_object *tbo)
> +{
> +	struct amdgpu_device *adev = amdgpu_ttm_adev(tbo->bdev);
> +	struct ttm_dma_tt *ttm;
> +
> +	if (tbo->num_pages != 1 || !tbo->ttm ||
> +	    tbo->ttm->caching_state == tt_cached)
> +		return AMDGPU_BO_INVALID_OFFSET;
> +
> +	ttm = container_of(tbo->ttm, struct ttm_dma_tt, ttm);
> +	if (ttm->dma_address[0] + PAGE_SIZE >= adev->gmc.agp_size)
> +		return AMDGPU_BO_INVALID_OFFSET;
> +
> +	return adev->gmc.agp_start + ttm->dma_address[0];
> +}
> +
>   /**
>    * amdgpu_gmc_vram_location - try to find VRAM location
>    *
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
> index 163110fe375d..6e8432fd3309 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
> @@ -137,6 +137,7 @@ static inline bool amdgpu_gmc_vram_full_visible(struct amdgpu_gmc *gmc)
>   void amdgpu_gmc_get_pde_for_bo(struct amdgpu_bo *bo, int level,
>   			       uint64_t *addr, uint64_t *flags);
>   uint64_t amdgpu_gmc_pd_addr(struct amdgpu_bo *bo);
> +uint64_t amdgpu_gmc_agp_addr(struct ttm_buffer_object *tbo);
>   void amdgpu_gmc_vram_location(struct amdgpu_device *adev, struct amdgpu_gmc *mc,
>   			      u64 base);
>   void amdgpu_gmc_gart_location(struct amdgpu_device *adev,
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
> index c2539f6821c0..deaea11eb39a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
> @@ -132,6 +132,15 @@ static int amdgpu_gtt_mgr_alloc(struct ttm_mem_type_manager *man,
>   	else
>   		lpfn = adev->gart.num_cpu_pages;
>
> +	if (fpfn == 0 && lpfn == adev->gart.num_cpu_pages) {
> +		uint64_t addr = amdgpu_gmc_agp_addr(tbo);
> +
> +		if (addr != AMDGPU_BO_INVALID_OFFSET) {
> +			mem->start = addr >> PAGE_SHIFT;
> +			return 0;
> +		}
> +	}
> +
>   	mode = DRM_MM_INSERT_BEST;
>   	if (place && place->flags & TTM_PL_FLAG_TOPDOWN)
>   		mode = DRM_MM_INSERT_HIGH;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index d9f3201c9e5c..281611f6bcd4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1103,15 +1103,18 @@ int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo)
>   	if (unlikely(r))
>   		return r;
>
> -	/* compute PTE flags for this buffer object */
> -	flags = amdgpu_ttm_tt_pte_flags(adev, bo->ttm, &tmp);
> -
> -	/* Bind pages */
> -	gtt->offset = ((u64)tmp.start << PAGE_SHIFT) - adev->gmc.gart_start;
> -	r = amdgpu_ttm_gart_bind(adev, bo, flags);
> -	if (unlikely(r)) {
> -		ttm_bo_mem_put(bo, &tmp);
> -		return r;
> +	if (amdgpu_gtt_mgr_has_gart_addr(&tmp)) {
> +		/* compute PTE flags for this buffer object */
> +		flags = amdgpu_ttm_tt_pte_flags(adev, bo->ttm, &tmp);
> +
> +		/* Bind pages */
> +		gtt->offset = ((u64)tmp.start << PAGE_SHIFT) -
> +			adev->gmc.gart_start;
> +		r = amdgpu_ttm_gart_bind(adev, bo, flags);
> +		if (unlikely(r)) {
> +			ttm_bo_mem_put(bo, &tmp);
> +			return r;
> +		}
>   	}
>
>   	ttm_bo_mem_put(bo, &bo->mem);
>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

  parent reply	other threads:[~2018-08-28  2:50 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-27 16:53 [PATCH 01/10] drm/amdgpu: use only the lower address space on GMC9 Christian König
     [not found] ` <20180827165337.1651-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-08-27 16:53   ` [PATCH 02/10] drm/amdgpu: move amdgpu_device_(vram|gtt)_location Christian König
     [not found]     ` <20180827165337.1651-2-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-08-27 18:59       ` Alex Deucher
     [not found]         ` <CADnq5_OPp_EgorzVizo4LpcdJj38daZbRrF0aSRg8emouKLzEg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-08-28  1:56           ` Zhang, Jerry (Junwei)
2018-08-27 16:53   ` [PATCH 03/10] drm/amdgpu: fix amdgpu_gmc_gart_location a little bit Christian König
     [not found]     ` <20180827165337.1651-3-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-08-27 19:03       ` Alex Deucher
     [not found]         ` <CADnq5_OmwbjRufiL30T9EZOrhu4suRDy417xSy=BfdGmb94XJA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-08-29  9:45           ` Christian König
2018-08-28  1:57       ` Zhang, Jerry (Junwei)
2018-08-27 16:53   ` [PATCH 04/10] drm/amdgpu: use the smaller hole for GART Christian König
     [not found]     ` <20180827165337.1651-4-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-08-27 19:05       ` Alex Deucher
     [not found]         ` <CADnq5_OB2HV16p4_idyqowKDTZxZkJF5GmKGnHG5+DPm2=4qEQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-08-28  1:57           ` Zhang, Jerry (Junwei)
2018-08-27 16:53   ` [PATCH 05/10] drm/amdgpu: put GART away from VRAM Christian König
     [not found]     ` <20180827165337.1651-5-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-08-28  2:01       ` Zhang, Jerry (Junwei)
2018-08-27 16:53   ` [PATCH 06/10] drm/amdgpu: add amdgpu_gmc_agp_location Christian König
     [not found]     ` <20180827165337.1651-6-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-08-27 18:50       ` Felix Kuehling
     [not found]         ` <995a274e-8478-79ac-bed3-61fe6655a393-5C7GfCeVMHo@public.gmane.org>
2018-08-28 11:57           ` Christian König
2018-08-28  2:35       ` Zhang, Jerry (Junwei)
2018-08-27 16:53   ` [PATCH 07/10] drm/amdgpu: stop using gart_start as offset for the GTT domain Christian König
     [not found]     ` <20180827165337.1651-7-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-08-27 19:07       ` Alex Deucher
     [not found]         ` <CADnq5_M-ppsYV3dsUZEeHaLKyVOkVU1LsWJyyyWve0_eMD-7qw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-08-28  2:10           ` Zhang, Jerry (Junwei)
2018-08-27 16:53   ` [PATCH 08/10] drm/amdgpu: distinct between allocated GART space and GMC addr Christian König
     [not found]     ` <20180827165337.1651-8-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-08-27 18:57       ` Felix Kuehling
2018-08-28  2:16       ` Zhang, Jerry (Junwei)
2018-08-27 16:53   ` [PATCH 09/10] drm/amdgpu: use the AGP aperture for system memory access Christian König
     [not found]     ` <20180827165337.1651-9-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-08-28  2:50       ` Zhang, Jerry (Junwei) [this message]
2018-08-27 16:53   ` [PATCH 10/10] drm/amdgpu: enable AGP aperture for GMC9 Christian König
     [not found]     ` <20180827165337.1651-10-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-08-28  2:52       ` Zhang, Jerry (Junwei)
     [not found]         ` <5B84B901.5010709-5C7GfCeVMHo@public.gmane.org>
2018-08-28 11:55           ` Christian König
2018-08-27 18:58   ` [PATCH 01/10] drm/amdgpu: use only the lower address space on GMC9 Alex Deucher
2018-08-27 19:03   ` Felix Kuehling
     [not found]     ` <e5ef79ee-caef-9df4-aadc-bbd15b5eb9b3-5C7GfCeVMHo@public.gmane.org>
2018-08-28  4:21       ` zhoucm1
     [not found]         ` <75818784-27b6-21bc-274f-f29b0dd479e0-5C7GfCeVMHo@public.gmane.org>
2018-08-28  6:53           ` Christian König
     [not found]             ` <e21d83cd-fee8-fd99-ac02-39b5f29df92e-5C7GfCeVMHo@public.gmane.org>
2018-08-28 18:08               ` Felix Kuehling
2018-08-28  5:31       ` Xiao, Jack
     [not found]         ` <BYAPR12MB2662148F853F560ED08FDBCFEF0A0-ZGDeBxoHBPm6habpV69vmAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2018-08-28  6:45           ` Christian König
     [not found]             ` <5812c9d9-00bb-9065-fefe-49d661ab9439-5C7GfCeVMHo@public.gmane.org>
2018-08-28  7:06               ` Xiao, Jack
     [not found]                 ` <DM6PR12MB2666F87E35885284AB6B29A7EF0A0-lmeGfMZKVrEbyIpG/Z/xuAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2018-08-28 11:41                   ` Christian König
     [not found]                     ` <b845f750-d6a7-c8ae-5235-7d961a3db428-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-08-28 18:12                       ` Felix Kuehling
     [not found]                         ` <491b519e-6f02-1c4c-3cc8-c0ed147a82cd-5C7GfCeVMHo@public.gmane.org>
2018-08-29  8:47                           ` Christian König
     [not found]                             ` <a2680c89-493a-2df8-f767-5d0f25e9f7ef-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-08-30  3:48                               ` Xiao, Jack
     [not found]                                 ` <BYAPR12MB2662C7816E74F1C90E2E73BAEF080-ZGDeBxoHBPm6habpV69vmAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2018-08-30  6:40                                   ` Christian König
2018-08-29  6:30                       ` Xiao, Jack
2018-08-28  1:56   ` Zhang, Jerry (Junwei)
     [not found]     ` <5B84ABBC.40005-5C7GfCeVMHo@public.gmane.org>
2018-08-28  2:09       ` Zhang, Jerry (Junwei)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5B84B875.30705@amd.com \
    --to=jerry.zhang-5c7gfcevmho@public.gmane.org \
    --cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=ckoenig.leichtzumerken-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.