[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <ac1acda2-7d90-44e3-8931-f2a73fa16b15@app.fastmail.com>
Date: Thu, 28 Sep 2023 09:32:35 -0400
From: "Arnd Bergmann" <arnd@...db.de>
To: "Jim Quinlan" <james.quinlan@...adcom.com>,
"Linus Walleij" <linus.walleij@...aro.org>
Cc: "Christoph Hellwig" <hch@....de>,
bcm-kernel-feedback-list@...adcom.com, jim2101024@...il.com,
"Russell King" <linux@...linux.org.uk>,
"Geert Uytterhoeven" <geert+renesas@...der.be>,
"Russell King" <rmk+kernel@...linux.org.uk>,
"Andrew Morton" <akpm@...ux-foundation.org>,
"Jonathan Corbet" <corbet@....net>,
"Thomas Gleixner" <tglx@...utronix.de>,
"Sebastian Reichel" <sebastian.reichel@...labora.com>,
"Mike Rapoport" <rppt@...nel.org>,
"Eric DeVolder" <eric.devolder@...cle.com>,
"Nathan Chancellor" <nathan@...nel.org>,
"Kirill A. Shutemov" <kirill.shutemov@...ux.intel.com>,
"Christophe Leroy" <christophe.leroy@...roup.eu>,
"moderated list:ARM PORT" <linux-arm-kernel@...ts.infradead.org>,
"open list" <linux-kernel@...r.kernel.org>,
"Claire Chang" <tientzu@...omium.org>
Subject: Re: [PATCH v1 1/1] ARM: Select DMA_DIRECT_REMAP to fix restricted DMA
On Thu, Sep 28, 2023, at 08:07, Jim Quinlan wrote:
> On Wed, Sep 27, 2023 at 7:10 PM Linus Walleij <linus.walleij@...aro.org> wrote:
>>
>> Clearly if you want to do this, surely the ARM-specific
>> arch/arm/mm/dma-mapping.c and arch/arm/mm/dma-mapping-nommu.c
>> needs to be removed at the same time?
>
>
> Yes, this is the reason I used "RFC" as the fix looked too easy to be viable :-)
> I debugged it enough to see that the host driver's
> writes to the dma_alloc_coherent() region were not appearing in
> memory, and that
> led me to DMA_DIRECT_REMAP.
Usually when you see a mismatch between the data observed by the
device and the CPU, the problem is an incorrect "dma-coherent"
property in the DT: either the device is coherent and accesses
the cache but the CPU tries to bypass it because the property
is missing, or there is an extraneous property and the CPU
goes the through the cache but the devices bypasses it.
It could also be a driver bug if the device mixes up the
address spaces, e.g. passing virt_to_phys(pointer) rather
than the DMA address returned by dma_alloc_coherent().
Arnd
Powered by blists - more mailing lists