All of lore.kernel.org
 help / color / mirror / Atom feed
From: catalin.marinas@arm.com (Catalin Marinas)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 3/7] [RFC] arm/arm64: introduce is_dma_coherent
Date: Fri, 24 Oct 2014 11:47:46 +0100	[thread overview]
Message-ID: <20141024104746.GC1955@localhost> (raw)
In-Reply-To: <alpine.DEB.2.02.1410231516450.876@kaball.uk.xensource.com>

On Thu, Oct 23, 2014 at 03:22:27PM +0100, Stefano Stabellini wrote:
> On Wed, 22 Oct 2014, Stefano Stabellini wrote:
> > On Mon, 13 Oct 2014, Stefano Stabellini wrote:
> > > On Mon, 13 Oct 2014, Will Deacon wrote:
> > > > On Mon, Oct 13, 2014 at 12:16:14PM +0100, Stefano Stabellini wrote:
> > > > > On Fri, 10 Oct 2014, Stefano Stabellini wrote:
> > > > > > On Fri, 10 Oct 2014, Will Deacon wrote:
> > > > > > > On Fri, Oct 10, 2014 at 12:51:44PM +0100, Stefano Stabellini wrote:
> > > > > > > > Introduce a function to check whether a device is dma coherent.
> > > > > > > > 
> > > > > > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > > > > > > > CC: linux at arm.linux.org.uk
> > > > > > > > CC: catalin.marinas at arm.com
> > > > > > > > CC: will.deacon at arm.com
> > > > > > > > CC: linux-arm-kernel at lists.infradead.org
> > > > > > > > ---
> > > > > > > >  arch/arm/include/asm/dma-mapping.h   |    6 ++++++
> > > > > > > >  arch/arm64/include/asm/dma-mapping.h |    5 +++++
> > > > > > > >  2 files changed, 11 insertions(+)
> > > > > > > > 
> > > > > > > > diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h
> > > > > > > > index c45b61a..bededbb 100644
> > > > > > > > --- a/arch/arm/include/asm/dma-mapping.h
> > > > > > > > +++ b/arch/arm/include/asm/dma-mapping.h
> > > > > > > > @@ -126,6 +126,12 @@ static inline int set_arch_dma_coherent_ops(struct device *dev)
> > > > > > > >  	set_dma_ops(dev, &arm_coherent_dma_ops);
> > > > > > > >  	return 0;
> > > > > > > >  }
> > > > > > > > +
> > > > > > > > +static inline bool is_dma_coherent(struct device *dev)
> > > > > > > > +{
> > > > > > > > +    return (__generic_dma_ops(dev) == &arm_coherent_dma_ops);
> > > > > > > > +}
> > > > > > > 
> > > > > > > Hmm, what about the IOMMU ops?
> > > > > > 
> > > > > > Maybe I should check __generic_dma_ops(dev) != &arm_dma_ops?
> > > > > > Do you have any better suggestions?
> > > > > 
> > > > > ping?
> > > > 
> > > > Without any clear idea about why this is needed or how it's used, I don't
> > > > have any better ideas.
> > > 
> > > Thanks for the quick reply.
> > > 
> > > It is used in dom0 to figure out whether the device is not coherent: in
> > > that case Dom0 is going to issue an hypercall and Xen is going to
> > > execute the required cache maintenance operations on Dom0's behalf.
> > > 
> > > In practice for this use case iommu_dma_ops is not a problem, as the
> > > device is never going to appear as being behind an SMMU in dom0.
> > 
> > re-ping?
> 
> I don't mean to be pushy but this series is required to fix a regression
> that causes dom0 to crash when running as dom0 on Xen on ARM if
> non-coherent devices are present on the platform.

Sorry for ignoring it but I don't fully understand how Xen works,
especially this DMA stuff. I recall some blogs you wrote but I don't
have time to re-read them (and I'm on holiday next week).

I think a better way would be some Xen hook around
set_arch_dma_coherent_ops(). Does Xen have its own device tracking
structures? If not, you may be able to add another bitfield to the
kernel one.

-- 
Catalin

WARNING: multiple messages have this Message-ID (diff)
From: Catalin Marinas <catalin.marinas@arm.com>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Will Deacon <Will.Deacon@arm.com>,
	"xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
	"konrad.wilk@oracle.com" <konrad.wilk@oracle.com>,
	"Ian.Campbell@citrix.com" <Ian.Campbell@citrix.com>,
	"david.vrabel@citrix.com" <david.vrabel@citrix.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux@arm.linux.org.uk" <linux@arm.linux.org.uk>
Subject: Re: [PATCH v4 3/7] [RFC] arm/arm64: introduce is_dma_coherent
Date: Fri, 24 Oct 2014 11:47:46 +0100	[thread overview]
Message-ID: <20141024104746.GC1955@localhost> (raw)
In-Reply-To: <alpine.DEB.2.02.1410231516450.876@kaball.uk.xensource.com>

On Thu, Oct 23, 2014 at 03:22:27PM +0100, Stefano Stabellini wrote:
> On Wed, 22 Oct 2014, Stefano Stabellini wrote:
> > On Mon, 13 Oct 2014, Stefano Stabellini wrote:
> > > On Mon, 13 Oct 2014, Will Deacon wrote:
> > > > On Mon, Oct 13, 2014 at 12:16:14PM +0100, Stefano Stabellini wrote:
> > > > > On Fri, 10 Oct 2014, Stefano Stabellini wrote:
> > > > > > On Fri, 10 Oct 2014, Will Deacon wrote:
> > > > > > > On Fri, Oct 10, 2014 at 12:51:44PM +0100, Stefano Stabellini wrote:
> > > > > > > > Introduce a function to check whether a device is dma coherent.
> > > > > > > > 
> > > > > > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > > > > > > > CC: linux@arm.linux.org.uk
> > > > > > > > CC: catalin.marinas@arm.com
> > > > > > > > CC: will.deacon@arm.com
> > > > > > > > CC: linux-arm-kernel@lists.infradead.org
> > > > > > > > ---
> > > > > > > >  arch/arm/include/asm/dma-mapping.h   |    6 ++++++
> > > > > > > >  arch/arm64/include/asm/dma-mapping.h |    5 +++++
> > > > > > > >  2 files changed, 11 insertions(+)
> > > > > > > > 
> > > > > > > > diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h
> > > > > > > > index c45b61a..bededbb 100644
> > > > > > > > --- a/arch/arm/include/asm/dma-mapping.h
> > > > > > > > +++ b/arch/arm/include/asm/dma-mapping.h
> > > > > > > > @@ -126,6 +126,12 @@ static inline int set_arch_dma_coherent_ops(struct device *dev)
> > > > > > > >  	set_dma_ops(dev, &arm_coherent_dma_ops);
> > > > > > > >  	return 0;
> > > > > > > >  }
> > > > > > > > +
> > > > > > > > +static inline bool is_dma_coherent(struct device *dev)
> > > > > > > > +{
> > > > > > > > +    return (__generic_dma_ops(dev) == &arm_coherent_dma_ops);
> > > > > > > > +}
> > > > > > > 
> > > > > > > Hmm, what about the IOMMU ops?
> > > > > > 
> > > > > > Maybe I should check __generic_dma_ops(dev) != &arm_dma_ops?
> > > > > > Do you have any better suggestions?
> > > > > 
> > > > > ping?
> > > > 
> > > > Without any clear idea about why this is needed or how it's used, I don't
> > > > have any better ideas.
> > > 
> > > Thanks for the quick reply.
> > > 
> > > It is used in dom0 to figure out whether the device is not coherent: in
> > > that case Dom0 is going to issue an hypercall and Xen is going to
> > > execute the required cache maintenance operations on Dom0's behalf.
> > > 
> > > In practice for this use case iommu_dma_ops is not a problem, as the
> > > device is never going to appear as being behind an SMMU in dom0.
> > 
> > re-ping?
> 
> I don't mean to be pushy but this series is required to fix a regression
> that causes dom0 to crash when running as dom0 on Xen on ARM if
> non-coherent devices are present on the platform.

