public inbox for amd-gfx@lists.freedesktop.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox