From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: <intel-xe@lists.freedesktop.org>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Francois Dugast <francois.dugast@intel.com>
Subject: Re: [PATCH v2 09/14] drm/xe: Move oa fini to xe_oa
Date: Fri, 07 Feb 2025 13:22:54 -0800 [thread overview]
Message-ID: <855xlllaa9.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <20250206232333.2660325-10-lucas.demarchi@intel.com>
On Thu, 06 Feb 2025 15:23:27 -0800, Lucas De Marchi wrote:
>
> Like done with other functions, cleanup the error handling in
> xe_device_probe() by moving the OA fini to be handled by xe_oa.
Maybe just mention devm cleanup here in the commit message as the reason
for this patch. Otherwise, lgtm:
Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 7 +----
> drivers/gpu/drm/xe/xe_oa.c | 48 +++++++++++++++++-----------------
> drivers/gpu/drm/xe/xe_oa.h | 1 -
> 3 files changed, 25 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 09288558e4e44..944a40a1e0174 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -867,7 +867,7 @@ int xe_device_probe(struct xe_device *xe)
>
> err = xe_display_init(xe);
> if (err)
> - goto err_fini_oa;
> + return err;
>
> err = xe_pxp_init(xe);
> if (err)
> @@ -899,9 +899,6 @@ int xe_device_probe(struct xe_device *xe)
> err_fini_display:
> xe_display_driver_remove(xe);
>
> -err_fini_oa:
> - xe_oa_fini(xe);
> -
> return err;
> }
>
> @@ -971,8 +968,6 @@ void xe_device_remove(struct xe_device *xe)
>
> xe_device_remove_display(xe);
>
> - xe_oa_fini(xe);
> -
> xe_heci_gsc_fini(xe);
>
> xe_device_call_remove_actions(xe);
> diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
> index fa873f3d0a9d1..2c640185bdeca 100644
> --- a/drivers/gpu/drm/xe/xe_oa.c
> +++ b/drivers/gpu/drm/xe/xe_oa.c
> @@ -2641,6 +2641,27 @@ static void xe_oa_init_supported_formats(struct xe_oa *oa)
> }
> }
>
> +static int destroy_config(int id, void *p, void *data)
> +{
> + xe_oa_config_put(p);
> +
> + return 0;
> +}
> +
> +static void xe_oa_fini(void *arg)
> +{
> + struct xe_device *xe = arg;
> + struct xe_oa *oa = &xe->oa;
> +
> + if (!oa->xe)
> + return;
> +
> + idr_for_each(&oa->metrics_idr, destroy_config, oa);
> + idr_destroy(&oa->metrics_idr);
> +
> + oa->xe = NULL;
> +}
> +
> /**
> * xe_oa_init - OA initialization during device probe
> * @xe: @xe_device
> @@ -2672,31 +2693,10 @@ int xe_oa_init(struct xe_device *xe)
> }
>
> xe_oa_init_supported_formats(oa);
> - return 0;
> -exit:
> - oa->xe = NULL;
> - return ret;
> -}
>
> -static int destroy_config(int id, void *p, void *data)
> -{
> - xe_oa_config_put(p);
> - return 0;
> -}
> -
> -/**
> - * xe_oa_fini - OA de-initialization during device remove
> - * @xe: @xe_device
> - */
> -void xe_oa_fini(struct xe_device *xe)
> -{
> - struct xe_oa *oa = &xe->oa;
> -
> - if (!oa->xe)
> - return;
> -
> - idr_for_each(&oa->metrics_idr, destroy_config, oa);
> - idr_destroy(&oa->metrics_idr);
> + return devm_add_action_or_reset(xe->drm.dev, xe_oa_fini, xe);
>
> +exit:
> oa->xe = NULL;
> + return ret;
> }
> diff --git a/drivers/gpu/drm/xe/xe_oa.h b/drivers/gpu/drm/xe/xe_oa.h
> index 87a38820c317d..eb36ce250c615 100644
> --- a/drivers/gpu/drm/xe/xe_oa.h
> +++ b/drivers/gpu/drm/xe/xe_oa.h
> @@ -15,7 +15,6 @@ struct xe_gt;
> struct xe_hw_engine;
>
> int xe_oa_init(struct xe_device *xe);
> -void xe_oa_fini(struct xe_device *xe);
> void xe_oa_register(struct xe_device *xe);
> void xe_oa_unregister(struct xe_device *xe);
> int xe_oa_stream_open_ioctl(struct drm_device *dev, u64 data, struct drm_file *file);
> --
> 2.48.1
>
next prev parent reply other threads:[~2025-02-07 21:25 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-06 23:23 [PATCH v2 00/14] Cleanup error handling on probe Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 01/14] drm/xe: Fix xe_display_fini() calls Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 02/14] drm/xe: Fix error handling in xe_irq_install() Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 03/14] drm/xe: Fix xe_tile_init_noalloc() error propagation Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 04/14] drm/xe: Stop ignoring errors from xe_ttm_stolen_mgr_init() Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 05/14] drm/xe: Remove leftover pxp comment Lucas De Marchi
2025-02-06 23:28 ` Daniele Ceraolo Spurio
2025-02-06 23:23 ` [PATCH v2 06/14] drm/xe: Add callback support for driver remove Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 07/14] drm/xe: Cleanup unwind of gt initialization Lucas De Marchi
2025-02-07 0:21 ` Daniele Ceraolo Spurio
2025-02-07 0:45 ` Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 08/14] drm/xe: Cleanup extra calls to xe_hw_fence_irq_finish() Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 09/14] drm/xe: Move oa fini to xe_oa Lucas De Marchi
2025-02-07 21:22 ` Dixit, Ashutosh [this message]
2025-02-06 23:23 ` [PATCH v2 10/14] drm/xe: Move drm_dev_unplug() out of display function Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 11/14] drm/xe/oa: Handle errors in xe_oa_register() Lucas De Marchi
2025-02-07 21:38 ` Dixit, Ashutosh
2025-02-06 23:23 ` [PATCH v2 12/14] drm/xe: Fail probe if xe_pmu_register() fails Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 13/14] drm/xe/hwmon: Fix mutex destroy Lucas De Marchi
2025-02-07 3:27 ` Lucas De Marchi
2025-02-07 10:20 ` Matthew Auld
2025-02-07 13:59 ` Lucas De Marchi
2025-02-06 23:23 ` [PATCH v2 14/14] drm/xe/hwmon: Stop ignoring errors on probe Lucas De Marchi
2025-02-07 0:59 ` ✓ CI.Patch_applied: success for Cleanup error handling on probe (rev2) Patchwork
2025-02-07 1:00 ` ✗ CI.checkpatch: warning " Patchwork
2025-02-07 1:01 ` ✓ CI.KUnit: success " Patchwork
2025-02-07 1:17 ` ✓ CI.Build: " Patchwork
2025-02-07 1:20 ` ✓ CI.Hooks: " Patchwork
2025-02-07 1:21 ` ✓ CI.checksparse: " Patchwork
2025-02-07 1:41 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-02-07 7:27 ` ✗ Xe.CI.Full: " Patchwork
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=855xlllaa9.wl-ashutosh.dixit@intel.com \
--to=ashutosh.dixit@intel.com \
--cc=francois.dugast@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=lucas.demarchi@intel.com \
--cc=rodrigo.vivi@intel.com \
/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.