Message ID | 20241107100140.292928-3-maarten.lankhorst@linux.intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/9] drm/xe: Remove double pageflip | expand |
On Thu, Nov 07, 2024 at 11:01:34AM +0100, Maarten Lankhorst wrote: > No allocations should be done before we have had a chance to preserve > the display fb. > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Link: https://patchwork.freedesktop.org/patch/msgid/20241105121857.17389-3-maarten.lankhorst@linux.intel.com > Signed-off-by: Maarten Lankhorst,,, <dev@lankhorst.se> extra commas in your signature?! so, the patch looks correct to me. As Lucas had pointed out already the xe_tile_init_noalloc shouldn't do any alloc as the name and its doc says. But please add the Fixes tag and the new function documentation as Lucas had already requested: https://lore.kernel.org/intel-xe/66lrio7qieuvevgzkdsmgjt46swaxzxgvdnnch6w472uzjdsu4@xvn7pvrfpiih/ with that, feel free to use Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > drivers/gpu/drm/xe/xe_device.c | 6 ++++++ > drivers/gpu/drm/xe/xe_tile.c | 12 ++++++++---- > drivers/gpu/drm/xe/xe_tile.h | 1 + > 3 files changed, 15 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c > index a0d29d5cb7b70..cef782f244e1a 100644 > --- a/drivers/gpu/drm/xe/xe_device.c > +++ b/drivers/gpu/drm/xe/xe_device.c > @@ -730,6 +730,12 @@ int xe_device_probe(struct xe_device *xe) > if (err) > goto err; > > + for_each_tile(tile, xe, id) { > + err = xe_tile_init(tile); > + if (err) > + goto err; > + } > + > for_each_gt(gt, xe, id) { > last_gt = id; > > diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c > index 07cf7cfe4abd5..2825553b568f7 100644 > --- a/drivers/gpu/drm/xe/xe_tile.c > +++ b/drivers/gpu/drm/xe/xe_tile.c > @@ -170,10 +170,6 @@ int xe_tile_init_noalloc(struct xe_tile *tile) > if (err) > return err; > > - tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16); > - if (IS_ERR(tile->mem.kernel_bb_pool)) > - return PTR_ERR(tile->mem.kernel_bb_pool); > - > xe_wa_apply_tile_workarounds(tile); > > err = xe_tile_sysfs_init(tile); > @@ -181,6 +177,14 @@ int xe_tile_init_noalloc(struct xe_tile *tile) > return 0; > } > > +int xe_tile_init(struct xe_tile *tile) > +{ > + tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16); > + if (IS_ERR(tile->mem.kernel_bb_pool)) > + return PTR_ERR(tile->mem.kernel_bb_pool); > + > + return 0; > +} > void xe_tile_migrate_wait(struct xe_tile *tile) > { > xe_migrate_wait(tile->migrate); > diff --git a/drivers/gpu/drm/xe/xe_tile.h b/drivers/gpu/drm/xe/xe_tile.h > index 1c9e42ade6b05..eb939316d55b0 100644 > --- a/drivers/gpu/drm/xe/xe_tile.h > +++ b/drivers/gpu/drm/xe/xe_tile.h > @@ -12,6 +12,7 @@ struct xe_tile; > > int xe_tile_init_early(struct xe_tile *tile, struct xe_device *xe, u8 id); > int xe_tile_init_noalloc(struct xe_tile *tile); > +int xe_tile_init(struct xe_tile *tile); > > void xe_tile_migrate_wait(struct xe_tile *tile); > > -- > 2.45.2 >
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c index a0d29d5cb7b70..cef782f244e1a 100644 --- a/drivers/gpu/drm/xe/xe_device.c +++ b/drivers/gpu/drm/xe/xe_device.c @@ -730,6 +730,12 @@ int xe_device_probe(struct xe_device *xe) if (err) goto err; + for_each_tile(tile, xe, id) { + err = xe_tile_init(tile); + if (err) + goto err; + } + for_each_gt(gt, xe, id) { last_gt = id; diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c index 07cf7cfe4abd5..2825553b568f7 100644 --- a/drivers/gpu/drm/xe/xe_tile.c +++ b/drivers/gpu/drm/xe/xe_tile.c @@ -170,10 +170,6 @@ int xe_tile_init_noalloc(struct xe_tile *tile) if (err) return err; - tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16); - if (IS_ERR(tile->mem.kernel_bb_pool)) - return PTR_ERR(tile->mem.kernel_bb_pool); - xe_wa_apply_tile_workarounds(tile); err = xe_tile_sysfs_init(tile); @@ -181,6 +177,14 @@ int xe_tile_init_noalloc(struct xe_tile *tile) return 0; } +int xe_tile_init(struct xe_tile *tile) +{ + tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16); + if (IS_ERR(tile->mem.kernel_bb_pool)) + return PTR_ERR(tile->mem.kernel_bb_pool); + + return 0; +} void xe_tile_migrate_wait(struct xe_tile *tile) { xe_migrate_wait(tile->migrate); diff --git a/drivers/gpu/drm/xe/xe_tile.h b/drivers/gpu/drm/xe/xe_tile.h index 1c9e42ade6b05..eb939316d55b0 100644 --- a/drivers/gpu/drm/xe/xe_tile.h +++ b/drivers/gpu/drm/xe/xe_tile.h @@ -12,6 +12,7 @@ struct xe_tile; int xe_tile_init_early(struct xe_tile *tile, struct xe_device *xe, u8 id); int xe_tile_init_noalloc(struct xe_tile *tile); +int xe_tile_init(struct xe_tile *tile); void xe_tile_migrate_wait(struct xe_tile *tile);