[PATCH] i2c: piix4: Add ACPI region conflict allowlist for Gigabyte X870 EAGLE WIFI7

From: Guntis Belkovskis

Date: Wed Aug 12 2026 - 16:43:14 EST


On the Gigabyte X870 EAGLE WIFI7 motherboard, the ACPI DSDT declares
the SMBus I/O ports (0x0B00 and 0x0B20) inside the _CRS method of
\_SB.PCI0.S900 to report motherboard resource consumption.

Inspection of the disassembled DSDT confirms that the firmware does not
declare an OperationRegion over this range or execute any runtime AML
methods against these ports. However, acpi_check_region() fails due to the
static resource reservation, preventing i2c-piix4 from binding and blocking
access to the DDR5 SPD and auxiliary controllers.

Add a DMI allowlist entry for this motherboard so i2c-piix4 can safely
bind and probe the SMBus. Verified working on physical hardware.

Signed-off-by: Guntis Belkovskis <guntis.belkovskis@xxxxxxxxx>
---
drivers/i2c/busses/i2c-piix4.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c
index 7b6a4e201..33d4b0331 100644
--- a/drivers/i2c/busses/i2c-piix4.c
+++ b/drivers/i2c/busses/i2c-piix4.c
@@ -136,6 +136,18 @@ static const struct dmi_system_id piix4_dmi_ibm[] = {
{ }
};

+/* Allowlist for boards where ACPI reserves SMBus I/O in _CRS without active AML access */
+static const struct dmi_system_id piix4_dmi_acpi_allowlist[] = {
+ {
+ .ident = "GIGABYTE X870 EAGLE WIFI7",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."),
+ DMI_MATCH(DMI_BOARD_NAME, "X870 EAGLE WIFI7"),
+ },
+ },
+ { }
+};
+
/*
* SB800 globals
*/
@@ -403,8 +415,11 @@ static int piix4_setup_sb800(struct pci_dev *PIIX4_dev,
if (retval)
return retval;

- if (acpi_check_region(piix4_smba, SMBIOSIZE, piix4_driver.name))
- return -ENODEV;
+ if (acpi_check_region(piix4_smba, SMBIOSIZE, piix4_driver.name)) {
+ if (!dmi_check_system(piix4_dmi_acpi_allowlist)) {
+ return -ENODEV;
+ }
+ }

if (!request_region(piix4_smba, SMBIOSIZE, piix4_driver.name)) {
dev_err(&PIIX4_dev->dev, "SMBus region 0x%x already in use!\n",
--
2.55.0