Re: [PATCH v1 1/4] clk: samsung: change COMMON_CLK_SAMSUNG default config logic

From: Krzysztof Kozlowski
Date: Tue Sep 21 2021 - 04:35:57 EST


On 21/09/2021 09:50, Geert Uytterhoeven wrote:
> On Tue, Sep 21, 2021 at 9:31 AM Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote:
>> On 20/09/2021 21:03, Will McVicker wrote:
>>> COMMON_CLK_SAMSUNG is selected by ARCH_EXYNOS which forces this config
>>> to be built-in when ARCH_EXYNOS is enabled. Switch the logic to use a
>>> "default y if ARCH_EXYNOS" to provide flexibilty for vendors to disable
>>> or modularize this driver.
>>
>> The clock drivers are essential, you cannot disable them for a generic
>> kernel supporting ARCH_EXYNOS. Such kernel won't work properly on platforms.
>
> Obviously it's not gonna work if the clock driver is not enabled
> at all. But does it work if you make the clock driver modular, and
> put it with all other essential driver modules in initramfs? Debugging
> would be hard, as the serial console driver also relies on clocks
> and PM Domains etc.

The kernel could boot without clock drivers (default settings from
bootloader), probe clocks from initramfs and proceed with rootfs from
eMMC/SD/net.

In theory.

However I have no reports that it ever worked. If there is such working
upstream configuration, I don't mind here. Just please explain this in
the commit msg.

>
> If not, this patch should be NAKed, until it works with a modular
> clock driver.
>
> If yes, perhaps another line should be added (_before_ the other line)?
>
> + default m if ARCH_EXYNOS && MODULES
> default y if ARCH_EXYNOS
>
> However, many developers may want MODULES=y, but not want to bother
> with an initramfs. So perhaps we need a new symbol
> MINIMUM_GENERIC_KERNEL or so, protected by EXPERT, and make the
> driver default to m if that is enabled?

Yeah, that's indeed a problem to solve. For most users (and distros)
building kernel for Exynos this should be built-in by default.

Anyway, the option is non-selectable so it cannot be converted to "m" or
disabled. And this is claimed in the commit msg:
"provide flexibilty for vendors to disable or modularize this driver."

The commit does not achieve it.

Best regards,
Krzysztof