On Thu, Jan 25, 2018 at 5:32 PM, Sinan Kaya <okaya@xxxxxxxxxxxxxx> wrote: > On 1/25/2018 11:25 AM, Rafael J. Wysocki wrote: >> On Thu, Jan 25, 2018 at 4:43 PM, Sinan Kaya <okaya@xxxxxxxxxxxxxx> wrote: >>> From: Auger Eric <eric.auger@xxxxxxxxxx> >>> >>> If I2C is built as a module, ACPI_I2C_OPREGION cannot be set >>> and any ACPI opregion calls targeting I2C fail with no opregion found. >>> >>> Commit da3c6647ee08 ("I2C/ACPI: Clean up I2C ACPI code and Add >>> CONFIG_I2C_ACPI config") says following: >>> >>> "Current there is a race between removing I2C ACPI operation region >>> and ACPI AML code accessing." >>> >>> This patch forces core I2C support to be compiled as a built-in >>> module if ACPI is selected as code is not ready for dynamic module >>> removal. >>> >>> Signed-off-by: Eric Auger <eric.auger@xxxxxxxxxx> >>> Signed-off-by: Sinan Kaya <okaya@xxxxxxxxxxxxxx> >>> --- >>> drivers/acpi/Kconfig | 2 ++ >>> 1 file changed, 2 insertions(+) >>> >>> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig >>> index 4650539..5b48098 100644 >>> --- a/drivers/acpi/Kconfig >>> +++ b/drivers/acpi/Kconfig >>> @@ -9,6 +9,8 @@ menuconfig ACPI >>> depends on IA64 || X86 || ARM64 >>> depends on PCI >>> select PNP >>> + # force building I2C in on ACPI systems, for opregion availability >>> + imply I2C >>> default y if (IA64 || X86) >>> help >>> Advanced Configuration and Power Interface (ACPI) support for >>> -- >> >> I'm not sure how much this helps. >> >> I2C opregions will only work if the requisite I2C controller driver is >> present anyway and this change doesn't guarantee that AFAIC> >> OTOH, there are systems using ACPI without I2C opregions, so are we >> really better off by forcing everybody using ACPI to also build I2C? > > I was trying to find a good balance by choosing imply instead of select. > > If an OS chooses to include an I2C driver as a module (most distros do), > core-i2c functionality becomes a built-in module with ACPI. So what would be wrong with allowing ACPI_I2C_OPREGION to be set if I2C is a module?