2022-07-12 17:04:32

by Florian Fainelli

[permalink] [raw]
Subject: [PATCH] arm64: Kconfig.platforms: Re-organized Broadcom menu

There are now multiple Broadcom SoCs supported so group them under their
own menu such that the selection is visually more appealing and we can
easily add new platforms there in the future. This allows us to move
ARCH_BRCMSTB back to its siblings.

No functional changes introduced.

Signed-off-by: Florian Fainelli <[email protected]>
---

Note this is based on "arm64: bcmbca: add arch bcmbca machine entry"

arch/arm64/Kconfig.platforms | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
index 88ddc2e5b152..c8c15f611d4e 100644
--- a/arch/arm64/Kconfig.platforms
+++ b/arch/arm64/Kconfig.platforms
@@ -33,6 +33,11 @@ config ARCH_APPLE
This enables support for Apple's in-house ARM SoC family, starting
with the Apple M1.

+menuconfig ARCH_BCM
+ bool "Broadcom SoC Support"
+
+if ARCH_BCM
+
config ARCH_BCM2835
bool "Broadcom BCM2835 family"
select TIMER_OF
@@ -72,6 +77,16 @@ config ARCH_BCMBCA
This enables support for Broadcom BCA ARM-based broadband chipsets,
including the DSL, PON and Wireless family of chips.

+config ARCH_BRCMSTB
+ bool "Broadcom Set-Top-Box SoCs"
+ select ARCH_HAS_RESET_CONTROLLER
+ select GENERIC_IRQ_CHIP
+ select PINCTRL
+ help
+ This enables support for Broadcom's ARMv8 Set Top Box SoCs
+
+endif
+
config ARCH_BERLIN
bool "Marvell Berlin SoC Family"
select DW_APB_ICTL
@@ -86,14 +101,6 @@ config ARCH_BITMAIN
help
This enables support for the Bitmain SoC Family.

-config ARCH_BRCMSTB
- bool "Broadcom Set-Top-Box SoCs"
- select ARCH_HAS_RESET_CONTROLLER
- select GENERIC_IRQ_CHIP
- select PINCTRL
- help
- This enables support for Broadcom's ARMv8 Set Top Box SoCs
-
config ARCH_EXYNOS
bool "ARMv8 based Samsung Exynos SoC family"
select COMMON_CLK_SAMSUNG
--
2.25.1


2022-07-13 08:41:16

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] arm64: Kconfig.platforms: Re-organized Broadcom menu

On Tue, Jul 12, 2022 at 6:42 PM Florian Fainelli <[email protected]> wrote:
>
> There are now multiple Broadcom SoCs supported so group them under their
> own menu such that the selection is visually more appealing and we can
> easily add new platforms there in the future. This allows us to move
> ARCH_BRCMSTB back to its siblings.
>
> No functional changes introduced.
>
> Signed-off-by: Florian Fainelli <[email protected]>
> ---
>
> Note this is based on "arm64: bcmbca: add arch bcmbca machine entry"

Hi Florian,

So far, we have tried to keep the Kconfig.platforms file rather coarse-grained,
mainly limiting it to company names and high-level families, but avoiding
sub-menus or adding too many sub-families.

If we add per-vendor submenus, we should probably first decide how we
want to structure this across vendors. I've added maintainers and lists to
Cc for a couple of the ones that are in a similar situation.

I can see a couple of ways we can do this:

a) keep the list of platforms as short as possible, combining related
SoC families from a single vendor wherever possible, but no sub-menus
(same as today)

b) Always use sub-menus when there is more than one family, but
keep relatively coarse platform selection.

c) Use sub-menus and also move to a more fine-grained SoC
selection, similar to what we have on 32-bit arm.

I would not really want to go to c), but a) and b) both make sense to
me as long as do it consistently across all platforms.

Any other ideas or opinions?

Arnd

2022-07-13 08:57:46

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH] arm64: Kconfig.platforms: Re-organized Broadcom menu

