From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: <linux-kernel@vger.kernel.org>, <dri-devel@lists.freedesktop.org>,
"Danilo Krummrich" <dakr@kernel.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Subject: Re: [PATCH 6/6] drm/xe: Drop remove callback support
Date: Fri, 21 Feb 2025 13:10:07 -0500 [thread overview]
Message-ID: <Z7jBf1m6xzVMqj95@intel.com> (raw)
In-Reply-To: <20250212200542.515493-7-lucas.demarchi@intel.com>
On Wed, Feb 12, 2025 at 12:05:42PM -0800, Lucas De Marchi wrote:
> Now that devres supports component driver cleanup during driver removal
> cleanup, the xe custom support for removal callbacks is not needed
> anymore. Drop it.
>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 79 ----------------------------
> drivers/gpu/drm/xe/xe_device.h | 4 --
> drivers/gpu/drm/xe/xe_device_types.h | 17 ------
> drivers/gpu/drm/xe/xe_pci.c | 4 +-
> 4 files changed, 1 insertion(+), 103 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 4b4039cf29fd4..d83400bbff8b1 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -65,12 +65,6 @@
>
> #include <generated/xe_wa_oob.h>
>
> -struct xe_device_remove_action {
> - struct list_head node;
> - xe_device_remove_action_t remove;
> - void *data;
> -};
> -
> static int xe_file_open(struct drm_device *dev, struct drm_file *file)
> {
> struct xe_device *xe = to_xe_device(dev);
> @@ -752,9 +746,6 @@ int xe_device_probe(struct xe_device *xe)
> int err;
> u8 id;
>
> - xe->probing = true;
> - INIT_LIST_HEAD(&xe->remove_action_list);
> -
> xe_pat_init_early(xe);
>
> err = xe_sriov_init(xe);
> @@ -904,8 +895,6 @@ int xe_device_probe(struct xe_device *xe)
>
> xe_vsec_init(xe);
>
> - xe->probing = false;
> -
> return devm_add_action_or_reset(xe->drm.dev, xe_device_sanitize, xe);
>
> err_unregister_display:
> @@ -916,72 +905,6 @@ int xe_device_probe(struct xe_device *xe)
> return err;
> }
>
> -/**
> - * xe_device_call_remove_actions - Call the remove actions
> - * @xe: xe device instance
> - *
> - * This is only to be used by xe_pci and xe_device to call the remove actions
> - * while removing the driver or handling probe failures.
> - */
> -void xe_device_call_remove_actions(struct xe_device *xe)
> -{
> - struct xe_device_remove_action *ra, *tmp;
> -
> - list_for_each_entry_safe(ra, tmp, &xe->remove_action_list, node) {
> - ra->remove(xe, ra->data);
> - list_del(&ra->node);
> - kfree(ra);
> - }
> -
> - xe->probing = false;
> -}
> -
> -/**
> - * xe_device_add_action_or_reset - Add an action to run on driver removal
> - * @xe: xe device instance
> - * @ra: pointer to the object embedded into the object to cleanup
> - * @remove: function to execute. The @ra is passed as argument
> - *
> - * Example:
> - *
> - * .. code-block:: c
> - *
> - * static void foo_remove(struct xe_device_remove_action *ra)
> - * {
> - * struct xe_foo *foo = container_of(ra, struct xe_foo, remove_action);
> - * ...
> - * }
> - *
> - * int xe_foo_init(struct xe_foo *foo)
> - * {
> - * ...
> - * xe_device_add_remove_action(xe, &foo->remove_action, foo_remove);
> - * ...
> - * return 0;
> - * };
> - */
> -int xe_device_add_action_or_reset(struct xe_device *xe,
> - xe_device_remove_action_t action,
> - void *data)
> -{
> - struct xe_device_remove_action *ra;
> -
> - drm_WARN_ON(&xe->drm, !xe->probing);
> -
> - ra = kmalloc(sizeof(*ra), GFP_KERNEL);
> - if (!ra) {
> - action(xe, data);
> - return -ENOMEM;
> - }
> -
> - INIT_LIST_HEAD(&ra->node);
> - ra->remove = action;
> - ra->data = data;
> - list_add(&ra->node, &xe->remove_action_list);
> -
> - return 0;
> -}
> -
> void xe_device_remove(struct xe_device *xe)
> {
> xe_display_unregister(xe);
> @@ -991,8 +914,6 @@ void xe_device_remove(struct xe_device *xe)
> xe_display_driver_remove(xe);
>
> xe_heci_gsc_fini(xe);
> -
> - xe_device_call_remove_actions(xe);
> }
>
> void xe_device_shutdown(struct xe_device *xe)
> diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
> index a6fedf1ef3c7b..0bc3bc8e68030 100644
> --- a/drivers/gpu/drm/xe/xe_device.h
> +++ b/drivers/gpu/drm/xe/xe_device.h
> @@ -45,10 +45,6 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
> const struct pci_device_id *ent);
> int xe_device_probe_early(struct xe_device *xe);
> int xe_device_probe(struct xe_device *xe);
> -int xe_device_add_action_or_reset(struct xe_device *xe,
> - xe_device_remove_action_t action,
> - void *data);
> -void xe_device_call_remove_actions(struct xe_device *xe);
> void xe_device_remove(struct xe_device *xe);
> void xe_device_shutdown(struct xe_device *xe);
>
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index b322d49c83c77..833c29fed3a37 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -35,7 +35,6 @@
> #include "intel_display_device.h"
> #endif
>
> -struct xe_device;
> struct xe_ggtt;
> struct xe_pat_ops;
> struct xe_pxp;
> @@ -71,8 +70,6 @@ struct xe_pxp;
> const struct xe_tile * : (const struct xe_device *)((tile__)->xe), \
> struct xe_tile * : (tile__)->xe)
>
> -typedef void (*xe_device_remove_action_t)(struct xe_device *xe, void *data);
> -
> /**
> * struct xe_vram_region - memory region structure
> * This is used to describe a memory region in xe
> @@ -431,20 +428,6 @@ struct xe_device {
> /** @tiles: device tiles */
> struct xe_tile tiles[XE_MAX_TILES_PER_DEVICE];
>
> - /**
> - * @remove_action_list: list of actions to execute on device remove.
> - * Use xe_device_add_remove_action() for that. Actions can only be added
> - * during probe and are executed during the call from PCI subsystem to
> - * remove the driver from the device.
> - */
> - struct list_head remove_action_list;
> -
> - /**
> - * @probing: cover the section in which @remove_action_list can be used
> - * to post cleaning actions
> - */
> - bool probing;
> -
> /**
> * @mem_access: keep track of memory access in the device, possibly
> * triggering additional actions when they occur.
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 41ec6825b9bcc..447eacb355d7c 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -900,10 +900,8 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> return err;
>
> err = xe_device_probe(xe);
> - if (err) {
> - xe_device_call_remove_actions(xe);
> + if (err)
> return err;
> - }
>
For the series:
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> err = xe_pm_init(xe);
> if (err)
> --
> 2.48.1
>
prev parent reply other threads:[~2025-02-21 18:10 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-12 20:05 [PATCH 0/6] Make devres cleanup and component compatible Lucas De Marchi
2025-02-12 20:05 ` [PATCH 1/6] drivers: base: devres: Allow to release group on device release Lucas De Marchi
2025-02-20 12:24 ` Greg Kroah-Hartman
2025-02-20 23:48 ` Lucas De Marchi
2025-02-21 5:57 ` Greg Kroah-Hartman
2025-02-12 20:05 ` [PATCH 2/6] drivers: base: devres: Fix find_group() documentation Lucas De Marchi
2025-02-20 12:24 ` Greg Kroah-Hartman
2025-02-12 20:05 ` [PATCH 3/6] drivers: base: component: Add debug message for unbind Lucas De Marchi
2025-02-20 12:24 ` Greg Kroah-Hartman
2025-02-12 20:05 ` [PATCH 4/6] drm/xe: Stop setting drvdata to NULL Lucas De Marchi
2025-02-12 20:05 ` [PATCH 5/6] drm/xe: Switch from xe to devm actions Lucas De Marchi
2025-02-12 20:05 ` [PATCH 6/6] drm/xe: Drop remove callback support Lucas De Marchi
2025-02-21 18:10 ` Rodrigo Vivi [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z7jBf1m6xzVMqj95@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=dakr@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lucas.demarchi@intel.com \
--cc=rafael@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.