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
Attachment:
signature.asc
Description: PGP signature