On 13/07/2022 10:25, Arnd Bergmann wrote:
> On Tue, Jul 12, 2022 at 6:42 PM Florian Fainelli <[email protected]> wrote:
>>
>> There are now multiple Broadcom SoCs supported so group them under their
>> own menu such that the selection is visually more appealing and we can
>> easily add new platforms there in the future. This allows us to move
>> ARCH_BRCMSTB back to its siblings.
>>
>> No functional changes introduced.
>>
>> Signed-off-by: Florian Fainelli <[email protected]>
>> ---
>>
>> Note this is based on "arm64: bcmbca: add arch bcmbca machine entry"
>
> Hi Florian,
>
> So far, we have tried to keep the Kconfig.platforms file rather coarse-grained,
> mainly limiting it to company names and high-level families, but avoiding
> sub-menus or adding too many sub-families.
>
> If we add per-vendor submenus, we should probably first decide how we
> want to structure this across vendors. I've added maintainers and lists to
> Cc for a couple of the ones that are in a similar situation.
>
> I can see a couple of ways we can do this:
>
> a) keep the list of platforms as short as possible, combining related
> SoC families from a single vendor wherever possible, but no sub-menus
> (same as today)
>
> b) Always use sub-menus when there is more than one family, but
> keep relatively coarse platform selection.
>
> c) Use sub-menus and also move to a more fine-grained SoC
> selection, similar to what we have on 32-bit arm.
>
> I would not really want to go to c), but a) and b) both make sense to
> me as long as do it consistently across all platforms.
>
> Any other ideas or opinions?

Whatever we decide here, the SoC can override in drivers/soc, just like
Renesas did. I think Renesas chose option c), but made it in
drivers/soc. I would vote to have consistent policy, so if arch/arm64 is
a) or b), sub-archs should not redefine it in drivers/soc.

Or we could choose d)
d) keep arch/arm64 list of platforms as short as possible, but sub-archs
can do whatever they like on drivers/soc.

Personally, I find fine-grained SoC selection a bit ridiculous
optimization, like compiling kernel, Glibc and userspace with -O3,
-funroll-loops and many other flags. One gets smaller size but looses
multi-platform and ability to test one kernel on different boards.
Therefore I would vote for b) with disallowing drivers/soc defining more
ARCH_ and more SOC_.

Best regards,
Krzysztof

2022-07-13 09:31:16

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH] arm64: Kconfig.platforms: Re-organized Broadcom menu

Hi Krzysztof,

On Wed, Jul 13, 2022 at 10:40 AM Krzysztof Kozlowski
<[email protected]> wrote:
> On 13/07/2022 10:25, Arnd Bergmann wrote:
> > On Tue, Jul 12, 2022 at 6:42 PM Florian Fainelli <[email protected]> wrote:
> >> There are now multiple Broadcom SoCs supported so group them under their
> >> own menu such that the selection is visually more appealing and we can
> >> easily add new platforms there in the future. This allows us to move
> >> ARCH_BRCMSTB back to its siblings.
> >>
> >> No functional changes introduced.
> >>
> >> Signed-off-by: Florian Fainelli <[email protected]>
> >> ---
> >>
> >> Note this is based on "arm64: bcmbca: add arch bcmbca machine entry"
> >
> > Hi Florian,
> >
> > So far, we have tried to keep the Kconfig.platforms file rather coarse-grained,
> > mainly limiting it to company names and high-level families, but avoiding
> > sub-menus or adding too many sub-families.
> >
> > If we add per-vendor submenus, we should probably first decide how we
> > want to structure this across vendors. I've added maintainers and lists to
> > Cc for a couple of the ones that are in a similar situation.
> >
> > I can see a couple of ways we can do this:
> >
> > a) keep the list of platforms as short as possible, combining related
> > SoC families from a single vendor wherever possible, but no sub-menus
> > (same as today)
> >
> > b) Always use sub-menus when there is more than one family, but
> > keep relatively coarse platform selection.
> >
> > c) Use sub-menus and also move to a more fine-grained SoC
> > selection, similar to what we have on 32-bit arm.
> >
> > I would not really want to go to c), but a) and b) both make sense to
> > me as long as do it consistently across all platforms.
> >
> > Any other ideas or opinions?
>
> Whatever we decide here, the SoC can override in drivers/soc, just like
> Renesas did. I think Renesas chose option c), but made it in
> drivers/soc. I would vote to have consistent policy, so if arch/arm64 is
> a) or b), sub-archs should not redefine it in drivers/soc.

We did so because of the "only a single symbol in
arch/arm64/Kconfig.platforms"-policy.

> Or we could choose d)
> d) keep arch/arm64 list of platforms as short as possible, but sub-archs
> can do whatever they like on drivers/soc.
>
> Personally, I find fine-grained SoC selection a bit ridiculous
> optimization, like compiling kernel, Glibc and userspace with -O3,
> -funroll-loops and many other flags. One gets smaller size but looses
> multi-platform and ability to test one kernel on different boards.
> Therefore I would vote for b) with disallowing drivers/soc defining more
> ARCH_ and more SOC_.

No one prevents you from selecting multiple SoCs, they are not
mutually-exclusive...

With arm64 (or risc-v ;-) instead of arm32 being used for all new
SoCs, I expect the real small ones (with a few MiB of embedded
SRAM) to enter the arm64 realm soon. No point in including e.g. all
pinctrl drivers from the vendor if you have barely enough RAM to run
Linux and your app...

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

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

