Skip to content

Commit e3d0839

Browse files
hghimiralucasdemarchi
authored andcommitted
drm/xe/tile: Abort driver load for sysfs creation failure
Ensure that the status of all tile associated sysfs entries creation is relayed to xe_tile_init_noalloc, leading to a driver load abort if any sysfs creation failures occur. -v2 Avoid unnecessary warn/error messages. (Lucas) Cc: Rodrigo Vivi <[email protected]> Cc: Lucas De Marchi <[email protected]> Signed-off-by: Himal Prasad Ghimiray <[email protected]> Reviewed-by: Lucas De Marchi <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Signed-off-by: Lucas De Marchi <[email protected]>
1 parent 9c3f72a commit e3d0839

File tree

5 files changed

+18
-24
lines changed

5 files changed

+18
-24
lines changed

drivers/gpu/drm/xe/xe_tile.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
170170

171171
xe_wa_apply_tile_workarounds(tile);
172172

173-
xe_tile_sysfs_init(tile);
173+
err = xe_tile_sysfs_init(tile);
174174

175175
return 0;
176176
}

drivers/gpu/drm/xe/xe_tile_sysfs.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ static void tile_sysfs_fini(struct drm_device *drm, void *arg)
2929
kobject_put(tile->sysfs);
3030
}
3131

32-
void xe_tile_sysfs_init(struct xe_tile *tile)
32+
int xe_tile_sysfs_init(struct xe_tile *tile)
3333
{
3434
struct xe_device *xe = tile_to_xe(tile);
3535
struct device *dev = xe->drm.dev;
@@ -38,24 +38,22 @@ void xe_tile_sysfs_init(struct xe_tile *tile)
3838

3939
kt = kzalloc(sizeof(*kt), GFP_KERNEL);
4040
if (!kt)
41-
return;
41+
return -ENOMEM;
4242

4343
kobject_init(&kt->base, &xe_tile_sysfs_kobj_type);
4444
kt->tile = tile;
4545

4646
err = kobject_add(&kt->base, &dev->kobj, "tile%d", tile->id);
4747
if (err) {
4848
kobject_put(&kt->base);
49-
drm_warn(&xe->drm, "failed to register TILE sysfs directory, err: %d\n", err);
50-
return;
49+
return err;
5150
}
5251

5352
tile->sysfs = &kt->base;
5453

55-
xe_vram_freq_sysfs_init(tile);
56-
57-
err = drmm_add_action_or_reset(&xe->drm, tile_sysfs_fini, tile);
54+
err = xe_vram_freq_sysfs_init(tile);
5855
if (err)
59-
drm_warn(&xe->drm, "%s: drmm_add_action_or_reset failed, err: %d\n",
60-
__func__, err);
56+
return err;
57+
58+
return drmm_add_action_or_reset(&xe->drm, tile_sysfs_fini, tile);
6159
}

drivers/gpu/drm/xe/xe_tile_sysfs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
#include "xe_tile_sysfs_types.h"
1010

11-
void xe_tile_sysfs_init(struct xe_tile *tile);
11+
int xe_tile_sysfs_init(struct xe_tile *tile);
1212

1313
static inline struct xe_tile *
1414
kobj_to_tile(struct kobject *kobj)

drivers/gpu/drm/xe/xe_vram_freq.c

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -100,31 +100,27 @@ static void vram_freq_sysfs_fini(struct drm_device *drm, void *arg)
100100
* @tile: Xe Tile object
101101
*
102102
* It needs to be initialized after the main tile component is ready
103+
*
104+
* Returns: 0 on success, negative error code on error.
103105
*/
104-
void xe_vram_freq_sysfs_init(struct xe_tile *tile)
106+
int xe_vram_freq_sysfs_init(struct xe_tile *tile)
105107
{
106108
struct xe_device *xe = tile_to_xe(tile);
107109
struct kobject *kobj;
108110
int err;
109111

110112
if (xe->info.platform != XE_PVC)
111-
return;
113+
return 0;
112114

113115
kobj = kobject_create_and_add("memory", tile->sysfs);
114-
if (!kobj) {
115-
drm_warn(&xe->drm, "failed to add memory directory, err: %d\n", -ENOMEM);
116-
return;
117-
}
116+
if (!kobj)
117+
return -ENOMEM;
118118

119119
err = sysfs_create_group(kobj, &freq_group_attrs);
120120
if (err) {
121121
kobject_put(kobj);
122-
drm_warn(&xe->drm, "failed to register vram freq sysfs, err: %d\n", err);
123-
return;
122+
return err;
124123
}
125124

126-
err = drmm_add_action_or_reset(&xe->drm, vram_freq_sysfs_fini, kobj);
127-
if (err)
128-
drm_warn(&xe->drm, "%s: drmm_add_action_or_reset failed, err: %d\n",
129-
__func__, err);
125+
return drmm_add_action_or_reset(&xe->drm, vram_freq_sysfs_fini, kobj);
130126
}

drivers/gpu/drm/xe/xe_vram_freq.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88

99
struct xe_tile;
1010

11-
void xe_vram_freq_sysfs_init(struct xe_tile *tile);
11+
int xe_vram_freq_sysfs_init(struct xe_tile *tile);
1212

1313
#endif /* _XE_VRAM_FREQ_H_ */

0 commit comments

Comments
 (0)