Hi Hector, I had an idea today that you might like better. In your proposed patch to share the SMBus with the BIOS, the kernel will lock itself out of the SMBus if the BIOS uses it unsafely. What if we add a module parameter to instead return -EPERM in i801_acpi_io_handler, effectively locking the BIOS out of the SMBus instead of locking the kernel out? I tried hacking that behavior in and so far it's working well on my troublesome machine. -Alex diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index 8020b6b97..442eef67a 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c @@ -1629,6 +1629,9 @@ i801_acpi_io_handler(u32 function, acpi_physical_address address, u32 bits, mutex_lock(&priv->acpi_lock); if (!priv->acpi_reserved && i801_acpi_is_smbus_ioport(priv, address)) { + mutex_unlock(&priv->acpi_lock); + return -EPERM; + priv->acpi_reserved = true; dev_warn(&pdev->dev, "BIOS is accessing SMBus registers\n");