Skip to content

Commit ff57025

Browse files
committed
drm/xe: Stop ignoring errors from xe_ttm_stolen_mgr_init()
Make sure to differentiate normal behavior, e.g. there's no stolen, from allocation errors or failure to initialize lower layers. Reviewed-by: Francois Dugast <francois.dugast@intel.com> Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250213192909.996148-5-lucas.demarchi@intel.com Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
1 parent 0bcf411 commit ff57025

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

drivers/gpu/drm/xe/xe_device.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -836,7 +836,9 @@ int xe_device_probe(struct xe_device *xe)
836836
}
837837

838838
/* Allocate and map stolen after potential VRAM resize */
839-
xe_ttm_stolen_mgr_init(xe);
839+
err = xe_ttm_stolen_mgr_init(xe);
840+
if (err)
841+
return err;
840842

841843
/*
842844
* Now that GT is initialized (TTM in particular),

drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -207,17 +207,16 @@ static u64 detect_stolen(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr)
207207
#endif
208208
}
209209

210-
void xe_ttm_stolen_mgr_init(struct xe_device *xe)
210+
int xe_ttm_stolen_mgr_init(struct xe_device *xe)
211211
{
212-
struct xe_ttm_stolen_mgr *mgr = drmm_kzalloc(&xe->drm, sizeof(*mgr), GFP_KERNEL);
213212
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
213+
struct xe_ttm_stolen_mgr *mgr;
214214
u64 stolen_size, io_size;
215215
int err;
216216

217-
if (!mgr) {
218-
drm_dbg_kms(&xe->drm, "Stolen mgr init failed\n");
219-
return;
220-
}
217+
mgr = drmm_kzalloc(&xe->drm, sizeof(*mgr), GFP_KERNEL);
218+
if (!mgr)
219+
return -ENOMEM;
221220

222221
if (IS_SRIOV_VF(xe))
223222
stolen_size = 0;
@@ -230,7 +229,7 @@ void xe_ttm_stolen_mgr_init(struct xe_device *xe)
230229

231230
if (!stolen_size) {
232231
drm_dbg_kms(&xe->drm, "No stolen memory support\n");
233-
return;
232+
return 0;
234233
}
235234

236235
/*
@@ -246,14 +245,16 @@ void xe_ttm_stolen_mgr_init(struct xe_device *xe)
246245
io_size, PAGE_SIZE);
247246
if (err) {
248247
drm_dbg_kms(&xe->drm, "Stolen mgr init failed: %i\n", err);
249-
return;
248+
return err;
250249
}
251250

252251
drm_dbg_kms(&xe->drm, "Initialized stolen memory support with %llu bytes\n",
253252
stolen_size);
254253

255254
if (io_size)
256255
mgr->mapping = devm_ioremap_wc(&pdev->dev, mgr->io_base, io_size);
256+
257+
return 0;
257258
}
258259

259260
u64 xe_ttm_stolen_io_offset(struct xe_bo *bo, u32 offset)

drivers/gpu/drm/xe/xe_ttm_stolen_mgr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ struct ttm_resource;
1212
struct xe_bo;
1313
struct xe_device;
1414

15-
void xe_ttm_stolen_mgr_init(struct xe_device *xe);
15+
int xe_ttm_stolen_mgr_init(struct xe_device *xe);
1616
int xe_ttm_stolen_io_mem_reserve(struct xe_device *xe, struct ttm_resource *mem);
1717
bool xe_ttm_stolen_cpu_access_needs_ggtt(struct xe_device *xe);
1818
u64 xe_ttm_stolen_io_offset(struct xe_bo *bo, u32 offset);

0 commit comments

Comments
 (0)