2022-07-13 22:54:22

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH] arm64: Kconfig.platforms: Re-organized Broadcom menu

On 7/13/22 02:17, Geert Uytterhoeven wrote:
> Hi Krzysztof,
>
> On Wed, Jul 13, 2022 at 10:40 AM Krzysztof Kozlowski
> <[email protected]> wrote:
>> On 13/07/2022 10:25, Arnd Bergmann wrote:
>>> On Tue, Jul 12, 2022 at 6:42 PM Florian Fainelli <[email protected]> wrote:
>>>> There are now multiple Broadcom SoCs supported so group them under their
>>>> own menu such that the selection is visually more appealing and we can
>>>> easily add new platforms there in the future. This allows us to move
>>>> ARCH_BRCMSTB back to its siblings.
>>>>
>>>> No functional changes introduced.
>>>>
>>>> Signed-off-by: Florian Fainelli <[email protected]>
>>>> ---
>>>>
>>>> Note this is based on "arm64: bcmbca: add arch bcmbca machine entry"
>>>
>>> Hi Florian,
>>>
>>> So far, we have tried to keep the Kconfig.platforms file rather coarse-grained,
>>> mainly limiting it to company names and high-level families, but avoiding
>>> sub-menus or adding too many sub-families.
>>>
>>> If we add per-vendor submenus, we should probably first decide how we
>>> want to structure this across vendors. I've added maintainers and lists to
>>> Cc for a couple of the ones that are in a similar situation.
>>>
>>> I can see a couple of ways we can do this:
>>>
>>> a) keep the list of platforms as short as possible, combining related
>>> SoC families from a single vendor wherever possible, but no sub-menus
>>> (same as today)
>>>
>>> b) Always use sub-menus when there is more than one family, but
>>> keep relatively coarse platform selection.
>>>
>>> c) Use sub-menus and also move to a more fine-grained SoC
>>> selection, similar to what we have on 32-bit arm.
>>>
>>> I would not really want to go to c), but a) and b) both make sense to
>>> me as long as do it consistently across all platforms.
>>>
>>> Any other ideas or opinions?
>>
>> Whatever we decide here, the SoC can override in drivers/soc, just like
>> Renesas did. I think Renesas chose option c), but made it in
>> drivers/soc. I would vote to have consistent policy, so if arch/arm64 is
>> a) or b), sub-archs should not redefine it in drivers/soc.
>
> We did so because of the "only a single symbol in
> arch/arm64/Kconfig.platforms"-policy.

I was not aware of that rule.

It is a bit of a mixed situation with Broadcom SoCs but in essence, each
Kconfig entry denotes a deeply different SoC architecture at the memory
subsystem, bus, security or product space that you might not want to
enable in your kernel. There is definitively sharing of drivers between
all of the platforms and a lot of cross pollination too but usually
these are deeply different that different kernel images do make sense.

The itch that I wanted to calm was that ARCH_BRCMSTB was after the other
Broadcom platforms separated by ARCH_BERLIN. if you prefer a pair of
KConfig comments to delineate them and flatten the platform selection,
that works for me, too.
--
Florian

2022-08-15 18:04:10

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH] arm64: Kconfig.platforms: Re-organized Broadcom menu

