From: Matthew Auld <matthew.auld@intel.com>
To: intel-xe@lists.freedesktop.org
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>,
Andrzej Hajda <andrzej.hajda@intel.com>
Subject: [PATCH 04/20] drm/xe: covert sysfs over to devm
Date: Fri, 10 May 2024 19:12:17 +0100 [thread overview]
Message-ID: <20240510181212.264622-26-matthew.auld@intel.com> (raw)
In-Reply-To: <20240510181212.264622-22-matthew.auld@intel.com>
Hotunplugging the device seems to result in stuff like:
kobject_add_internal failed for tile0 with -EEXIST, don't try to
register things with the same name in the same directory.
We only remove the sysfs as part of drmm, however that is tied to the
lifetime of the driver instance and not the device underneath. Attempt
to fix by using devm for all of the remaining sysfs stuff related to the
device.
Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1667
Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1432
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
---
drivers/gpu/drm/xe/xe_device_sysfs.c | 4 ++--
drivers/gpu/drm/xe/xe_gt_ccs_mode.c | 4 ++--
drivers/gpu/drm/xe/xe_gt_freq.c | 4 ++--
drivers/gpu/drm/xe/xe_gt_idle.c | 4 ++--
drivers/gpu/drm/xe/xe_gt_sysfs.c | 4 ++--
drivers/gpu/drm/xe/xe_gt_throttle_sysfs.c | 4 ++--
drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.c | 12 ++++++------
drivers/gpu/drm/xe/xe_tile_sysfs.c | 4 ++--
drivers/gpu/drm/xe/xe_vram_freq.c | 4 ++--
9 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device_sysfs.c b/drivers/gpu/drm/xe/xe_device_sysfs.c
index 21677b8cd977..7375937934fa 100644
--- a/drivers/gpu/drm/xe/xe_device_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_device_sysfs.c
@@ -69,7 +69,7 @@ vram_d3cold_threshold_store(struct device *dev, struct device_attribute *attr,
static DEVICE_ATTR_RW(vram_d3cold_threshold);
-static void xe_device_sysfs_fini(struct drm_device *drm, void *arg)
+static void xe_device_sysfs_fini(void *arg)
{
struct xe_device *xe = arg;
@@ -85,5 +85,5 @@ int xe_device_sysfs_init(struct xe_device *xe)
if (ret)
return ret;
- return drmm_add_action_or_reset(&xe->drm, xe_device_sysfs_fini, xe);
+ return devm_add_action_or_reset(dev, xe_device_sysfs_fini, xe);
}
diff --git a/drivers/gpu/drm/xe/xe_gt_ccs_mode.c b/drivers/gpu/drm/xe/xe_gt_ccs_mode.c
index a34c9a24dafc..5d6ab24348a7 100644
--- a/drivers/gpu/drm/xe/xe_gt_ccs_mode.c
+++ b/drivers/gpu/drm/xe/xe_gt_ccs_mode.c
@@ -150,7 +150,7 @@ static const struct attribute *gt_ccs_mode_attrs[] = {
NULL,
};
-static void xe_gt_ccs_mode_sysfs_fini(struct drm_device *drm, void *arg)
+static void xe_gt_ccs_mode_sysfs_fini(void *arg)
{
struct xe_gt *gt = arg;
@@ -182,5 +182,5 @@ int xe_gt_ccs_mode_sysfs_init(struct xe_gt *gt)
if (err)
return err;
- return drmm_add_action_or_reset(&xe->drm, xe_gt_ccs_mode_sysfs_fini, gt);
+ return devm_add_action_or_reset(xe->drm.dev, xe_gt_ccs_mode_sysfs_fini, gt);
}
diff --git a/drivers/gpu/drm/xe/xe_gt_freq.c b/drivers/gpu/drm/xe/xe_gt_freq.c
index 855de40e40ea..e0305942644c 100644
--- a/drivers/gpu/drm/xe/xe_gt_freq.c
+++ b/drivers/gpu/drm/xe/xe_gt_freq.c
@@ -209,7 +209,7 @@ static const struct attribute *freq_attrs[] = {
NULL
};
-static void freq_fini(struct drm_device *drm, void *arg)
+static void freq_fini(void *arg)
{
struct kobject *kobj = arg;
@@ -237,7 +237,7 @@ int xe_gt_freq_init(struct xe_gt *gt)
if (!gt->freq)
return -ENOMEM;
- err = drmm_add_action_or_reset(&xe->drm, freq_fini, gt->freq);
+ err = devm_add_action(xe->drm.dev, freq_fini, gt->freq);
if (err)
return err;
diff --git a/drivers/gpu/drm/xe/xe_gt_idle.c b/drivers/gpu/drm/xe/xe_gt_idle.c
index a4f6f0a96d05..749b7f4b688f 100644
--- a/drivers/gpu/drm/xe/xe_gt_idle.c
+++ b/drivers/gpu/drm/xe/xe_gt_idle.c
@@ -145,7 +145,7 @@ static const struct attribute *gt_idle_attrs[] = {
NULL,
};
-static void gt_idle_sysfs_fini(struct drm_device *drm, void *arg)
+static void gt_idle_sysfs_fini(void *arg)
{
struct kobject *kobj = arg;
@@ -182,7 +182,7 @@ int xe_gt_idle_sysfs_init(struct xe_gt_idle *gtidle)
return err;
}
- return drmm_add_action_or_reset(&xe->drm, gt_idle_sysfs_fini, kobj);
+ return devm_add_action_or_reset(xe->drm.dev, gt_idle_sysfs_fini, kobj);
}
void xe_gt_idle_enable_c6(struct xe_gt *gt)
diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
index 1e5971072bc8..a05c3699e8b9 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
@@ -22,7 +22,7 @@ static const struct kobj_type xe_gt_sysfs_kobj_type = {
.sysfs_ops = &kobj_sysfs_ops,
};
-static void gt_sysfs_fini(struct drm_device *drm, void *arg)
+static void gt_sysfs_fini(void *arg)
{
struct xe_gt *gt = arg;
@@ -51,5 +51,5 @@ int xe_gt_sysfs_init(struct xe_gt *gt)
gt->sysfs = &kg->base;
- return drmm_add_action_or_reset(&xe->drm, gt_sysfs_fini, gt);
+ return devm_add_action(xe->drm.dev, gt_sysfs_fini, gt);
}
diff --git a/drivers/gpu/drm/xe/xe_gt_throttle_sysfs.c b/drivers/gpu/drm/xe/xe_gt_throttle_sysfs.c
index fbe21a8599ca..c9e04151286d 100644
--- a/drivers/gpu/drm/xe/xe_gt_throttle_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_throttle_sysfs.c
@@ -229,7 +229,7 @@ static const struct attribute_group throttle_group_attrs = {
.attrs = throttle_attrs,
};
-static void gt_throttle_sysfs_fini(struct drm_device *drm, void *arg)
+static void gt_throttle_sysfs_fini(void *arg)
{
struct xe_gt *gt = arg;
@@ -245,5 +245,5 @@ int xe_gt_throttle_sysfs_init(struct xe_gt *gt)
if (err)
return err;
- return drmm_add_action_or_reset(&xe->drm, gt_throttle_sysfs_fini, gt);
+ return devm_add_action_or_reset(xe->drm.dev, gt_throttle_sysfs_fini, gt);
}
diff --git a/drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.c b/drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.c
index 844ec68cbbb8..258078a6b461 100644
--- a/drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.c
@@ -492,7 +492,7 @@ static const struct attribute * const files[] = {
NULL
};
-static void kobj_xe_hw_engine_class_fini(struct drm_device *drm, void *arg)
+static void kobj_xe_hw_engine_class_fini(void *arg)
{
struct kobject *kobj = arg;
@@ -517,7 +517,7 @@ kobj_xe_hw_engine_class(struct xe_device *xe, struct kobject *parent, const char
}
keclass->xe = xe;
- err = drmm_add_action_or_reset(&xe->drm, kobj_xe_hw_engine_class_fini,
+ err = devm_add_action_or_reset(xe->drm.dev, kobj_xe_hw_engine_class_fini,
&keclass->base);
if (err)
return NULL;
@@ -525,7 +525,7 @@ kobj_xe_hw_engine_class(struct xe_device *xe, struct kobject *parent, const char
return keclass;
}
-static void hw_engine_class_defaults_fini(struct drm_device *drm, void *arg)
+static void hw_engine_class_defaults_fini(void *arg)
{
struct kobject *kobj = arg;
@@ -552,7 +552,7 @@ static int xe_add_hw_engine_class_defaults(struct xe_device *xe,
if (err)
goto err_object;
- return drmm_add_action_or_reset(&xe->drm, hw_engine_class_defaults_fini, kobj);
+ return devm_add_action_or_reset(xe->drm.dev, hw_engine_class_defaults_fini, kobj);
err_object:
kobject_put(kobj);
@@ -611,7 +611,7 @@ static const struct kobj_type xe_hw_engine_sysfs_kobj_type = {
.sysfs_ops = &xe_hw_engine_class_sysfs_ops,
};
-static void hw_engine_class_sysfs_fini(struct drm_device *drm, void *arg)
+static void hw_engine_class_sysfs_fini(void *arg)
{
struct kobject *kobj = arg;
@@ -698,7 +698,7 @@ int xe_hw_engine_class_sysfs_init(struct xe_gt *gt)
goto err_object;
}
- return drmm_add_action_or_reset(&xe->drm, hw_engine_class_sysfs_fini, kobj);
+ return devm_add_action_or_reset(xe->drm.dev, hw_engine_class_sysfs_fini, kobj);
err_object:
kobject_put(kobj);
diff --git a/drivers/gpu/drm/xe/xe_tile_sysfs.c b/drivers/gpu/drm/xe/xe_tile_sysfs.c
index 64661403afcd..b804234a6551 100644
--- a/drivers/gpu/drm/xe/xe_tile_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_tile_sysfs.c
@@ -22,7 +22,7 @@ static const struct kobj_type xe_tile_sysfs_kobj_type = {
.sysfs_ops = &kobj_sysfs_ops,
};
-static void tile_sysfs_fini(struct drm_device *drm, void *arg)
+static void tile_sysfs_fini(void *arg)
{
struct xe_tile *tile = arg;
@@ -55,5 +55,5 @@ int xe_tile_sysfs_init(struct xe_tile *tile)
if (err)
return err;
- return drmm_add_action_or_reset(&xe->drm, tile_sysfs_fini, tile);
+ return devm_add_action_or_reset(xe->drm.dev, tile_sysfs_fini, tile);
}
diff --git a/drivers/gpu/drm/xe/xe_vram_freq.c b/drivers/gpu/drm/xe/xe_vram_freq.c
index 3e21ddc6e60c..99ff95e408e0 100644
--- a/drivers/gpu/drm/xe/xe_vram_freq.c
+++ b/drivers/gpu/drm/xe/xe_vram_freq.c
@@ -87,7 +87,7 @@ static const struct attribute_group freq_group_attrs = {
.attrs = freq_attrs,
};
-static void vram_freq_sysfs_fini(struct drm_device *drm, void *arg)
+static void vram_freq_sysfs_fini(void *arg)
{
struct kobject *kobj = arg;
@@ -122,5 +122,5 @@ int xe_vram_freq_sysfs_init(struct xe_tile *tile)
return err;
}
- return drmm_add_action_or_reset(&xe->drm, vram_freq_sysfs_fini, kobj);
+ return devm_add_action_or_reset(xe->drm.dev, vram_freq_sysfs_fini, kobj);
}
--
2.45.0
next prev parent reply other threads:[~2024-05-10 18:12 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-10 18:12 [PATCH 00/20] core_hotunplug improvements Matthew Auld
2024-05-10 18:12 ` [PATCH 01/20] drm/drm_managed: try to improve the drmm DOC Matthew Auld
2024-05-13 7:06 ` Andrzej Hajda
2024-05-13 15:38 ` Rodrigo Vivi
2024-05-10 18:12 ` [PATCH 02/20] drm/amdgpu: don't trample pdev drvdata Matthew Auld
2024-05-13 11:54 ` Christian König
2024-05-10 18:12 ` [PATCH 03/20] drm/xe/pci: remove broken driver_release Matthew Auld
2024-05-13 7:14 ` Andrzej Hajda
2024-05-10 18:12 ` Matthew Auld [this message]
2024-05-10 18:12 ` [PATCH 05/20] drm/xe/ggtt: use drm_dev_enter to mark device section Matthew Auld
2024-05-13 7:16 ` Andrzej Hajda
2024-05-13 19:34 ` Randhawa, Jagmeet
2024-05-10 18:12 ` [PATCH 06/20] drm/xe/guc: move guc_fini over to devm Matthew Auld
2024-05-10 18:12 ` [PATCH 07/20] drm/xe/guc: s/guc_fini/guc_fini_hw/ Matthew Auld
2024-05-13 7:30 ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 08/20] drm/xe/guc_pc: move pc_fini to devm Matthew Auld
2024-05-10 18:12 ` [PATCH 09/20] drm/xe/guc_pc: s/pc_fini/pc_fini_hw/ Matthew Auld
2024-05-11 9:19 ` kernel test robot
2024-05-13 7:37 ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 10/20] drm/xe/irq: move irq_uninstall over to devm Matthew Auld
2024-05-10 18:12 ` [PATCH 11/20] drm/xe/device: move flr " Matthew Auld
2024-05-10 18:12 ` [PATCH 12/20] drm/xe/device: move xe_device_sanitize over " Matthew Auld
2024-05-10 18:12 ` [PATCH 13/20] drm/xe/coredump: move " Matthew Auld
2024-05-13 7:38 ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 14/20] drm/xe/gt: break out gt_fini into sw vs hw state Matthew Auld
2024-05-13 7:50 ` Andrzej Hajda
2024-05-13 8:37 ` Matthew Auld
2024-05-13 9:19 ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 15/20] drm/xe: make gt_remove use devm Matthew Auld
2024-05-13 7:58 ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 16/20] drm/xe/mmio: move mmio_fini over to devm Matthew Auld
2024-05-13 8:00 ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 17/20] drm/xe: reset mmio mappings with devm Matthew Auld
2024-05-13 8:12 ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 18/20] drm/xe/display: move display fini stuff to devm Matthew Auld
2024-05-13 8:13 ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 19/20] drm/xe/display: stop calling domains_driver_remove twice Matthew Auld
2024-05-13 8:19 ` Andrzej Hajda
2024-05-13 8:27 ` Matthew Auld
2024-05-13 9:17 ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 20/20] drm/xe/display: move device_remove over to drmm Matthew Auld
2024-05-11 10:33 ` kernel test robot
2024-05-11 10:43 ` kernel test robot
2024-05-13 8:22 ` Andrzej Hajda
2024-05-10 18:17 ` ✓ CI.Patch_applied: success for core_hotunplug improvements Patchwork
2024-05-10 18:18 ` ✗ CI.checkpatch: warning " Patchwork
2024-05-10 18:18 ` ✗ CI.KUnit: failure " 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=20240510181212.264622-26-matthew.auld@intel.com \
--to=matthew.auld@intel.com \
--cc=andrzej.hajda@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox