From: Anil S Keshavamurthy anil.s.keshavamurthy@intel.com
[ Upstream commit c937969a503ebf45e0bebafee4122db22b0091bd ]
A new IAA device ID, 0xfd2d, is introduced across all Wildcat Lake family platforms. Add the device ID to the IDXD driver.
Signed-off-by: Anil S Keshavamurthy anil.s.keshavamurthy@intel.com Signed-off-by: Vinicius Costa Gomes vinicius.gomes@intel.com Reviewed-by: Dave Jiang dave.jiang@intel.com Link: https://lore.kernel.org/r/20250801215936.188555-1-vinicius.gomes@intel.com Signed-off-by: Vinod Koul vkoul@kernel.org Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
YES
- User impact: This enables the IDXD (IAA/IAX) driver to bind to Wildcat Lake (WCL) IAA devices (PCI ID 0xfd2d). Without it, systems with this hardware won’t get driver support, which is a practical user-visible gap for those platforms. - Change scope: Extremely small and contained. It only adds one PCI device ID constant and one table entry to match that ID to the existing IAA/IAX driver flow. - `drivers/dma/idxd/registers.h`: Adds `#define PCI_DEVICE_ID_INTEL_IAA_WCL 0xfd2d`, introducing the new PCI ID without altering any logic. - `drivers/dma/idxd/init.c`: Adds `{ PCI_DEVICE_DATA(INTEL, IAA_WCL, &idxd_driver_data[IDXD_TYPE_IAX]) },` to `idxd_pci_tbl[]`, mapping the new device ID to the already-existing IAA/IAX handling path (`IDXD_TYPE_IAX`). - No architectural changes: The driver’s behavior, register handling, and completion record layouts are unchanged. The new entry reuses the same `idxd_driver_data[IDXD_TYPE_IAX]` path, which already sets `cr_status_off`, `cr_result_off`, and `.load_device_defaults = idxd_load_iaa_device_defaults` for IAA devices (see `drivers/dma/idxd/init.c` context around `idxd_driver_data[]`). This indicates the new device is expected to be compatible with the existing IAA v1.0 programming model. - Minimal regression risk: The only effect is that the driver now binds to devices reporting PCI ID 0xfd2d. No code paths for existing supported devices change; IRQ/MSI-X setup and all other logic remain untouched (the surrounding `idxd_setup_interrupts()` code is unchanged in `drivers/dma/idxd/init.c`). - No side effects beyond enablement: No new kernel APIs, no user-visible ABI changes, no feature additions beyond recognizing new hardware. - Stable policy fit: Even though the commit message doesn’t explicitly Cc stable or carry a Fixes tag, adding a PCI ID to support a compatible device is a common, low-risk backport to stable trees and often accepted to support shipping hardware. - Preconditions for backport: The target stable series must already include the IDXD IAA/IAX support path (e.g., existing `IDXD_TYPE_IAX` infrastructure, IAA default loader, and related completion record definitions). If those are present (as implied by existing entries like `IAA_DMR` and `IAA_PTL` in `drivers/dma/idxd/init.c`), this is a clean, standalone enablement.
Conclusion: This is a classic, low-risk enablement-only change; it should be backported to stable so that WCL IAA hardware works out of the box.
drivers/dma/idxd/init.c | 2 ++ drivers/dma/idxd/registers.h | 1 + 2 files changed, 3 insertions(+)
diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c index 8c4725ad1f648..2acc34b3daff8 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -80,6 +80,8 @@ static struct pci_device_id idxd_pci_tbl[] = { { PCI_DEVICE_DATA(INTEL, IAA_DMR, &idxd_driver_data[IDXD_TYPE_IAX]) }, /* IAA PTL platforms */ { PCI_DEVICE_DATA(INTEL, IAA_PTL, &idxd_driver_data[IDXD_TYPE_IAX]) }, + /* IAA WCL platforms */ + { PCI_DEVICE_DATA(INTEL, IAA_WCL, &idxd_driver_data[IDXD_TYPE_IAX]) }, { 0, } }; MODULE_DEVICE_TABLE(pci, idxd_pci_tbl); diff --git a/drivers/dma/idxd/registers.h b/drivers/dma/idxd/registers.h index 9c1c546fe443e..0d84bd7a680b7 100644 --- a/drivers/dma/idxd/registers.h +++ b/drivers/dma/idxd/registers.h @@ -10,6 +10,7 @@ #define PCI_DEVICE_ID_INTEL_DSA_DMR 0x1212 #define PCI_DEVICE_ID_INTEL_IAA_DMR 0x1216 #define PCI_DEVICE_ID_INTEL_IAA_PTL 0xb02d +#define PCI_DEVICE_ID_INTEL_IAA_WCL 0xfd2d
#define DEVICE_VERSION_1 0x100 #define DEVICE_VERSION_2 0x200