Sorry for ignoring it but I don't fully understand how Xen works,
especially this DMA stuff. I recall some blogs you wrote but I don't
have time to re-read them (and I'm on holiday next week).

I think a better way would be some Xen hook around
set_arch_dma_coherent_ops(). Does Xen have its own device tracking
structures? If not, you may be able to add another bitfield to the
kernel one.

-- 
Catalin

  reply	other threads:[~2014-10-24 10:47 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-10 11:50 [PATCH v4 0/7] introduce GNTTABOP_cache_flush Stefano Stabellini
2014-10-10 11:50 ` Stefano Stabellini
2014-10-10 11:50 ` Stefano Stabellini
2014-10-10 11:51 ` [PATCH v4 1/7] xen/arm: remove handling of XENFEAT_grant_map_identity Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-20 15:14   ` Ian Campbell
2014-10-20 15:14     ` Ian Campbell
2014-10-20 15:14     ` Ian Campbell
2014-10-10 11:51 ` [PATCH v4 2/7] xen/arm: remove outer_*_range call Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-10 11:51 ` [PATCH v4 3/7] [RFC] arm/arm64: introduce is_dma_coherent Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-10 12:07   ` Will Deacon
2014-10-10 12:07     ` Will Deacon
2014-10-10 13:04     ` Stefano Stabellini
2014-10-10 13:04       ` Stefano Stabellini
2014-10-13 11:16       ` Stefano Stabellini
2014-10-13 11:16         ` Stefano Stabellini
2014-10-13 12:57         ` Will Deacon
2014-10-13 12:57           ` Will Deacon
2014-10-13 14:43           ` Stefano Stabellini
2014-10-13 14:43             ` Stefano Stabellini
2014-10-22 16:04             ` Stefano Stabellini
2014-10-22 16:04               ` Stefano Stabellini
2014-10-23 14:22               ` Stefano Stabellini
2014-10-23 14:22                 ` Stefano Stabellini
2014-10-24 10:47                 ` Catalin Marinas [this message]
2014-10-24 10:47                   ` Catalin Marinas
2014-10-24 11:39                   ` Stefano Stabellini
2014-10-24 11:39                     ` Stefano Stabellini
2014-10-24 15:43                     ` Catalin Marinas
2014-10-24 15:43                       ` Catalin Marinas
2014-10-24 17:01                       ` Stefano Stabellini
2014-10-24 17:01                         ` Stefano Stabellini
2014-10-24 17:29                         ` Stefano Stabellini
2014-10-24 17:29                           ` Stefano Stabellini
2014-10-25 13:29                           ` Stefano Stabellini
2014-10-25 13:29                             ` Stefano Stabellini
2014-10-25 13:29                             ` Stefano Stabellini
2014-10-25 15:40                             ` Ian Campbell
2014-10-25 15:40                               ` Ian Campbell
2014-10-25 15:40                               ` Ian Campbell
2014-10-25 16:15                               ` Stefano Stabellini
2014-10-25 16:15                                 ` Stefano Stabellini
2014-10-25 16:15                                 ` Stefano Stabellini
2014-10-27 11:02                                 ` [Xen-devel] " David Vrabel
2014-10-27 11:02                                   ` David Vrabel
2014-10-27 11:02                                   ` David Vrabel
2014-10-27 15:22                                   ` Stefano Stabellini
2014-10-27 15:22                                     ` Stefano Stabellini
2014-10-10 11:51 ` [PATCH v4 4/7] xen/arm: use is_dma_coherent Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-20 15:18   ` Ian Campbell
2014-10-20 15:18     ` Ian Campbell
2014-10-20 15:18     ` Ian Campbell
2014-10-10 11:51 ` [PATCH v4 5/7] xen/arm/arm64: merge xen/mm32.c into xen/mm.c Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-20 15:19   ` Ian Campbell
2014-10-20 15:19     ` Ian Campbell
2014-10-20 15:19     ` Ian Campbell
2014-10-10 11:51 ` [PATCH v4 6/7] xen/arm/arm64: introduce xen_arch_need_swiotlb Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-14 16:03   ` Konrad Rzeszutek Wilk
2014-10-14 16:03     ` Konrad Rzeszutek Wilk
2014-10-14 16:12     ` David Vrabel
2014-10-14 16:12       ` David Vrabel
2014-10-14 16:12       ` David Vrabel
2014-10-14 16:21       ` Konrad Rzeszutek Wilk
2014-10-14 16:21         ` Konrad Rzeszutek Wilk
2014-10-10 11:51 ` [PATCH v4 7/7] xen/arm: introduce GNTTABOP_cache_flush Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-10 11:51   ` Stefano Stabellini
2014-10-20 15:50   ` Ian Campbell
2014-10-20 15:50     ` Ian Campbell
2014-10-20 15:50     ` Ian Campbell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141024104746.GC1955@localhost \
    --to=catalin.marinas@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.