All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/amdgpu: set preferred_domain independent of fallback handling
@ 2018-04-17  8:04 Chunming Zhou
       [not found] ` <20180417080406.24119-1-david1.zhou-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Chunming Zhou @ 2018-04-17  8:04 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Chunming Zhou

When GEM needs to fallback to GTT for VRAM BOs we still want the
preferred domain to be untouched so that the BO has a cance to move back
to VRAM in the future.

Change-Id: I8cfdf3f30532f7e5d80b8e4266b7800211de2f0b
Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    |  1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 15 +++++++++------
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.h |  1 +
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index 1200c5ba37da..ff606ce88837 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -62,6 +62,7 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size,
 	bp.byte_align = alignment;
 	bp.type = type;
 	bp.resv = resv;
+	bp.preferred_domain = initial_domain;
 retry:
 	bp.flags = flags;
 	bp.domain = initial_domain;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index cac65e32a0b9..9258f0694922 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -360,6 +360,7 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
 	};
 	struct amdgpu_bo *bo;
 	unsigned long page_align, size = bp->size;
+	u32 preferred_domains;
 	size_t acc_size;
 	int r;
 
@@ -380,12 +381,14 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
 	drm_gem_private_object_init(adev->ddev, &bo->gem_base, size);
 	INIT_LIST_HEAD(&bo->shadow_list);
 	INIT_LIST_HEAD(&bo->va);
-	bo->preferred_domains = bp->domain & (AMDGPU_GEM_DOMAIN_VRAM |
-					      AMDGPU_GEM_DOMAIN_GTT |
-					      AMDGPU_GEM_DOMAIN_CPU |
-					      AMDGPU_GEM_DOMAIN_GDS |
-					      AMDGPU_GEM_DOMAIN_GWS |
-					      AMDGPU_GEM_DOMAIN_OA);
+	preferred_domains = bp->preferred_domain ? bp->preferred_domain :
+		bp->domain;
+	bo->preferred_domains = preferred_domains & (AMDGPU_GEM_DOMAIN_VRAM |
+						     AMDGPU_GEM_DOMAIN_GTT |
+						     AMDGPU_GEM_DOMAIN_CPU |
+						     AMDGPU_GEM_DOMAIN_GDS |
+						     AMDGPU_GEM_DOMAIN_GWS |
+						     AMDGPU_GEM_DOMAIN_OA);
 	bo->allowed_domains = bo->preferred_domains;
 	if (bp->type != ttm_bo_type_kernel &&
 	    bo->allowed_domains == AMDGPU_GEM_DOMAIN_VRAM)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
index e9a21d991e77..540e03fa159f 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
@@ -37,6 +37,7 @@ struct amdgpu_bo_param {
 	unsigned long			size;
 	int				byte_align;
 	u32				domain;
+	u32				preferred_domain;
 	u64				flags;
 	enum ttm_bo_type		type;
 	struct reservation_object	*resv;
-- 
2.14.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] drm/amdgpu: set preferred_domain independent of fallback handling
       [not found] ` <20180417080406.24119-1-david1.zhou-5C7GfCeVMHo@public.gmane.org>
@ 2018-04-17 10:23   ` Christian König
  0 siblings, 0 replies; 2+ messages in thread
From: Christian König @ 2018-04-17 10:23 UTC (permalink / raw)
  To: Chunming Zhou, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

Am 17.04.2018 um 10:04 schrieb Chunming Zhou:
> When GEM needs to fallback to GTT for VRAM BOs we still want the
> preferred domain to be untouched so that the BO has a cance to move back
> to VRAM in the future.
>
> Change-Id: I8cfdf3f30532f7e5d80b8e4266b7800211de2f0b
> Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    |  1 +
>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 15 +++++++++------
>   drivers/gpu/drm/amd/amdgpu/amdgpu_object.h |  1 +
>   3 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> index 1200c5ba37da..ff606ce88837 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
> @@ -62,6 +62,7 @@ int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size,
>   	bp.byte_align = alignment;
>   	bp.type = type;
>   	bp.resv = resv;
> +	bp.preferred_domain = initial_domain;
>   retry:
>   	bp.flags = flags;
>   	bp.domain = initial_domain;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index cac65e32a0b9..9258f0694922 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -360,6 +360,7 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
>   	};
>   	struct amdgpu_bo *bo;
>   	unsigned long page_align, size = bp->size;
> +	u32 preferred_domains;
>   	size_t acc_size;
>   	int r;
>   
> @@ -380,12 +381,14 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev,
>   	drm_gem_private_object_init(adev->ddev, &bo->gem_base, size);
>   	INIT_LIST_HEAD(&bo->shadow_list);
>   	INIT_LIST_HEAD(&bo->va);
> -	bo->preferred_domains = bp->domain & (AMDGPU_GEM_DOMAIN_VRAM |
> -					      AMDGPU_GEM_DOMAIN_GTT |
> -					      AMDGPU_GEM_DOMAIN_CPU |
> -					      AMDGPU_GEM_DOMAIN_GDS |
> -					      AMDGPU_GEM_DOMAIN_GWS |
> -					      AMDGPU_GEM_DOMAIN_OA);
> +	preferred_domains = bp->preferred_domain ? bp->preferred_domain :
> +		bp->domain;
> +	bo->preferred_domains = preferred_domains & (AMDGPU_GEM_DOMAIN_VRAM |
> +						     AMDGPU_GEM_DOMAIN_GTT |
> +						     AMDGPU_GEM_DOMAIN_CPU |
> +						     AMDGPU_GEM_DOMAIN_GDS |
> +						     AMDGPU_GEM_DOMAIN_GWS |
> +						     AMDGPU_GEM_DOMAIN_OA);

While at it please drop this masking. We should either return an error 
when unsupported flags are set or just take the value as it is.

Masking it without further processing actually sounds dangerous to me.

With that fixed the patch is Reviewed-by: Christian König 
<christian.koenig@amd.com>.

Regards,
Christian.

>   	bo->allowed_domains = bo->preferred_domains;
>   	if (bp->type != ttm_bo_type_kernel &&
>   	    bo->allowed_domains == AMDGPU_GEM_DOMAIN_VRAM)
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
> index e9a21d991e77..540e03fa159f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
> @@ -37,6 +37,7 @@ struct amdgpu_bo_param {
>   	unsigned long			size;
>   	int				byte_align;
>   	u32				domain;
> +	u32				preferred_domain;
>   	u64				flags;
>   	enum ttm_bo_type		type;
>   	struct reservation_object	*resv;

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-04-17 10:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-17  8:04 [PATCH] drm/amdgpu: set preferred_domain independent of fallback handling Chunming Zhou
     [not found] ` <20180417080406.24119-1-david1.zhou-5C7GfCeVMHo@public.gmane.org>
2018-04-17 10:23   ` Christian König

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.