On Thu, Jan 25, 2018 at 5:53 PM, Sinan Kaya <okaya@xxxxxxxxxxxxxx> wrote: > On 1/25/2018 11:47 AM, Rafael J. Wysocki wrote: >> 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? > > That was the original patch. Folks are saying that it breaks some systems. > > Conversation is here: > > https://patchwork.kernel.org/patch/10142425/ Couldn't that be addressed by preventing the I2C module from being unloaded in the relevant cases?