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.
Also,
Reviewed-by: Nicolai Stange <nicstange@xxxxxxxxx>
if you want.
Thanks,
Nicolai