[Intel-xe] [PATCH 1/2] drm/xe/xe2: Update LNL platform to support device page faults

Matthew Brost matthew.brost at intel.com
Wed Nov 29 11:12:16 UTC 2023


On Tue, Nov 28, 2023 at 01:36:33PM -0800, Brian Welty wrote:
> LNL is first integrated platform to support device pagefaults.

Nit rather than mention LNL here maybe just say support faults on
integrated platforms.

Other than that, LGTM:
Reviewed-by: Matthew Brost <matthew.brost at intel.com>

> As we have no VRAM, changes needed to support LNL are:
> - device pagefault handler should not attempt to migrate into VRAM
> - update xe_migrate_prepare_vm() to use the usm batch buffer even
>   for servicing device page faults on integrated platforms
> 
> Signed-off-by: Brian Welty <brian.welty at intel.com>
> ---
>  drivers/gpu/drm/xe/xe_gt_pagefault.c | 2 +-
>  drivers/gpu/drm/xe/xe_migrate.c      | 7 +++++--
>  2 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> index 03c1ab0ab0ca..959ea50c04db 100644
> --- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
> +++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> @@ -105,7 +105,7 @@ static int xe_pf_begin(struct drm_exec *exec, struct xe_vma *vma,
>  	if (err)
>  		return err;
>  
> -	if (atomic) {
> +	if (atomic && IS_DGFX(vm->xe)) {
>  		if (xe_vma_is_userptr(vma)) {
>  			err = -EACCES;
>  			return err;
> diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
> index 80a130beca61..e8b567708ac0 100644
> --- a/drivers/gpu/drm/xe/xe_migrate.c
> +++ b/drivers/gpu/drm/xe/xe_migrate.c
> @@ -215,10 +215,13 @@ static int xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m,
>  	}
>  
>  	if (!IS_DGFX(xe)) {
> -		xe_tile_assert(tile, !xe->info.supports_usm);
> -
>  		/* Write out batch too */
>  		m->batch_base_ofs = NUM_PT_SLOTS * XE_PAGE_SIZE;
> +		if (xe->info.supports_usm) {
> +			batch = tile->primary_gt->usm.bb_pool->bo;
> +			m->usm_batch_base_ofs = m->batch_base_ofs;
> +		}
> +
>  		for (i = 0; i < batch->size;
>  		     i += vm->flags & XE_VM_FLAG_64K ? XE_64K_PAGE_SIZE :
>  		     XE_PAGE_SIZE) {
> -- 
> 2.38.0
> 


More information about the Intel-xe mailing list