Re: [RFC PATCH V4 6/6] riscv: soc: Add Allwinner SoC kconfig option

From: Randy Dunlap
Date: Tue Sep 14 2021 - 01:20:45 EST


On 9/13/21 10:16 PM, Anup Patel wrote:
On Tue, Sep 14, 2021 at 8:36 AM Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:

On 9/13/21 7:34 PM, Guo Ren wrote:
On Tue, Sep 14, 2021 at 2:49 AM Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:

On 9/13/21 2:20 AM, Guo Ren wrote:
On Mon, Sep 13, 2021 at 4:45 PM Maxime Ripard <maxime@xxxxxxxxxx> wrote:

Hi,

On Sat, Sep 11, 2021 at 05:21:39PM +0800, guoren@xxxxxxxxxx wrote:
From: Liu Shaohua <liush@xxxxxxxxxxxxxxxxx>

Add Allwinner kconfig option which selects SoC specific and common
drivers that is required for this SoC.

Allwinner D1 uses custom PTE attributes to solve non-coherency SOC
interconnect issues for dma synchronization, so we set the default
value when SOC_SUNXI selected.

Signed-off-by: Liu Shaohua <liush@xxxxxxxxxxxxxxxxx>
Signed-off-by: Guo Ren <guoren@xxxxxxxxxxxxxxxxx>
Signed-off-by: Wei Fu <wefu@xxxxxxxxxx>
Cc: Anup Patel <anup.patel@xxxxxxx>
Cc: Atish Patra <atish.patra@xxxxxxx>
Cc: Christoph Hellwig <hch@xxxxxx>
Cc: Chen-Yu Tsai <wens@xxxxxxxx>
Cc: Drew Fustini <drew@xxxxxxxxxxxxxxx>
Cc: Maxime Ripard <maxime@xxxxxxxxxx>
Cc: Palmer Dabbelt <palmerdabbelt@xxxxxxxxxx>
Cc: Wei Wu <lazyparser@xxxxxxxxx>
---
arch/riscv/Kconfig.socs | 15 +++++++++++++++
arch/riscv/configs/defconfig | 1 +
2 files changed, 16 insertions(+)

diff --git a/arch/riscv/Kconfig.socs b/arch/riscv/Kconfig.socs
index 30676ebb16eb..8721c000ef23 100644
--- a/arch/riscv/Kconfig.socs
+++ b/arch/riscv/Kconfig.socs
@@ -70,4 +70,19 @@ config SOC_CANAAN_K210_DTB_SOURCE

endif

+config SOC_SUNXI
+ bool "Allwinner SoCs"
+ depends on MMU
+ select DWMAC_GENERIC
+ select ERRATA_THEAD
+ select RISCV_DMA_NONCOHERENT
+ select RISCV_ERRATA_ALTERNATIVE
+ select SERIAL_8250
+ select SERIAL_8250_CONSOLE
+ select SERIAL_8250_DW
+ select SIFIVE_PLIC
+ select STMMAC_ETH
+ help
+ This enables support for Allwinner SoC platforms like the D1.
+

I'm not sure we should select the drivers there. We could very well
imagine a board without UART, or even more so without ethernet.
We just want people could bring D1 up easier, 8250 is the basic component.



These options should be in the defconfig.

Agreed, using a defconfig is the right way to do this.
Put 8250 related configs into arch/riscv/configs/defconfig?

@Palmer Dabbelt @Arnd Bergmann, How do you think about that?
(defconfig or Kconfig.soc)
My purpose is when people make the Image from riscv/defconfig, then
the Image could run on all platforms include D1.

Hi,

I certainly did not understand your purpose with the patch being
able to build a kernel that would run on multiple platforms.
Still, I would not expect to see one platform cause unnecessary
drivers to be built for platforms that don't need them.

Kconfig.socs in arch/riscv/ is a bit of an unusual Kconfig file
IMO -- I suppose what you want to do fits into its style.

AFAIK the suggestion to use a defconfig (at least my suggestion)
was expecting to have a defconfig for each platform, but that
would not give you a boot image that could run on all platforms.

AFAIK, having a separate defconfig for each platform is not going
to fly with distros (AFAIK). We can't expect dirstros to release
separate RISC-V kernel image for each platform. In fact, ARM64
kernel has just one defconfig whereas ARM32 kernel has
consolidated and minimized number of defconfigs.

The long term goal for Linux RISC-V is to support single kernel
image booting on multiple-platforms. Of course, users can always
strip down the kernel using their custom defconfigs.

OK, thanks for the info.

--
~Randy