Re: [PATCH v2] i2c / ACPI: Do not touch an I2C device if it belongs to another adapter

From: Nicolai Stange
Date: Tue Sep 20 2016 - 14:49:46 EST

Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> writes:

> When enumerating I2C devices connected to an I2C adapter we scan the whole
> namespace (as it is possible to have devices anywhere in that namespace,
> not just below the I2C adapter device) and add each found device to the I2C
> bus in question.
> Now after commit 525e6fabeae2 ("i2c / ACPI: add support for ACPI
> reconfigure notifications") checking of the adapter handle to the one found
> in the I2cSerialBus() resource was moved to happen after resources of the
> I2C device has been parsed. This means that if the I2cSerialBus() resource
> points to an adapter that does not exists in the system we still parse
> those resources. This is problematic in particular because
> acpi_dev_resource_interrupt() tries to configure GSI if the device also has
> an Interrupt() resource. Failing to do that results errrors like this to be
> printed on the console:
> [ 10.409490] ERROR: Unable to locate IOAPIC for GSI 37
> To fix this we pass the I2C adapter to i2c_acpi_get_info() and make sure
> the handle matches the one in the I2cSerialBus() resource before doing
> anything else to the device.
> Reported-and-tested-by: Nicolai Stange <nicstange@xxxxxxxxx>

I've just retested this v2 explicitly and it works like a charm.


Reviewed-by: Nicolai Stange <nicstange@xxxxxxxxx>

if you want.