Re: [PATCH] Add 2-level GPUVM pagetables support to radeon driver.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Don, 2012-09-13 at 18:13 +0400, Dmitry Cherkasov wrote: 
> PDE/PTE update code uses CP ring for memory writes.
> All page table entries are preallocated for now in alloc_pt().
> 
> It is made as whole because it's hard to divide it to several patches
> that compile and doesn't break anything being applied separately.
> 
> Tested on cayman card.
> 
> Signed-off-by: Dmitry Cherkasov <Dmitrii.Cherkasov@xxxxxxx>
> ---
> I couldn't test in on SI card, so would be happy if someone could check it there.

[...]


> 		radeon_ring_write(ring, addr & 0xffffffff);
>  		radeon_ring_write(ring, (addr >> 32) & 0xffffffff);

FWIW, masking with 0xffffffff is superfluous here, as 64 bit values will
be implicitly truncated to 32 bits. The compiler will hopefully optimize
away the unnecessary & operations, but it might be better not to require
that in the first place.


> diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
> index 4d67f0f..062896f 100644
> --- a/drivers/gpu/drm/radeon/radeon.h
> +++ b/drivers/gpu/drm/radeon/radeon.h
> diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c
> index 2f7adea..0df6a55 100644
> --- a/drivers/gpu/drm/radeon/radeon_asic.c
> +++ b/drivers/gpu/drm/radeon/radeon_asic.c
> @@ -1377,6 +1377,7 @@ static struct radeon_asic cayman_asic = {
>  		.fini = &cayman_vm_fini,
>  		.pt_ring_index = RADEON_RING_TYPE_GFX_INDEX,
>  		.set_page = &cayman_vm_set_page,
> +		.set_pdes = &cayman_vm_set_pdes,
>  	},
>  	.ring = {
>  		[RADEON_RING_TYPE_GFX_INDEX] = {

This also needs to be added to si_asic and trinity_asic, or it can't
work on SI or Trinity.

With that fixed, it seems to work on SI, but seems to slow things down
significantly. Have you noticed that as well? Any idea what might be the
reason?


> diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c
> index 2f28ff3..f9bda6e 100644
> --- a/drivers/gpu/drm/radeon/radeon_gart.c
> +++ b/drivers/gpu/drm/radeon/radeon_gart.c
> @@ -576,9 +579,13 @@ retry:
>  		return r;
>  	}
>  
> -	vm->pt = radeon_sa_bo_cpu_addr(vm->sa_bo);
> -	vm->pt_gpu_addr = radeon_sa_bo_gpu_addr(vm->sa_bo);
> -	memset(vm->pt, 0, RADEON_GPU_PAGE_ALIGN(vm->last_pfn * 8));
> +	DRM_INFO("radeon: reserved %d kb pd & pt tables\n",
> +		 gpuvm_tables_sz/1024);

DRM_INFO() is too noisy here. Make it DRM_DEBUG_DRIVER() or drop it.


-- 
Earthling Michel Dänzer           |                   http://www.amd.com
Libre software enthusiast         |          Debian, X and DRI developer
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux