From: Matthew Wilcox Date: Wed, 24 Oct 2018 17:51:16 +0000 (-0400) Subject: drm/i915: Convert page_track_tree to XArray X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a9f607a22159c9c2b7df081b8cf3cdd23cd010f4;p=users%2Fwilly%2Fxarray.git drm/i915: Convert page_track_tree to XArray No locking changes. Signed-off-by: Matthew Wilcox --- diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h index 7a1fe44d45af..7886e4cf88ea 100644 --- a/drivers/gpu/drm/i915/gvt/gvt.h +++ b/drivers/gpu/drm/i915/gvt/gvt.h @@ -191,7 +191,7 @@ struct intel_vgpu { struct intel_vgpu_opregion opregion; struct intel_vgpu_display display; struct intel_vgpu_submission submission; - struct radix_tree_root page_track_tree; + struct xarray page_track; u32 hws_pga[I915_NUM_ENGINES]; struct dentry *debugfs; diff --git a/drivers/gpu/drm/i915/gvt/page_track.c b/drivers/gpu/drm/i915/gvt/page_track.c index 84856022528e..8e8b5935f344 100644 --- a/drivers/gpu/drm/i915/gvt/page_track.c +++ b/drivers/gpu/drm/i915/gvt/page_track.c @@ -34,7 +34,7 @@ struct intel_vgpu_page_track *intel_vgpu_find_page_track( struct intel_vgpu *vgpu, unsigned long gfn) { - return radix_tree_lookup(&vgpu->page_track_tree, gfn); + return xa_load(&vgpu->page_track, gfn); } /** @@ -64,7 +64,7 @@ int intel_vgpu_register_page_track(struct intel_vgpu *vgpu, unsigned long gfn, track->handler = handler; track->priv_data = priv; - ret = radix_tree_insert(&vgpu->page_track_tree, gfn, track); + ret = xa_err(xa_store(&vgpu->page_track, gfn, track, GFP_KERNEL)); if (ret) { kfree(track); return ret; @@ -84,7 +84,7 @@ void intel_vgpu_unregister_page_track(struct intel_vgpu *vgpu, { struct intel_vgpu_page_track *track; - track = radix_tree_delete(&vgpu->page_track_tree, gfn); + track = xa_erase(&vgpu->page_track, gfn); if (track) { if (track->tracked) intel_gvt_hypervisor_disable_page_track(vgpu, gfn); diff --git a/drivers/gpu/drm/i915/gvt/vgpu.c b/drivers/gpu/drm/i915/gvt/vgpu.c index 44ce3c2b9ac1..2084a531d7ef 100644 --- a/drivers/gpu/drm/i915/gvt/vgpu.c +++ b/drivers/gpu/drm/i915/gvt/vgpu.c @@ -382,7 +382,7 @@ static struct intel_vgpu *__intel_gvt_create_vgpu(struct intel_gvt *gvt, mutex_init(&vgpu->vgpu_lock); mutex_init(&vgpu->dmabuf_lock); INIT_LIST_HEAD(&vgpu->dmabuf_obj_list_head); - INIT_RADIX_TREE(&vgpu->page_track_tree, GFP_KERNEL); + xa_init(&vgpu->page_track); idr_init(&vgpu->object_idr); intel_vgpu_init_cfg_space(vgpu, param->primary);