CONFIG_DMA_NOOP_OPS breaks ARM arch

Marian Mihailescu marian.mihailescu at adelaide.edu.au
Mon Oct 16 05:27:37 UTC 2017


I am using 4.14-rc4 with a patch on top that includes
arch/arm/include/asm/dma-mapping.h in a module.

I have MMU enabled, so
select DMA_NOOP_OPS if !MMU
does nothing for me, and I get a compile error because dma_noop_ops is unknown.

Maybe I should include linux/dma-mapping.h?

Thanks for the quick reply.


On Mon, Oct 16, 2017 at 2:28 PM, Randy Dunlap <rdunlap at infradead.org> wrote:
> On 10/15/17 20:29, Randy Dunlap wrote:
>> On 10/15/17 20:27, Randy Dunlap wrote:
>>> On 10/15/17 19:27, Marian Mihailescu wrote:
>>>> After commit 7844572c633964c864d9f32dc3f2a8ffe5d70371, dma_noop_ops
>>>> are built only for architectures that use it.
>>>>
>>>> For ARM architecture, CONFIG_DMA_NOOP_OPS is not selected, and cannot
>>>> be selected.
>
> What kernel version are you looking at?
> I see that it is selected:
>
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -22,6 +22,7 @@ config ARM
>         select CLONE_BACKWARDS
>         select CPU_PM if (SUSPEND || CPU_IDLE)
>         select DCACHE_WORD_ACCESS if HAVE_EFFICIENT_UNALIGNED_ACCESS
> +       select DMA_NOOP_OPS if !MMU
>         select EDAC_SUPPORT
>         select EDAC_ATOMIC_SCRUB
>         select GENERIC_ALLOCATOR
>
>
> That's in commit ID 1c51c429f30ea10428337f3a33c12059ba59f668 from May 24, 2017.
>
>>>> However, arch/arm/include/asm/dma-mapping.h is referencing dma_noop_ops:
>>>>
>>>> static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus)
>>>> {
>>>> return IS_ENABLED(CONFIG_MMU) ? &arm_dma_ops : &dma_noop_ops;
>>>> }
>>>>
>>>> I will let a maintainer suggest the best resolution for this :)
>>>>
>>>
>>> add Bart and iommu mailing list.
>>>
>>
>> and add Vladimir.
>>
>>
>
>
> --
> ~Randy


More information about the iommu mailing list