Hi Conor, On Thu, Aug 31, 2023 at 5:36 PM Conor Dooley <conor@xxxxxxxxxx> wrote: > > On Thu, Aug 31, 2023 at 03:59:37PM +0100, Lad, Prabhakar wrote: > > > > > Currently ARCH_R9A07G043 selects DMA_GLOBAL_POOL and we have > > > > RISCV_DMA_NONCOHERENT selecting DMA_DIRECT_REMAP which causes below > > > > build issue when MMU is disabled: > > > > > > > > kernel/dma/pool.c: In function 'atomic_pool_expand': > > > > kernel/dma/pool.c:105:44: error: implicit declaration of function > > > > 'pgprot_dmacoherent' [-Werror=implicit-function-declaration] > > > > 105 | > > > > pgprot_dmacoherent(PAGE_KERNEL), > > > > | ^~~~~~~~~~~~~~~~~~ > > > > kernel/dma/pool.c:105:44: error: incompatible type for argument 3 of > > > > 'dma_common_contiguous_remap' > > > > 105 | > > > > pgprot_dmacoherent(PAGE_KERNEL), > > > > | > > > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > | | > > > > | int > > > > In file included from kernel/dma/pool.c:8: > > > > > > Hmm, kernel/dma/mapping.c has its use of pgprot_dmacoherent() inside > > > an #ifdef CONFIG_MMU block. > > > kernel/dma/pool.c has it inside an #ifdef CONFIG_DMA_DIRECT_REMAP block. > > > > > > I guess that select should get a dependency on MMU: > > > > > > config RISCV_DMA_NONCOHERENT > > > select DMA_DIRECT_REMAP if MMU > > > > > > For comparison, m68k does take that into account: > > > > > > select DMA_DIRECT_REMAP if HAS_DMA && MMU && !COLDFIRE > > > > > Thanks for the pointer. With this changes we dont get an unmet > > dependencies warning. > > > > arch/riscv/errata/andes/errata.c: In function 'ax45mp_iocp_sw_workaround': > > arch/riscv/errata/andes/errata.c:29:23: error: storage size of 'ret' isn't known > > 29 | struct sbiret ret; > > | ^~~ > > arch/riscv/errata/andes/errata.c:35:15: error: implicit declaration of > > function 'sbi_ecall' [-Werror=implicit-function-declaration] > > 35 | ret = sbi_ecall(ANDESTECH_SBI_EXT_ANDES, > > ANDES_SBI_EXT_IOCP_SW_WORKAROUND, > > | ^~~~~~~~~ > > arch/riscv/errata/andes/errata.c:29:23: warning: unused variable 'ret' > > [-Wunused-variable] > > 29 | struct sbiret ret; > > | ^~~ > > arch/riscv/errata/andes/errata.c:39:1: error: control reaches end of > > non-void function [-Werror=return-type] > > 39 | } > > | ^ > > cc1: some warnings being treated as errors > > > > To fix the above build issue reported by the bot, adding a dependency > > for RISCV_SBI in ERRATA_ANDES won't help as ARCH_R9A07G043 is > > explicitly selecting it. To avoid imply should explicitly select based > > on dependency something like below? > > > > diff --git a/arch/riscv/Kconfig.errata b/arch/riscv/Kconfig.errata > > index 92c779764b27..566bcefeab50 100644 > > --- a/arch/riscv/Kconfig.errata > > +++ b/arch/riscv/Kconfig.errata > > @@ -2,7 +2,7 @@ menu "CPU errata selection" > > > > config ERRATA_ANDES > > bool "Andes AX45MP errata" > > - depends on RISCV_ALTERNATIVE > > + depends on RISCV_ALTERNATIVE && RISCV_SBI > > help > > All Andes errata Kconfig depend on this Kconfig. Disabling > > this Kconfig will disable all Andes errata. Please say "Y" > > @@ -12,7 +12,7 @@ config ERRATA_ANDES > > > > config ERRATA_ANDES_CMO > > bool "Apply Andes cache management errata" > > - depends on ERRATA_ANDES && MMU && ARCH_R9A07G043 > > + depends on ERRATA_ANDES && ARCH_R9A07G043 > > select RISCV_DMA_NONCOHERENT > > default y > > help > > diff --git a/drivers/soc/renesas/Kconfig b/drivers/soc/renesas/Kconfig > > index 67604f24973e..543300fe9862 100644 > > --- a/drivers/soc/renesas/Kconfig > > +++ b/drivers/soc/renesas/Kconfig > > @@ -334,10 +334,10 @@ if RISCV > > config ARCH_R9A07G043 > > bool "RISC-V Platform support for RZ/Five" > > select ARCH_RZG2L > > - select AX45MP_L2_CACHE > > + select AX45MP_L2_CACHE if RISCV_DMA_NONCOHERENT > > select DMA_GLOBAL_POOL > > - select ERRATA_ANDES > > - select ERRATA_ANDES_CMO > > + select ERRATA_ANDES if RISCV_SBI > > + select ERRATA_ANDES_CMO if ERRATA_ANDES > > help > > This enables support for the Renesas RZ/Five SoC. > > > > Or am I missing a simpler way to fix this. > > This seems reasonable to me at least /shrug > Ok I will go this approach then. Cheers, Prabhakar