Skip to content

Commit 16dd7e0

Browse files
larunbestevenprice-arm
authored andcommitted
drm/panfrost: Handle inexistent GPU during probe
Just in case we're dealing with a yet not recognised device. Reviewed-by: Steven Price <steven.price@arm.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Signed-off-by: Adrián Larumbe <adrian.larumbe@collabora.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Link: https://lore.kernel.org/r/20251019145225.3621989-3-adrian.larumbe@collabora.com Signed-off-by: Steven Price <steven.price@arm.com>
1 parent 5c0c825 commit 16dd7e0

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

drivers/gpu/drm/panfrost/panfrost_gpu.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,9 +240,10 @@ static const struct panfrost_model gpu_models[] = {
240240
/* MediaTek MT8188 Mali-G57 MC3 */
241241
GPU_MODEL(g57, 0x9093,
242242
GPU_REV(g57, 0, 0)),
243+
{0},
243244
};
244245

245-
static void panfrost_gpu_init_features(struct panfrost_device *pfdev)
246+
static int panfrost_gpu_init_features(struct panfrost_device *pfdev)
246247
{
247248
u32 gpu_id, num_js, major, minor, status, rev;
248249
const char *name = "unknown";
@@ -327,6 +328,12 @@ static void panfrost_gpu_init_features(struct panfrost_device *pfdev)
327328
break;
328329
}
329330

331+
if (!model->name) {
332+
dev_err(pfdev->base.dev, "GPU model not found: mali-%s id rev %#x %#x\n",
333+
name, gpu_id, rev);
334+
return -ENODEV;
335+
}
336+
330337
bitmap_from_u64(pfdev->features.hw_features, hw_feat);
331338
bitmap_from_u64(pfdev->features.hw_issues, hw_issues);
332339

@@ -347,6 +354,8 @@ static void panfrost_gpu_init_features(struct panfrost_device *pfdev)
347354

348355
dev_info(pfdev->base.dev, "shader_present=0x%0llx l2_present=0x%0llx",
349356
pfdev->features.shader_present, pfdev->features.l2_present);
357+
358+
return 0;
350359
}
351360

352361
void panfrost_cycle_counter_get(struct panfrost_device *pfdev)
@@ -489,7 +498,9 @@ int panfrost_gpu_init(struct panfrost_device *pfdev)
489498
if (err)
490499
return err;
491500

492-
panfrost_gpu_init_features(pfdev);
501+
err = panfrost_gpu_init_features(pfdev);
502+
if (err)
503+
return err;
493504

494505
err = dma_set_mask_and_coherent(pfdev->base.dev,
495506
DMA_BIT_MASK(FIELD_GET(0xff00,

0 commit comments

Comments
 (0)