Hi Saravana, On Mon, Sep 27, 2021 at 8:07 PM Saravana Kannan <saravanak@xxxxxxxxxx> wrote: > On Mon, Sep 27, 2021 at 1:08 AM Krzysztof Kozlowski > <krzysztof.kozlowski@xxxxxxxxxxxxx> wrote: > > On 25/09/2021 04:17, Saravana Kannan wrote: > > > On Tue, Sep 21, 2021 at 1:25 AM Krzysztof Kozlowski > > > <krzysztof.kozlowski@xxxxxxxxxxxxx> wrote: > > >> On 21/09/2021 10:11, Lee Jones wrote: > > >>> On Tue, 21 Sep 2021, Krzysztof Kozlowski wrote: > > >>>> On 20/09/2021 21:03, Will McVicker wrote: > > >>>>> This patch series tries to address the issue of ARCH_EXYNOS force selecting > > >>>>> a handful of drivers without allowing the vendor to override any of the > > >>>>> default configs. This takes away from the flexibilty of compiling a generic > > >>>>> kernel with exynos kernel modules. For example, it doesn't allow vendors to > > >>>>> modularize these drivers out of the core kernel in order to share a generic > > >>>>> kernel image across multiple devices that require device-specific kernel > > >>>>> modules. > > >>>> > > >>>> You do not address the issue in these patches. The problem you describe > > >>>> is that drivers are not modules and you are not changing them into modules. > > >>> > > >>> The wording is unfortunate. The reason for this change doesn't have > > >>> much to do with kernel modules. > > >>> > > >>> Let's go back in time 18 months or so when Greg KH submitted this [0] > > >>> patch, which you Acked. Greg was trying to solve the problem of not > > >>> having to enable ARCH_EXYNOS on kernels which are designed to be > > >>> platform agnostic (sometimes called Generic Kernels). For some reason > > >>> SERIAL_SAMSUNG is the only symbol with these dependencies, so the > > >>> solution seemed simple and straight forward at the time. > > >>> > > >>> However, For sound reasons Geert NACKed the patch. > > >>> > > >>> Quoting from [1] he says: > > >>> > > >>> "A generic kernel will include Samsung SoC support, hence > > >>> PLAT_SAMSUNG or ARCH_EXYNOS will be enabled." > > >> > > >> Yes, it's correct reasoning. There is also one more use-case - > > >> non-upstreamed (out of tree) platform which wants to use Exynos-specific > > >> drivers. Something like was happening with Apple M1 except that it got > > >> upstreamed and we do not care much about out-of-tree. > > >> > > >>> > > >>> However, since the entry for ARCH_EXYNOS *insists* on building-in a > > >>> bunch of other symbols (via 'select') which will be unused in most > > >>> cases, this is not a currently acceptable approach for many Generic > > >>> Kernels due to size constraints. > > >> > > >> In the mainline kernel there is no such use case. If you want to have > > >> Exynos-whatever-driver (e.g. SERIAL_SAMSUNG or S3C RTC), you should > > >> select ARCH_EXYNOS because otherwise it does not make any sense. Zero > > >> sense. Such kernel won't work. > > >> > > >> It makes sense only if there is some other work, hidden here, where > > >> someone might want to have SERIAL_SAMSUNG or S3C RTC without > > >> ARCH_EXYNOS. Although GKI is not that work because GKI kernel will > > >> select ARCH_EXYNOS. It must select ARCH_EXYNOS if it wants to support > > >> Exynos platforms. > > >> > > >> Therefore I expect first to bring this "some other work, hidden here" to > > >> broader audience, so we can review its use case. > > >> > > >>> > > >>> What this patch does is migrates those symbols from being 'select'ed > > >>> (always built-in with no recourse) to 'default y'. Where the former > > >>> cannot be over-ridden, but the latter can be via a vendor's > > >>> defconfig/fragment. > > >> > > >> It cannot be overridden by vendor fragment because options are not > > >> visible. You cannot change them. > > >> > > >> The patch does nothing in this regard (making them selectable/possible > > >> to disable), which is why I complained. > > >> > > >>> > > >>> I doubt many (any?) of these symbols can be converted to kernel > > >>> modules anyway, as they are required very early on in the boot > > >>> sequence. > > >> > > >> True, some could, some not. Also some platforms are set up via > > >> bootloader, so actually could "survive" till module is loaded from some > > >> initrd. > > > > > > I was trying to chime in, but the discussion got spread out across all > > > the patches. Since the cover letter seems to have everyone, I thought > > > I'd reply here. Hope you don't mind. I'll try to respond/chime in on > > > the various topics that were raised across the patches. > > > > > > Yes, the next patch series would To/Cc folks correctly. William simply > > > forgot to use the --to-cover and --cc-cover options when using git > > > send-email. > > > > > > I agree with you that it doesn't make sense to have ARCH_EXYNOS > > > enabled but to have all the clock drivers exynos compiled out. Then > > > one obviously can't boot an exynos platform using that kernel. > > > > If downstream kernel does not use any upstream platforms (e.g. > > Exynos5433 or Exynos7) and has its own drivers for everything, then > > downstream does not even need ARCH_EXYNOS. Just disable it. > > As Geert pointed out in another reply, that prevents the use of > earlyconsole on an exynos SoC + fully modular generic kernel. Are we > okay with removing the ARCH_EXYNOS dependency on the early console > driver now? IMHO not in upstream, as there is no upstream use yet for not having the dependencies. Even if there was, I think it is good to have dependencies like ARCH_EXYNOS, as they let us partition the (19000, as Arnd said recently) Kconfig symbols into better manageable groups. Without these, we cannot do better than "depends on ARM || ARM64 || COMPILE_TEST". Greg says that's what defconfig files are for, but the arm64 policy is to have a single defconfig file only. But thanks to the ARCH_* symbol, you can take arm64 defconfig, disable the ARCH_* symbols not applicable to your platform, and have a good start for a config file tailored to your platform. Note that works for the arm multi_v*_defconfigs, too. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds