Re: [PATCH] ACPI: Use ACPI companion to match only the first physical device

From: Jarkko Nikula
Date: Fri Oct 24 2014 - 06:08:41 EST


On 10/24/2014 12:12 PM, Mika Westerberg wrote:
Commit 6ab3430129e2 ("mfd: Add ACPI support") made the MFD subdevices to
share the parent MFD ACPI companion device if no _HID/_CID is specified for
the subdevice in mfd_cell description. However, since all the subdevices
share the ACPI companion, the match and modalias generation logic started
to use the ACPI companion as well resulting this:

# cat /sys/bus/platform/devices/HID-SENSOR-200041.6.auto/modalias
acpi:INT33D1:PNP0C50:

instead of the expected one

# cat /sys/bus/platform/devices/HID-SENSOR-200041.6.auto/modalias
platform:HID-SENSOR-200041

In other words the subdevice modalias is overwritten by the one taken from
ACPI companion. This causes udev not to load the driver anymore.

It is useful to be able to share the ACPI companion so that MFD subdevices
(and possibly other devices as well) can access the ACPI resources even if
they do not have ACPI representation in the namespace themselves.

An example where this is used is Minnowboard LPC driver that creates GPIO
as a subdevice among other things. Without the ACPI companion gpiolib is
not is not able to lookup the corresponding GPIO controller from ACPI
GpioIo resource.

To fix this we restrict the match and modalias logic to be limited to the
first physical device. The secondary devices will still be able to access
the ACPI companion but they will be matched using traditional way.

Reported-by: Jarkko Nikula <jarkko.nikula@xxxxxxxxxxxxxxx>
Signed-off-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
---
Hi,

This is a regression in v3.18-rc1+ and prevents udev from loading the
modules in question. Alternative to this we can revert 6ab3430129e2 but
then Minnowboard GPIOs do not work anymore.

drivers/acpi/scan.c | 71 +++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 55 insertions(+), 16 deletions(-)

Tested-by: Jarkko Nikula <jarkko.nikula@xxxxxxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/