From ddd12f2f3eb129b3dac9e14bd646ce07f1abf08e Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Sat, 23 May 2026 13:18:17 +0200 Subject: [PATCH] loader: check if the kernel driver is amdgpu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows using drm-shim for an emulated driver in AMD GPU host. Otherwise we need to set MESA_LOADER_DRIVER_OVERRIDE to the emulated driver in order to make it working. Signed-off-by: Juan A. Suarez Romero Acked-by: Iago Toral Quiroga Reviewed-by: Marek Olšák Part-of: --- src/loader/loader.c | 10 ++++++++++ src/loader/pci_id_driver_map.h | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/loader/loader.c b/src/loader/loader.c index 6b958c069ad..71c6bd94cd8 100644 --- a/src/loader/loader.c +++ b/src/loader/loader.c @@ -124,6 +124,16 @@ loader_get_kernel_driver_name(int fd) return driver; } +bool +amd_predicate(int fd, const char *driver) +{ + char *kernel_driver = loader_get_kernel_driver_name(fd); + bool ret = kernel_driver && (strcmp(kernel_driver, "amdgpu") == 0); + + free(kernel_driver); + return ret; +} + bool iris_predicate(int fd, const char *driver) { diff --git a/src/loader/pci_id_driver_map.h b/src/loader/pci_id_driver_map.h index b6febe4f53a..38c9b97f45b 100644 --- a/src/loader/pci_id_driver_map.h +++ b/src/loader/pci_id_driver_map.h @@ -44,6 +44,7 @@ static const int vmwgfx_chip_ids[] = { #undef CHIPSET }; +bool amd_predicate(int fd, const char *driver); bool iris_predicate(int fd, const char *driver); bool nouveau_zink_predicate(int fd, const char *driver); @@ -59,7 +60,7 @@ static const struct { { 0x8086, "iris", NULL, -1, iris_predicate }, { 0x1002, "r300", r300_chip_ids, ARRAY_SIZE(r300_chip_ids) }, { 0x1002, "r600", r600_chip_ids, ARRAY_SIZE(r600_chip_ids) }, - { 0x1002, "radeonsi", NULL, -1 }, + { 0x1002, "radeonsi", NULL, -1, amd_predicate }, { 0x10de, "nouveau", NULL, -1, nouveau_zink_predicate }, { 0x10de, "zink", NULL, -1, nouveau_zink_predicate }, { 0x1af4, "virtio_gpu", virtio_gpu_chip_ids, ARRAY_SIZE(virtio_gpu_chip_ids) },