Re: [PATCH v3] ACPI: Force I2C to be selected as a built-in module

From: Rafael J. Wysocki
Date: Thu Jan 25 2018 - 11:57:47 EST


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?