diff mbox series

[3/9] drm/xe: Move suballocator init to after display init

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

Commit Message

Maarten Lankhorst Nov. 7, 2024, 10:01 a.m. UTC
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>
---
 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(-)

Comments

Rodrigo Vivi Nov. 12, 2024, 6:18 p.m. UTC | #1
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 mbox series

Patch

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);