Re: CONFIG_DMA_NOOP_OPS breaks ARM arch
From: Marian Mihailescu
Date: Mon Oct 16 2017 - 01:28:22 EST
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@xxxxxxxxxxxxx> 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