On 7/13/22 15:05, Florian Fainelli wrote:
> On 7/13/22 02:17, Geert Uytterhoeven wrote:
>> Hi Krzysztof,
>>
>> On Wed, Jul 13, 2022 at 10:40 AM Krzysztof Kozlowski
>> <[email protected]> wrote:
>>> On 13/07/2022 10:25, Arnd Bergmann wrote:
>>>> On Tue, Jul 12, 2022 at 6:42 PM Florian Fainelli
>>>> <[email protected]> wrote:
>>>>> There are now multiple Broadcom SoCs supported so group them under
>>>>> their
>>>>> own menu such that the selection is visually more appealing and we can
>>>>> easily add new platforms there in the future. This allows us to move
>>>>> ARCH_BRCMSTB back to its siblings.
>>>>>
>>>>> No functional changes introduced.
>>>>>
>>>>> Signed-off-by: Florian Fainelli <[email protected]>
>>>>> ---
>>>>>
>>>>> Note this is based on "arm64: bcmbca: add arch bcmbca machine entry"
>>>>
>>>> Hi Florian,
>>>>
>>>> So far, we have tried to keep the Kconfig.platforms file rather
>>>> coarse-grained,
>>>> mainly limiting it to company names and high-level families, but
>>>> avoiding
>>>> sub-menus or adding too many sub-families.
>>>>
>>>> If we add per-vendor submenus, we should probably first decide how we
>>>> want to structure this across vendors. I've added maintainers and
>>>> lists to
>>>> Cc for a couple of the ones that are in a similar situation.
>>>>
>>>> I can see a couple of ways we can do this:
>>>>
>>>> a) keep the list of platforms as short as possible, combining related
>>>>    SoC families from a single vendor wherever possible, but no
>>>> sub-menus
>>>>    (same as today)
>>>>
>>>> b) Always use sub-menus when there is more than one family, but
>>>>     keep relatively coarse platform selection.
>>>>
>>>> c) Use sub-menus and also move to a more fine-grained SoC
>>>>      selection, similar to what we have on 32-bit arm.
>>>>
>>>> I would not really want to go to c), but a) and b) both make sense to
>>>> me as long as do it consistently across all platforms.
>>>>
>>>> Any other ideas or opinions?
>>>
>>> Whatever we decide here, the SoC can override in drivers/soc, just like
>>> Renesas did. I think Renesas chose option c), but made it in
>>> drivers/soc. I would vote to have consistent policy, so if arch/arm64 is
>>> a) or b), sub-archs should not redefine it in drivers/soc.
>>
>> We did so because of the "only a single symbol in
>> arch/arm64/Kconfig.platforms"-policy.
>
> I was not aware of that rule.
>
> It is a bit of a mixed situation with Broadcom SoCs but in essence, each
> Kconfig entry denotes a deeply different SoC architecture at the memory
> subsystem, bus, security or product space that you might not want to
> enable in your kernel. There is definitively sharing of drivers between
> all of the platforms and a lot of cross pollination too but usually
> these are deeply different that different kernel images do make sense.
>
> The itch that I wanted to calm was that ARCH_BRCMSTB was after the other
> Broadcom platforms separated by ARCH_BERLIN. if you prefer a pair of
> KConfig comments to delineate them and flatten the platform selection,
> that works for me, too.

There are 2 Marvell-based platforms (Berlin and mvebu) as well as two
NXP-based platforms (MXC and S32), would it be better to also group them
under an ARCH_MARVELL and ARCH_NXP menuconfig symbol the same way this
patch does it for Broadcom-based SoCs?
--
Florian

2022-08-15 23:12:42

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] arm64: Kconfig.platforms: Re-organized Broadcom menu

On Mon, Aug 15, 2022 at 7:15 PM Florian Fainelli <[email protected]> wrote:
> On 7/13/22 15:05, Florian Fainelli wrote:
> > On 7/13/22 02:17, Geert Uytterhoeven wrote:
> >
> > The itch that I wanted to calm was that ARCH_BRCMSTB was after the other
> > Broadcom platforms separated by ARCH_BERLIN. if you prefer a pair of
> > KConfig comments to delineate them and flatten the platform selection,
> > that works for me, too.
>
> There are 2 Marvell-based platforms (Berlin and mvebu) as well as two
> NXP-based platforms (MXC and S32), would it be better to also group them
> under an ARCH_MARVELL and ARCH_NXP menuconfig symbol the same way this
> patch does it for Broadcom-based SoCs?

Berlin is now Synaptics after Marvell sold them the business unit, so that one
should probably stay separate. For NXP, there is also Layerscape. I
agree it would
be nice to group the three NXP together.

Arnd

2022-09-08 11:08:34

by Naresh Kamboju

[permalink] [raw]
Subject: Re: arm64: Kconfig.platforms: Re-organized Broadcom menu

From: [email protected]

LKFT test farm found that Linux next-20220906 onwards the Broadcom DTB
builds are not happening. And after bisecting we found this patch is
the reason [1].

Reported-by: Linux Kernel Functional Testing <[email protected]>

FYI, We have not changed any kernel configs.
[1] http://ix.io/49Wq


--
Linaro LKFT
https://lkft.linaro.org

2022-09-08 16:50:26

by Florian Fainelli

[permalink] [raw]
Subject: Re: arm64: Kconfig.platforms: Re-organized Broadcom menu



On 9/8/2022 4:04 AM, Naresh Kamboju wrote:
> From: [email protected]
>
> LKFT test farm found that Linux next-20220906 onwards the Broadcom DTB
> builds are not happening. And after bisecting we found this patch is
> the reason [1].
>
> Reported-by: Linux Kernel Functional Testing <[email protected]>
>
> FYI, We have not changed any kernel configs.
> [1] http://ix.io/49Wq

Fixed with:

https://lore.kernel.org/all/[email protected]/

sorry about the breakage and thanks for reporting!
--
Florian