[PATCH] RISC-V: Disable IPMMU_VMSA on rv32

Robin Murphy robin.murphy at arm.com
Wed Dec 14 13:04:13 PST 2022


On 2022-12-14 19:46, Conor Dooley wrote:
> 
> 
> On 14 December 2022 10:04:09 GMT-08:00, Palmer Dabbelt <palmer at rivosinc.com> wrote:
>> Without this I get a Kconfig warning and then subsequent build failure
>> when building allmodconfig on rv32.
>>
>> WARNING: unmet direct dependencies detected for IOMMU_IO_PGTABLE_LPAE
>>   Depends on [n]: IOMMU_SUPPORT [=y] && (ARM || ARM64 || COMPILE_TEST [=y] && !GENERIC_ATOMIC64 [=y])
>>   Selected by [y]:
>>   - IPMMU_VMSA [=y] && IOMMU_SUPPORT [=y] && (ARCH_RENESAS [=y] || COMPILE_TEST [=y]
> 
> This here is your problem afaict
> I got a report from lkp about it yesterday, "blaming" Prabhakar for it:
> https://lore.kernel.org/all/202212142355.b7vf3Jh0-lkp@intel.com/
> 
> I hate selects, just ignores the dependency :(
> 
>   && !GENERIC_ATOMIC64 [=y])

I think the existing assumption was that ARCH_RENESAS implied 
!GENERIC_ATOMIC64. If that is no longer true then please feel free to 
adjust drivers/iommu/Kconfig to suit.

Thanks,
Robin.

>> linux/drivers/iommu/io-pgtable-arm.c: Assembler messages:
>> linux/drivers/iommu/io-pgtable-arm.c:330: Error: unrecognized opcode `lr.d s4,0(s1)'
>> linux/drivers/iommu/io-pgtable-arm.c:332: Error: unrecognized opcode `sc.d.rl a5,s6,0(s1)'
>> make[5]: *** [linux/scripts/Makefile.build:250: drivers/iommu/io-pgtable-arm.o] Error 1
>> make[4]: *** [linux/scripts/Makefile.build:502: drivers/iommu] Error 2
>> make[3]: *** [linux/scripts/Makefile.build:502: drivers] Error 2
>>
>> Signed-off-by: Palmer Dabbelt <palmer at rivosinc.com>
>>
>> ---
>>
>> This one seems pretty ugly, but I like to at least have a workaround for
>> the allmodconfig failures before sending up a PR.
>> ---
>> arch/riscv/configs/32-bit.config | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/riscv/configs/32-bit.config b/arch/riscv/configs/32-bit.config
>> index f6af0f708df4..7a2fa9b37b1c 100644
>> --- a/arch/riscv/configs/32-bit.config
>> +++ b/arch/riscv/configs/32-bit.config
>> @@ -2,3 +2,4 @@ CONFIG_ARCH_RV32I=y
>> CONFIG_32BIT=y
>> # CONFIG_PORTABLE is not set
>> CONFIG_NONPORTABLE=y
>> +CONFIG_IPMMU_VMSA=n
> 



More information about the linux-riscv mailing list