lkml.org 
[lkml]   [2022]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 6.0 659/862] =?U TF-8?q?ARM/dma-mapp=D1=96ng:=20dont=20overrid e=20->dma=5Fcohe?= =?UTF-8?q?rent=20when=20se t=20from=20a=20bus=20notifier?=
    Hi Greg,

    I'm seeing:

    Subject: [PATCH 6.0 659/862]
    =?UTF-8?q?ARM/dma-mapp=D1=96ng:=20dont=20override=20->dma=5Fcohe?=
    =?UTF-8?q?rent=20when=20set=20from=20a=20bus=20notifier?=

    in mutt, and mutt seems to be unable to decode that. Either a mutt
    bug or a bug in your scripts or git...

    Russell.

    On Wed, Oct 19, 2022 at 10:32:26AM +0200, Greg Kroah-Hartman wrote:
    > From: Christoph Hellwig <hch@lst.de>
    >
    > [ Upstream commit 49bc8bebae79c8516cb12f91818f3a7907e3ebce ]
    >
    > Commit ae626eb97376 ("ARM/dma-mapping: use dma-direct unconditionally")
    > caused a regression on the mvebu platform, wherein devices that are
    > dma-coherent are marked as dma-noncoherent, because although
    > mvebu_hwcc_notifier() after that commit still marks then as coherent,
    > the arm_coherent_dma_ops() function, which is called later, overwrites
    > this setting, since it is being called from drivers/of/device.c with
    > coherency parameter determined by of_dma_is_coherent(), and the
    > device-trees do not declare the 'dma-coherent' property.
    >
    > Fix this by defaulting never clearing the dma_coherent flag in
    > arm_coherent_dma_ops().
    >
    > Fixes: ae626eb97376 ("ARM/dma-mapping: use dma-direct unconditionally")
    > Reported-by: Marek Behún <kabel@kernel.org>
    > Signed-off-by: Christoph Hellwig <hch@lst.de>
    > Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    > Tested-by: Marek Behún <kabel@kernel.org>
    > Signed-off-by: Sasha Levin <sashal@kernel.org>
    > ---
    > arch/arm/mm/dma-mapping.c | 12 ++++++++++--
    > 1 file changed, 10 insertions(+), 2 deletions(-)
    >
    > diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
    > index 089c9c644cce..bfc7476f1411 100644
    > --- a/arch/arm/mm/dma-mapping.c
    > +++ b/arch/arm/mm/dma-mapping.c
    > @@ -1769,8 +1769,16 @@ static void arm_teardown_iommu_dma_ops(struct device *dev) { }
    > void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
    > const struct iommu_ops *iommu, bool coherent)
    > {
    > - dev->archdata.dma_coherent = coherent;
    > - dev->dma_coherent = coherent;
    > + /*
    > + * Due to legacy code that sets the ->dma_coherent flag from a bus
    > + * notifier we can't just assign coherent to the ->dma_coherent flag
    > + * here, but instead have to make sure we only set but never clear it
    > + * for now.
    > + */
    > + if (coherent) {
    > + dev->archdata.dma_coherent = true;
    > + dev->dma_coherent = true;
    > + }
    >
    > /*
    > * Don't override the dma_ops if they have already been set. Ideally
    > --
    > 2.35.1
    >
    >
    >
    >

    --
    RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
    FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

    \
     
     \ /
      Last update: 2022-10-19 11:55    [W:4.102 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site