From 47ed12f483e2fff8daad30a6c0536005e48aa55f Mon Sep 17 00:00:00 2001 From: Vasilito Date: Sat, 18 Apr 2026 21:38:31 +0100 Subject: [PATCH] Fix AMDGPU recipe glue assumptions --- local/recipes/gpu/amdgpu/recipe.toml | 13 ++++++------- local/recipes/gpu/amdgpu/source/redox_glue.h | 14 ++++++++++++++ local/recipes/gpu/amdgpu/source/redox_stubs.c | 13 +++++++++++++ 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/local/recipes/gpu/amdgpu/recipe.toml b/local/recipes/gpu/amdgpu/recipe.toml index 42c1c32f..633c40cd 100644 --- a/local/recipes/gpu/amdgpu/recipe.toml +++ b/local/recipes/gpu/amdgpu/recipe.toml @@ -18,13 +18,13 @@ script = """ DYNAMIC_INIT # Paths -AMD_ROOT="${COOKBOOK_SOURCE}/../amdgpu-source/gpu/drm/amd" +AMD_ROOT="${COOKBOOK_SOURCE}/../../amdgpu-source/gpu/drm/amd" AMD_SRC="${AMD_ROOT}" -TTM_SRC="${COOKBOOK_SOURCE}/../amdgpu-source/gpu/drm/ttm" -INCLUDES="${COOKBOOK_SOURCE}/../amdgpu-source/include" -LINUX_KPI="${COOKBOOK_SYSROOT}/include/linux-kpi" +TTM_SRC="${COOKBOOK_SOURCE}/../../amdgpu-source/gpu/drm/ttm" +INCLUDES="${COOKBOOK_SOURCE}/../../amdgpu-source/include" +LINUX_KPI="${COOKBOOK_ROOT}/local/recipes/drivers/linux-kpi/source/src/c_headers" REDOX_GLUE="${COOKBOOK_SOURCE}" -TARGET_CC="${COOKBOOK_TARGET}-gcc" +TARGET_CC="${TARGET}-gcc" # Compiler flags for AMD driver — DML2 enabled export CFLAGS="-D__redox__ -D__KERNEL__ -DCONFIG_DRM_AMDGPU -DCONFIG_DRM_AMD_DC \ @@ -132,8 +132,7 @@ if [ -z "$OBJS" ]; then echo "ERROR: no object files compiled successfully" exit 1 fi -"${TARGET_CC}" -shared -o libamdgpu_dc_redox.so $OBJS \ - -lredox_driver_sys -llinux_kpi -lm -lpthread +"${TARGET_CC}" -shared -o libamdgpu_dc_redox.so $OBJS -lm -lpthread # Install mkdir -p "${COOKBOOK_STAGE}/usr/lib/redox/drivers" diff --git a/local/recipes/gpu/amdgpu/source/redox_glue.h b/local/recipes/gpu/amdgpu/source/redox_glue.h index a675f4fb..bab6dc83 100644 --- a/local/recipes/gpu/amdgpu/source/redox_glue.h +++ b/local/recipes/gpu/amdgpu/source/redox_glue.h @@ -261,6 +261,20 @@ extern void redox_pci_release_regions(struct pci_dev *pdev); #define pci_resource_flags(pdev, bar) ((pdev)->resource_flags[(bar)]) #define pci_resource_end(pdev, bar) ((pdev)->resource_start[(bar)] + (pdev)->resource_len[(bar)] - 1) +extern u64 pci_get_quirk_flags(struct pci_dev *dev); +extern bool pci_has_quirk(struct pci_dev *dev, u64 flag); + +#define PCI_QUIRK_NO_MSI (1ULL << 0) +#define PCI_QUIRK_NO_MSIX (1ULL << 1) +#define PCI_QUIRK_FORCE_LEGACY (1ULL << 2) +#define PCI_QUIRK_NO_PM (1ULL << 3) +#define PCI_QUIRK_NO_D3COLD (1ULL << 4) +#define PCI_QUIRK_NO_ASPM (1ULL << 5) +#define PCI_QUIRK_NEED_IOMMU (1ULL << 6) +#define PCI_QUIRK_DMA_32BIT_ONLY (1ULL << 8) +#define PCI_QUIRK_NEED_FIRMWARE (1ULL << 11) +#define PCI_QUIRK_DISABLE_ACCEL (1ULL << 12) + #define IORESOURCE_MEM 0x00000200U #define IORESOURCE_IO 0x00000100U #define IORESOURCE_MEM_64 0x00040000U diff --git a/local/recipes/gpu/amdgpu/source/redox_stubs.c b/local/recipes/gpu/amdgpu/source/redox_stubs.c index 9b166813..04052005 100644 --- a/local/recipes/gpu/amdgpu/source/redox_stubs.c +++ b/local/recipes/gpu/amdgpu/source/redox_stubs.c @@ -296,6 +296,19 @@ void redox_pci_release_regions(struct pci_dev *pdev) (void)pdev; } +u64 pci_get_quirk_flags(struct pci_dev *pdev) +{ + (void)pdev; + return 0; +} + +bool pci_has_quirk(struct pci_dev *pdev, u64 flag) +{ + (void)pdev; + (void)flag; + return false; +} + int redox_request_firmware(const struct firmware **fw, const char *name, void *dev) { char path[512];