All of lore.kernel.org
 help / color / mirror / Atom feed
From: Edward O'Callaghan <funfunctor-dczkZgxz+BNUPWh3PAxdjQ@public.gmane.org>
To: "Christian König"
	<deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>,
	amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: Re: [PATCH 1/5] drm/amdgpu: add AMDGPU_GEM_CREATE_VRAM_LINEAR flag v2
Date: Mon, 29 Aug 2016 21:02:02 +1000	[thread overview]
Message-ID: <754ca3cd-657f-a579-c789-6923e1579778@folklore1984.net> (raw)
In-Reply-To: <1472462424-3052-2-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>


[-- Attachment #1.1.1: Type: text/plain, Size: 16257 bytes --]



On 08/29/2016 07:20 PM, Christian König wrote:
> From: Christian König <christian.koenig-5C7GfCeVMHo@public.gmane.org>
> 
> Add a flag noting that a BO must be created using linear VRAM
> and set this flag on all in kernel users where appropriate.
> 
> Hopefully I haven't missed anything.
> 
> v2: add it in a few more places, fix CPU mapping.
> 
> Signed-off-by: Christian König <christian.koenig-5C7GfCeVMHo@public.gmane.org>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h        |  1 +
>  drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c    |  6 ++++--
>  drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c     | 31 ++++++++++++++++++++++++++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  3 ++-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c     |  3 ++-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c   |  3 ++-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 12 ++++++++++--
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    |  3 ++-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c    | 10 ++++++++--
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c    |  9 +++++++--
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c     |  6 ++++--
>  drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c      |  9 ++++++---
>  drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c      |  6 ++++--
>  include/uapi/drm/amdgpu_drm.h              |  2 ++
>  14 files changed, 85 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 545789f..b2d95a9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -2499,6 +2499,7 @@ static inline void amdgpu_acpi_fini(struct amdgpu_device *adev) { }
>  struct amdgpu_bo_va_mapping *
>  amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser,
>  		       uint64_t addr, struct amdgpu_bo **bo);
> +int amdgpu_cs_make_bos_linear(struct amdgpu_cs_parser *parser);
>  
>  #if defined(CONFIG_DRM_AMD_DAL)
>  int amdgpu_dm_display_resume(struct amdgpu_device *adev );
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> index 040993c..c2dfcd3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> @@ -146,7 +146,8 @@ static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device,
>  	switch(type) {
>  	case CGS_GPU_MEM_TYPE__VISIBLE_CONTIG_FB:
>  	case CGS_GPU_MEM_TYPE__VISIBLE_FB:
> -		flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
> +		flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +			AMDGPU_GEM_CREATE_VRAM_LINEAR;
>  		domain = AMDGPU_GEM_DOMAIN_VRAM;
>  		if (max_offset > adev->mc.real_vram_size)
>  			return -EINVAL;
> @@ -157,7 +158,8 @@ static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device,
>  		break;
>  	case CGS_GPU_MEM_TYPE__INVISIBLE_CONTIG_FB:
>  	case CGS_GPU_MEM_TYPE__INVISIBLE_FB:
> -		flags = AMDGPU_GEM_CREATE_NO_CPU_ACCESS;
> +		flags = AMDGPU_GEM_CREATE_NO_CPU_ACCESS |
> +			AMDGPU_GEM_CREATE_VRAM_LINEAR;
>  		domain = AMDGPU_GEM_DOMAIN_VRAM;
>  		if (adev->mc.visible_vram_size < adev->mc.real_vram_size) {
>  			place.fpfn =
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> index b0e11ca..108408b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
> @@ -1097,3 +1097,34 @@ amdgpu_cs_find_mapping(struct amdgpu_cs_parser *parser,
>  
>  	return NULL;
>  }
> +
> +/**
> + * amdgpu_cs_make_bos_linear - mark all BOs in this CS as linear
> + *
> + * @parser: command submission parser context
> + *
> + * Helper for UVD/VCE VM emulation, mark all BOs in this CS as linear.
> + */
> +int amdgpu_cs_make_bos_linear(struct amdgpu_cs_parser *parser)
> +{
> +	unsigned i;
> +	int r;
> +
> +	if (!parser->bo_list)
> +		return 0;
> +
> +	for (i = 0; i < parser->bo_list->num_entries; i++) {
> +		struct amdgpu_bo *bo = parser->bo_list->array[i].robj;
> +
> +		if (bo->flags |= AMDGPU_GEM_CREATE_VRAM_LINEAR)

Isn't this always true as its an assignment with just some mutation
along the way?

> +			continue;
> +
> +		bo->flags |= AMDGPU_GEM_CREATE_VRAM_LINEAR;
> +		amdgpu_ttm_placement_from_domain(bo, bo->allowed_domains);
> +		r = ttm_bo_validate(&bo->tbo, &bo->placement, false, false);
> +		if (unlikely(r))
> +			return r;
> +	}
> +
> +	return 0;
> +}
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 1b31a7c..38f5315 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -256,7 +256,8 @@ static int amdgpu_vram_scratch_init(struct amdgpu_device *adev)
>  	if (adev->vram_scratch.robj == NULL) {
>  		r = amdgpu_bo_create(adev, AMDGPU_GPU_PAGE_SIZE,
>  				     PAGE_SIZE, true, AMDGPU_GEM_DOMAIN_VRAM,
> -				     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +				     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +				     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  				     NULL, NULL, &adev->vram_scratch.robj);
>  		if (r) {
>  			return r;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> index e694c99..efa9b79 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
> @@ -120,7 +120,8 @@ static int amdgpufb_create_pinned_object(struct amdgpu_fbdev *rfbdev,
>  	aligned_size = ALIGN(size, PAGE_SIZE);
>  	ret = amdgpu_gem_object_create(adev, aligned_size, 0,
>  				       AMDGPU_GEM_DOMAIN_VRAM,
> -				       AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +				       AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +				       AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  				       true, &gobj);
>  	if (ret) {
>  		printk(KERN_ERR "failed to allocate framebuffer (%d)\n",
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
> index 0feea34..b5982a9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
> @@ -126,7 +126,8 @@ int amdgpu_gart_table_vram_alloc(struct amdgpu_device *adev)
>  	if (adev->gart.robj == NULL) {
>  		r = amdgpu_bo_create(adev, adev->gart.table_size,
>  				     PAGE_SIZE, true, AMDGPU_GEM_DOMAIN_VRAM,
> -				     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +				     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +				     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  				     NULL, NULL, &adev->gart.robj);
>  		if (r) {
>  			return r;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index b17734e..6f83909 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -247,7 +247,8 @@ int amdgpu_bo_create_kernel(struct amdgpu_device *adev,
>  	int r;
>  
>  	r = amdgpu_bo_create(adev, size, align, true, domain,
> -			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +			     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  			     NULL, NULL, bo_ptr);
>  	if (r) {
>  		dev_err(adev->dev, "(%d) failed to allocate kernel bo\n", r);
> @@ -617,6 +618,8 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain,
>  
>  		return 0;
>  	}
> +
> +	bo->flags |= AMDGPU_GEM_CREATE_VRAM_LINEAR;
>  	amdgpu_ttm_placement_from_domain(bo, domain);
>  	for (i = 0; i < bo->placement.num_placement; i++) {
>  		/* force to pin into visible video ram */
> @@ -854,7 +857,9 @@ int amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
>  
>  	size = bo->mem.num_pages << PAGE_SHIFT;
>  	offset = bo->mem.start << PAGE_SHIFT;
> -	if ((offset + size) <= adev->mc.visible_vram_size)
> +	/* TODO: figure out how to map scattered VRAM to the CPU */
> +	if ((offset + size) <= adev->mc.visible_vram_size &&
> +	    (abo->flags & AMDGPU_GEM_CREATE_VRAM_LINEAR))
>  		return 0;
>  
>  	/* Can't move a pinned BO to visible VRAM */
> @@ -862,6 +867,7 @@ int amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
>  		return -EINVAL;
>  
>  	/* hurrah the memory is not visible ! */
> +	abo->flags |= AMDGPU_GEM_CREATE_VRAM_LINEAR;
>  	amdgpu_ttm_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_VRAM);
>  	lpfn =	adev->mc.visible_vram_size >> PAGE_SHIFT;
>  	for (i = 0; i < abo->placement.num_placement; i++) {
> @@ -920,6 +926,8 @@ u64 amdgpu_bo_gpu_offset(struct amdgpu_bo *bo)
>  	WARN_ON_ONCE(bo->tbo.mem.mem_type == TTM_PL_SYSTEM);
>  	WARN_ON_ONCE(!ww_mutex_is_locked(&bo->tbo.resv->lock) &&
>  		     !bo->pin_count);
> +	WARN_ON_ONCE(bo->tbo.mem.mem_type == TTM_PL_VRAM &&
> +		     !(bo->flags & AMDGPU_GEM_CREATE_VRAM_LINEAR));
>  
>  	return bo->tbo.offset;
>  }
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index e2f6a46..ea480bb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1024,7 +1024,8 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>  
>  	r = amdgpu_bo_create(adev, 256 * 1024, PAGE_SIZE, true,
>  			     AMDGPU_GEM_DOMAIN_VRAM,
> -			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +			     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  			     NULL, NULL, &adev->stollen_vga_memory);
>  	if (r) {
>  		return r;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
> index 5888e8a..5f5380c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
> @@ -891,6 +891,10 @@ int amdgpu_uvd_ring_parse_cs(struct amdgpu_cs_parser *parser, uint32_t ib_idx)
>  		return -EINVAL;
>  	}
>  
> +	r = amdgpu_cs_make_bos_linear(parser);
> +	if (r)
> +		return r;
> +
>  	ctx.parser = parser;
>  	ctx.buf_sizes = buf_sizes;
>  	ctx.ib_idx = ib_idx;
> @@ -1007,7 +1011,8 @@ int amdgpu_uvd_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,
>  
>  	r = amdgpu_bo_create(adev, 1024, PAGE_SIZE, true,
>  			     AMDGPU_GEM_DOMAIN_VRAM,
> -			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +			     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  			     NULL, NULL, &bo);
>  	if (r)
>  		return r;
> @@ -1056,7 +1061,8 @@ int amdgpu_uvd_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
>  
>  	r = amdgpu_bo_create(adev, 1024, PAGE_SIZE, true,
>  			     AMDGPU_GEM_DOMAIN_VRAM,
> -			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +			     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  			     NULL, NULL, &bo);
>  	if (r)
>  		return r;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
> index 9b71d6c..bb97a8e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
> @@ -157,7 +157,8 @@ int amdgpu_vce_sw_init(struct amdgpu_device *adev, unsigned long size)
>  
>  	r = amdgpu_bo_create(adev, size, PAGE_SIZE, true,
>  			     AMDGPU_GEM_DOMAIN_VRAM,
> -			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +			     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  			     NULL, NULL, &adev->vce.vcpu_bo);
>  	if (r) {
>  		dev_err(adev->dev, "(%d) failed to allocate VCE bo\n", r);
> @@ -634,7 +635,11 @@ int amdgpu_vce_ring_parse_cs(struct amdgpu_cs_parser *p, uint32_t ib_idx)
>  	uint32_t allocated = 0;
>  	uint32_t tmp, handle = 0;
>  	uint32_t *size = &tmp;
> -	int i, r = 0, idx = 0;
> +	int i, r, idx = 0;
> +
> +	r = amdgpu_cs_make_bos_linear(p);
> +	if (r)
> +		return r;
>  
>  	while (idx < ib->length_dw) {
>  		uint32_t len = amdgpu_get_ib_value(p, ib_idx, idx);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 7660f82..ea1bd67 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -1398,7 +1398,8 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev,
>  				     AMDGPU_GPU_PAGE_SIZE, true,
>  				     AMDGPU_GEM_DOMAIN_VRAM,
>  				     AMDGPU_GEM_CREATE_NO_CPU_ACCESS |
> -				     AMDGPU_GEM_CREATE_SHADOW,
> +				     AMDGPU_GEM_CREATE_SHADOW |
> +				     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  				     NULL, resv, &pt);
>  		if (r)
>  			goto error_free;
> @@ -1598,7 +1599,8 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm)
>  	r = amdgpu_bo_create(adev, pd_size, align, true,
>  			     AMDGPU_GEM_DOMAIN_VRAM,
>  			     AMDGPU_GEM_CREATE_NO_CPU_ACCESS |
> -			     AMDGPU_GEM_CREATE_SHADOW,
> +			     AMDGPU_GEM_CREATE_SHADOW |
> +			     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  			     NULL, NULL, &vm->page_directory);
>  	if (r)
>  		goto error_free_sched_entity;
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> index f055d49..1517a8c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> @@ -3213,7 +3213,8 @@ static int gfx_v7_0_rlc_init(struct amdgpu_device *adev)
>  		if (adev->gfx.rlc.save_restore_obj == NULL) {
>  			r = amdgpu_bo_create(adev, dws * 4, PAGE_SIZE, true,
>  					     AMDGPU_GEM_DOMAIN_VRAM,
> -					     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +					     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +					     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  					     NULL, NULL,
>  					     &adev->gfx.rlc.save_restore_obj);
>  			if (r) {
> @@ -3257,7 +3258,8 @@ static int gfx_v7_0_rlc_init(struct amdgpu_device *adev)
>  		if (adev->gfx.rlc.clear_state_obj == NULL) {
>  			r = amdgpu_bo_create(adev, dws * 4, PAGE_SIZE, true,
>  					     AMDGPU_GEM_DOMAIN_VRAM,
> -					     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +					     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +					     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  					     NULL, NULL,
>  					     &adev->gfx.rlc.clear_state_obj);
>  			if (r) {
> @@ -3297,7 +3299,8 @@ static int gfx_v7_0_rlc_init(struct amdgpu_device *adev)
>  		if (adev->gfx.rlc.cp_table_obj == NULL) {
>  			r = amdgpu_bo_create(adev, adev->gfx.rlc.cp_table_size, PAGE_SIZE, true,
>  					     AMDGPU_GEM_DOMAIN_VRAM,
> -					     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +					     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +					     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  					     NULL, NULL,
>  					     &adev->gfx.rlc.cp_table_obj);
>  			if (r) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> index 6e01392..26e614e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
> @@ -1273,7 +1273,8 @@ static int gfx_v8_0_rlc_init(struct amdgpu_device *adev)
>  		if (adev->gfx.rlc.clear_state_obj == NULL) {
>  			r = amdgpu_bo_create(adev, dws * 4, PAGE_SIZE, true,
>  					     AMDGPU_GEM_DOMAIN_VRAM,
> -					     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +					     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +					     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  					     NULL, NULL,
>  					     &adev->gfx.rlc.clear_state_obj);
>  			if (r) {
> @@ -1315,7 +1316,8 @@ static int gfx_v8_0_rlc_init(struct amdgpu_device *adev)
>  		if (adev->gfx.rlc.cp_table_obj == NULL) {
>  			r = amdgpu_bo_create(adev, adev->gfx.rlc.cp_table_size, PAGE_SIZE, true,
>  					     AMDGPU_GEM_DOMAIN_VRAM,
> -					     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED,
> +					     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
> +					     AMDGPU_GEM_CREATE_VRAM_LINEAR,
>  					     NULL, NULL,
>  					     &adev->gfx.rlc.cp_table_obj);
>  			if (r) {
> diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
> index 403b676..2aede6a 100644
> --- a/include/uapi/drm/amdgpu_drm.h
> +++ b/include/uapi/drm/amdgpu_drm.h
> @@ -79,6 +79,8 @@
>  #define AMDGPU_GEM_CREATE_VRAM_CLEARED		(1 << 3)
>  /* Flag that create shadow bo(GTT) while allocating vram bo */
>  #define AMDGPU_GEM_CREATE_SHADOW		(1 << 4)
> +/* Flag that allocating the BO should use linear VRAM */
> +#define AMDGPU_GEM_CREATE_VRAM_LINEAR		(1 << 5)
>  
>  struct drm_amdgpu_gem_create_in  {
>  	/** the requested memory size */
> 


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

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

  parent reply	other threads:[~2016-08-29 11:02 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-29  9:20 Split large VRAM allocations into smaller parts Christian König
     [not found] ` <1472462424-3052-1-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-29  9:20   ` [PATCH 1/5] drm/amdgpu: add AMDGPU_GEM_CREATE_VRAM_LINEAR flag v2 Christian König
     [not found]     ` <1472462424-3052-2-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-29 11:02       ` Edward O'Callaghan [this message]
2016-08-29 13:47       ` Deucher, Alexander
     [not found]         ` <MWHPR12MB1694759D47B2D6579C5D8F5BF7E10-Gy0DoCVfaSW4WA4dJ5YXGAdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-08-30  0:57           ` Michel Dänzer
     [not found]             ` <8221ebac-36e1-7a5b-2d02-92db63c4cc24-otUistvHUpPR7s880joybQ@public.gmane.org>
2016-08-30  1:49               ` Flora Cui
2016-08-30  7:44                 ` Christian König
2016-08-30 17:33       ` William Lewis
     [not found]         ` <BY2PR17MB02955F1C52893FDD92B1D78CC8E00-x8ynOugG3EHUsavx+kKoj3+GY4YGzQ7gvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-08-30 18:42           ` Alex Deucher
2016-08-29  9:20   ` [PATCH 2/5] drm/amdgpu: use explicit limit for VRAM_LINEAR handling Christian König
     [not found]     ` <1472462424-3052-3-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-29 10:59       ` Edward O'Callaghan
2016-08-29  9:20   ` [PATCH 3/5] drm/amdgpu: handle multiple MM nodes in the VMs Christian König
     [not found]     ` <1472462424-3052-4-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-29 22:29       ` Felix Kuehling
2016-08-29  9:20   ` [PATCH 4/5] drm/amdgpu: enable amdgpu_move_blit to handle multiple MM nodes Christian König
     [not found]     ` <1472462424-3052-5-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-29 22:09       ` Felix Kuehling
2016-08-29  9:20   ` [PATCH 5/5] drm/amdgpu: add VRAM manager Christian König
     [not found]     ` <1472462424-3052-6-git-send-email-deathsimple-ANTagKRnAhcb1SvskN2V4Q@public.gmane.org>
2016-08-29 10:27       ` Edward O'Callaghan
2016-08-30 17:37       ` William Lewis

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=754ca3cd-657f-a579-c789-6923e1579778@folklore1984.net \
    --to=funfunctor-dczkzgxz+bnupwh3paxdjq@public.gmane.org \
    --cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=deathsimple-ANTagKRnAhcb1SvskN2V4Q@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.