All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] XEN SWIOTLB dma operations extension
@ 2017-01-31 18:30 Andrii Anisov
  2017-01-31 18:30 ` [PATCH v3 1/2] swiotlb-xen: implement xen_swiotlb_dma_mmap callback Andrii Anisov
  2017-01-31 18:30 ` [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback Andrii Anisov
  0 siblings, 2 replies; 19+ messages in thread
From: Andrii Anisov @ 2017-01-31 18:30 UTC (permalink / raw)
  To: xen-devel; +Cc: julien.grall, sstabellini, andrii_anisov, oleksandr.dmytryshyn

From: Andrii Anisov <andrii_anisov@epam.com>

Some drivers need additional dma ops to be provided by xen swiotlb. Because
common operations implementation came from x86 world and does not suite ARM
needs we have to provide needed XEN SWIOTLB for ARM callbacks.

dma_mmap patch is a port of an antique and lost patch discussed here:
http://marc.info/?l=xen-devel&m=139695901430667&w=4

Changes in V3:
 - dma ops are moved from ARM specific to generic code
 - runtime operation verified for arm64 with LK 4.9
 - compilation verified for arm, arm64, x86 with the current LK master HEAD
   566cf877a1fcb6d6dc0126b076aad062054c2637

Changes in V2:
 - patches are rebased and checked for compilation for x86, arm, arm64 with
   the current LK master HEAD 83346fbc07d267de777e2597552f785174ad0373

Andrii Anisov (1):
  swiotlb-xen: implement xen_swiotlb_get_sgtable callback

Stefano Stabellini (1):
  swiotlb-xen: implement xen_swiotlb_dma_mmap callback

 arch/arm/xen/mm.c         |  2 ++
 drivers/xen/swiotlb-xen.c | 40 ++++++++++++++++++++++++++++++++++++++++
 include/xen/swiotlb-xen.h | 11 +++++++++++
 3 files changed, 53 insertions(+)

-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH v3 1/2] swiotlb-xen: implement xen_swiotlb_dma_mmap callback
  2017-01-31 18:30 [PATCH v3 0/2] XEN SWIOTLB dma operations extension Andrii Anisov
@ 2017-01-31 18:30 ` Andrii Anisov
  2017-01-31 18:39   ` Konrad Rzeszutek Wilk
  2017-01-31 18:30 ` [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback Andrii Anisov
  1 sibling, 1 reply; 19+ messages in thread
From: Andrii Anisov @ 2017-01-31 18:30 UTC (permalink / raw)
  To: xen-devel; +Cc: julien.grall, sstabellini, andrii_anisov, oleksandr.dmytryshyn

From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>

This function creates userspace mapping for the DMA-coherent memory.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Oleksandr Dmytryshyn <oleksandr.dmytryshyn@globallogic.com>
Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
---
 arch/arm/xen/mm.c         |  1 +
 drivers/xen/swiotlb-xen.c | 18 ++++++++++++++++++
 include/xen/swiotlb-xen.h |  5 +++++
 3 files changed, 24 insertions(+)

diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
index bd62d94..cd1684e 100644
--- a/arch/arm/xen/mm.c
+++ b/arch/arm/xen/mm.c
@@ -198,6 +198,7 @@ static struct dma_map_ops xen_swiotlb_dma_ops = {
 	.unmap_page = xen_swiotlb_unmap_page,
 	.dma_supported = xen_swiotlb_dma_supported,
 	.set_dma_mask = xen_swiotlb_set_dma_mask,
+	.mmap = xen_swiotlb_dma_mmap,
 };
 
 int __init xen_mm_init(void)
diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index f8afc6d..8ac36b4 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -681,3 +681,21 @@ xen_swiotlb_set_dma_mask(struct device *dev, u64 dma_mask)
 	return 0;
 }
 EXPORT_SYMBOL_GPL(xen_swiotlb_set_dma_mask);
+
+/*
+ * Create userspace mapping for the DMA-coherent memory.
+ * Following function should be called with the local pages only.
+ */
+int
+xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
+			void *cpu_addr, dma_addr_t dma_addr, size_t size,
+			unsigned long attrs)
+{
+#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
+	if (__generic_dma_ops(dev)->mmap)
+		return __generic_dma_ops(dev)->mmap(dev, vma, cpu_addr,
+						    dma_addr, size, attrs);
+#endif
+	return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size);
+}
+EXPORT_SYMBOL_GPL(xen_swiotlb_dma_mmap);
diff --git a/include/xen/swiotlb-xen.h b/include/xen/swiotlb-xen.h
index a0083be..5c8f4c8 100644
--- a/include/xen/swiotlb-xen.h
+++ b/include/xen/swiotlb-xen.h
@@ -55,4 +55,9 @@ xen_swiotlb_dma_supported(struct device *hwdev, u64 mask);
 
 extern int
 xen_swiotlb_set_dma_mask(struct device *dev, u64 dma_mask);
+
+extern int
+xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
+			void *cpu_addr, dma_addr_t dma_addr, size_t size,
+			unsigned long attrs);
 #endif /* __LINUX_SWIOTLB_XEN_H */
-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-01-31 18:30 [PATCH v3 0/2] XEN SWIOTLB dma operations extension Andrii Anisov
  2017-01-31 18:30 ` [PATCH v3 1/2] swiotlb-xen: implement xen_swiotlb_dma_mmap callback Andrii Anisov
@ 2017-01-31 18:30 ` Andrii Anisov
  2017-01-31 18:37   ` Konrad Rzeszutek Wilk
  1 sibling, 1 reply; 19+ messages in thread
From: Andrii Anisov @ 2017-01-31 18:30 UTC (permalink / raw)
  To: xen-devel; +Cc: julien.grall, sstabellini, andrii_anisov, oleksandr.dmytryshyn

From: Andrii Anisov <andrii_anisov@epam.com>

Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
---
 arch/arm/xen/mm.c         |  1 +
 drivers/xen/swiotlb-xen.c | 22 ++++++++++++++++++++++
 include/xen/swiotlb-xen.h |  6 ++++++
 3 files changed, 29 insertions(+)

diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
index cd1684e..76ea48a 100644
--- a/arch/arm/xen/mm.c
+++ b/arch/arm/xen/mm.c
@@ -199,6 +199,7 @@ static struct dma_map_ops xen_swiotlb_dma_ops = {
 	.dma_supported = xen_swiotlb_dma_supported,
 	.set_dma_mask = xen_swiotlb_set_dma_mask,
 	.mmap = xen_swiotlb_dma_mmap,
+	.get_sgtable = xen_swiotlb_get_sgtable,
 };
 
 int __init xen_mm_init(void)
diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
index 8ac36b4..a809d43 100644
--- a/drivers/xen/swiotlb-xen.c
+++ b/drivers/xen/swiotlb-xen.c
@@ -699,3 +699,25 @@ xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
 	return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size);
 }
 EXPORT_SYMBOL_GPL(xen_swiotlb_dma_mmap);
+
+/*
+ * Following function should be called with the local pages only.
+ */
+int
+xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
+			void *cpu_addr, dma_addr_t handle, size_t size,
+			unsigned long attrs)
+{
+#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
+	if (__generic_dma_ops(dev)->get_sgtable) {
+#ifdef DEBUG
+		unsigned long bfn = PHYS_PFN(dma_to_phys(dev, handle));
+		BUG_ON (!page_is_ram(bfn));
+#endif
+		return __generic_dma_ops(dev)->get_sgtable(dev, sgt, cpu_addr,
+							   handle, size, attrs);
+	}
+#endif
+	return dma_common_get_sgtable(dev, sgt, cpu_addr, handle, size);
+}
+EXPORT_SYMBOL_GPL(xen_swiotlb_get_sgtable);
diff --git a/include/xen/swiotlb-xen.h b/include/xen/swiotlb-xen.h
index 5c8f4c8..c554c23 100644
--- a/include/xen/swiotlb-xen.h
+++ b/include/xen/swiotlb-xen.h
@@ -60,4 +60,10 @@ extern int
 xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
 			void *cpu_addr, dma_addr_t dma_addr, size_t size,
 			unsigned long attrs);
+
+extern int
+xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
+			void *cpu_addr, dma_addr_t handle, size_t size,
+			unsigned long attrs);
+
 #endif /* __LINUX_SWIOTLB_XEN_H */
-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-01-31 18:30 ` [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback Andrii Anisov
@ 2017-01-31 18:37   ` Konrad Rzeszutek Wilk
  2017-01-31 19:15     ` Stefano Stabellini
  0 siblings, 1 reply; 19+ messages in thread
From: Konrad Rzeszutek Wilk @ 2017-01-31 18:37 UTC (permalink / raw)
  To: Andrii Anisov
  Cc: xen-devel, julien.grall, sstabellini, andrii_anisov,
	oleksandr.dmytryshyn

On Tue, Jan 31, 2017 at 08:30:26PM +0200, Andrii Anisov wrote:
> From: Andrii Anisov <andrii_anisov@epam.com>
> 
> Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
> ---
>  arch/arm/xen/mm.c         |  1 +
>  drivers/xen/swiotlb-xen.c | 22 ++++++++++++++++++++++
>  include/xen/swiotlb-xen.h |  6 ++++++
>  3 files changed, 29 insertions(+)
> 
> diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
> index cd1684e..76ea48a 100644
> --- a/arch/arm/xen/mm.c
> +++ b/arch/arm/xen/mm.c
> @@ -199,6 +199,7 @@ static struct dma_map_ops xen_swiotlb_dma_ops = {
>  	.dma_supported = xen_swiotlb_dma_supported,
>  	.set_dma_mask = xen_swiotlb_set_dma_mask,
>  	.mmap = xen_swiotlb_dma_mmap,
> +	.get_sgtable = xen_swiotlb_get_sgtable,
>  };
>  
>  int __init xen_mm_init(void)
> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> index 8ac36b4..a809d43 100644
> --- a/drivers/xen/swiotlb-xen.c
> +++ b/drivers/xen/swiotlb-xen.c
> @@ -699,3 +699,25 @@ xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
>  	return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size);
>  }
>  EXPORT_SYMBOL_GPL(xen_swiotlb_dma_mmap);
> +
> +/*
> + * Following function should be called with the local pages only.

What does 'local pages' mean?

> + */
> +int
> +xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
> +			void *cpu_addr, dma_addr_t handle, size_t size,
> +			unsigned long attrs)
> +{
> +#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
> +	if (__generic_dma_ops(dev)->get_sgtable) {
> +#ifdef DEBUG
> +		unsigned long bfn = PHYS_PFN(dma_to_phys(dev, handle));
> +		BUG_ON (!page_is_ram(bfn));
> +#endif

Could you remove the above please?

> +		return __generic_dma_ops(dev)->get_sgtable(dev, sgt, cpu_addr,
> +							   handle, size, attrs);
> +	}
> +#endif
> +	return dma_common_get_sgtable(dev, sgt, cpu_addr, handle, size);
> +}
> +EXPORT_SYMBOL_GPL(xen_swiotlb_get_sgtable);
> diff --git a/include/xen/swiotlb-xen.h b/include/xen/swiotlb-xen.h
> index 5c8f4c8..c554c23 100644
> --- a/include/xen/swiotlb-xen.h
> +++ b/include/xen/swiotlb-xen.h
> @@ -60,4 +60,10 @@ extern int
>  xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
>  			void *cpu_addr, dma_addr_t dma_addr, size_t size,
>  			unsigned long attrs);
> +
> +extern int
> +xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
> +			void *cpu_addr, dma_addr_t handle, size_t size,
> +			unsigned long attrs);

And perhaps fix this to be aligned properly?
> +
>  #endif /* __LINUX_SWIOTLB_XEN_H */
> -- 
> 2.7.4
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 1/2] swiotlb-xen: implement xen_swiotlb_dma_mmap callback
  2017-01-31 18:30 ` [PATCH v3 1/2] swiotlb-xen: implement xen_swiotlb_dma_mmap callback Andrii Anisov
@ 2017-01-31 18:39   ` Konrad Rzeszutek Wilk
  2017-01-31 19:10     ` Stefano Stabellini
  0 siblings, 1 reply; 19+ messages in thread
From: Konrad Rzeszutek Wilk @ 2017-01-31 18:39 UTC (permalink / raw)
  To: Andrii Anisov
  Cc: xen-devel, julien.grall, sstabellini, andrii_anisov,
	oleksandr.dmytryshyn

On Tue, Jan 31, 2017 at 08:30:25PM +0200, Andrii Anisov wrote:
> From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> 
> This function creates userspace mapping for the DMA-coherent memory.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> Signed-off-by: Oleksandr Dmytryshyn <oleksandr.dmytryshyn@globallogic.com>
> Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
> ---
>  arch/arm/xen/mm.c         |  1 +
>  drivers/xen/swiotlb-xen.c | 18 ++++++++++++++++++
>  include/xen/swiotlb-xen.h |  5 +++++
>  3 files changed, 24 insertions(+)
> 
> diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
> index bd62d94..cd1684e 100644
> --- a/arch/arm/xen/mm.c
> +++ b/arch/arm/xen/mm.c
> @@ -198,6 +198,7 @@ static struct dma_map_ops xen_swiotlb_dma_ops = {
>  	.unmap_page = xen_swiotlb_unmap_page,
>  	.dma_supported = xen_swiotlb_dma_supported,
>  	.set_dma_mask = xen_swiotlb_set_dma_mask,
> +	.mmap = xen_swiotlb_dma_mmap,
>  };
>  
>  int __init xen_mm_init(void)
> diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> index f8afc6d..8ac36b4 100644
> --- a/drivers/xen/swiotlb-xen.c
> +++ b/drivers/xen/swiotlb-xen.c
> @@ -681,3 +681,21 @@ xen_swiotlb_set_dma_mask(struct device *dev, u64 dma_mask)
>  	return 0;
>  }
>  EXPORT_SYMBOL_GPL(xen_swiotlb_set_dma_mask);
> +
> +/*
> + * Create userspace mapping for the DMA-coherent memory.
> + * Following function should be called with the local pages only.

What does 'local pages' mean?

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 1/2] swiotlb-xen: implement xen_swiotlb_dma_mmap callback
  2017-01-31 18:39   ` Konrad Rzeszutek Wilk
@ 2017-01-31 19:10     ` Stefano Stabellini
  2017-02-01 11:46       ` Andrii Anisov
  0 siblings, 1 reply; 19+ messages in thread
From: Stefano Stabellini @ 2017-01-31 19:10 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk
  Cc: sstabellini, andrii_anisov, oleksandr.dmytryshyn, Andrii Anisov,
	julien.grall, xen-devel

On Tue, 31 Jan 2017, Konrad Rzeszutek Wilk wrote:
> On Tue, Jan 31, 2017 at 08:30:25PM +0200, Andrii Anisov wrote:
> > From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > 
> > This function creates userspace mapping for the DMA-coherent memory.
> > 
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> > Signed-off-by: Oleksandr Dmytryshyn <oleksandr.dmytryshyn@globallogic.com>
> > Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
> > ---
> >  arch/arm/xen/mm.c         |  1 +
> >  drivers/xen/swiotlb-xen.c | 18 ++++++++++++++++++
> >  include/xen/swiotlb-xen.h |  5 +++++
> >  3 files changed, 24 insertions(+)
> > 
> > diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
> > index bd62d94..cd1684e 100644
> > --- a/arch/arm/xen/mm.c
> > +++ b/arch/arm/xen/mm.c
> > @@ -198,6 +198,7 @@ static struct dma_map_ops xen_swiotlb_dma_ops = {
> >  	.unmap_page = xen_swiotlb_unmap_page,
> >  	.dma_supported = xen_swiotlb_dma_supported,
> >  	.set_dma_mask = xen_swiotlb_set_dma_mask,
> > +	.mmap = xen_swiotlb_dma_mmap,
> >  };
> >  
> >  int __init xen_mm_init(void)
> > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > index f8afc6d..8ac36b4 100644
> > --- a/drivers/xen/swiotlb-xen.c
> > +++ b/drivers/xen/swiotlb-xen.c
> > @@ -681,3 +681,21 @@ xen_swiotlb_set_dma_mask(struct device *dev, u64 dma_mask)
> >  	return 0;
> >  }
> >  EXPORT_SYMBOL_GPL(xen_swiotlb_set_dma_mask);
> > +
> > +/*
> > + * Create userspace mapping for the DMA-coherent memory.
> > + * Following function should be called with the local pages only.
> 
> What does 'local pages' mean?

A page that belongs to this domain, rather than a foreign page that has
been mapped.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-01-31 18:37   ` Konrad Rzeszutek Wilk
@ 2017-01-31 19:15     ` Stefano Stabellini
  2017-01-31 19:17       ` Konrad Rzeszutek Wilk
  0 siblings, 1 reply; 19+ messages in thread
From: Stefano Stabellini @ 2017-01-31 19:15 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk
  Cc: sstabellini, andrii_anisov, oleksandr.dmytryshyn, Andrii Anisov,
	julien.grall, xen-devel

On Tue, 31 Jan 2017, Konrad Rzeszutek Wilk wrote:
> On Tue, Jan 31, 2017 at 08:30:26PM +0200, Andrii Anisov wrote:
> > From: Andrii Anisov <andrii_anisov@epam.com>
> > 
> > Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
> > Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
> > ---
> >  arch/arm/xen/mm.c         |  1 +
> >  drivers/xen/swiotlb-xen.c | 22 ++++++++++++++++++++++
> >  include/xen/swiotlb-xen.h |  6 ++++++
> >  3 files changed, 29 insertions(+)
> > 
> > diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
> > index cd1684e..76ea48a 100644
> > --- a/arch/arm/xen/mm.c
> > +++ b/arch/arm/xen/mm.c
> > @@ -199,6 +199,7 @@ static struct dma_map_ops xen_swiotlb_dma_ops = {
> >  	.dma_supported = xen_swiotlb_dma_supported,
> >  	.set_dma_mask = xen_swiotlb_set_dma_mask,
> >  	.mmap = xen_swiotlb_dma_mmap,
> > +	.get_sgtable = xen_swiotlb_get_sgtable,
> >  };
> >  
> >  int __init xen_mm_init(void)
> > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > index 8ac36b4..a809d43 100644
> > --- a/drivers/xen/swiotlb-xen.c
> > +++ b/drivers/xen/swiotlb-xen.c
> > @@ -699,3 +699,25 @@ xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
> >  	return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size);
> >  }
> >  EXPORT_SYMBOL_GPL(xen_swiotlb_dma_mmap);
> > +
> > +/*
> > + * Following function should be called with the local pages only.
> 
> What does 'local pages' mean?
> 
> > + */
> > +int
> > +xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
> > +			void *cpu_addr, dma_addr_t handle, size_t size,
> > +			unsigned long attrs)
> > +{
> > +#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
> > +	if (__generic_dma_ops(dev)->get_sgtable) {
> > +#ifdef DEBUG
> > +		unsigned long bfn = PHYS_PFN(dma_to_phys(dev, handle));
> > +		BUG_ON (!page_is_ram(bfn));
> > +#endif
> 
> Could you remove the above please?

I asked him to add it (see
http://marc.info/?l=xen-devel&m=148461541618751): the reason is that
this function cannot work on foreign pages. From the commit message
(d2b7428eb0caa7c66e34b6ac869a43915b294123) it looks like it is supposed
to be called on buffers returned by dma_alloc_coherent, thus it should
be safe.  However, if that's not the case in any of the drivers, it
would lead to memory corruptions. The two lines under ifdef DEBUG are an
nice way to catch this kind of errors. However, given that they cost a
few cpu cycles more than necessary, I wouldn't enable them in
production, hence the ifdef DEBUG.


> > +		return __generic_dma_ops(dev)->get_sgtable(dev, sgt, cpu_addr,
> > +							   handle, size, attrs);
> > +	}
> > +#endif
> > +	return dma_common_get_sgtable(dev, sgt, cpu_addr, handle, size);
> > +}
> > +EXPORT_SYMBOL_GPL(xen_swiotlb_get_sgtable);
> > diff --git a/include/xen/swiotlb-xen.h b/include/xen/swiotlb-xen.h
> > index 5c8f4c8..c554c23 100644
> > --- a/include/xen/swiotlb-xen.h
> > +++ b/include/xen/swiotlb-xen.h
> > @@ -60,4 +60,10 @@ extern int
> >  xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
> >  			void *cpu_addr, dma_addr_t dma_addr, size_t size,
> >  			unsigned long attrs);
> > +
> > +extern int
> > +xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
> > +			void *cpu_addr, dma_addr_t handle, size_t size,
> > +			unsigned long attrs);
> 
> And perhaps fix this to be aligned properly?
> > +
> >  #endif /* __LINUX_SWIOTLB_XEN_H */
> > -- 
> > 2.7.4
> > 
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-01-31 19:15     ` Stefano Stabellini
@ 2017-01-31 19:17       ` Konrad Rzeszutek Wilk
  2017-01-31 19:21         ` Stefano Stabellini
  2017-02-01 10:19         ` Andrii Anisov
  0 siblings, 2 replies; 19+ messages in thread
From: Konrad Rzeszutek Wilk @ 2017-01-31 19:17 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: xen-devel, julien.grall, andrii_anisov, oleksandr.dmytryshyn,
	Andrii Anisov

On Tue, Jan 31, 2017 at 11:15:50AM -0800, Stefano Stabellini wrote:
> On Tue, 31 Jan 2017, Konrad Rzeszutek Wilk wrote:
> > On Tue, Jan 31, 2017 at 08:30:26PM +0200, Andrii Anisov wrote:
> > > From: Andrii Anisov <andrii_anisov@epam.com>
> > > 
> > > Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
> > > Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
> > > ---
> > >  arch/arm/xen/mm.c         |  1 +
> > >  drivers/xen/swiotlb-xen.c | 22 ++++++++++++++++++++++
> > >  include/xen/swiotlb-xen.h |  6 ++++++
> > >  3 files changed, 29 insertions(+)
> > > 
> > > diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
> > > index cd1684e..76ea48a 100644
> > > --- a/arch/arm/xen/mm.c
> > > +++ b/arch/arm/xen/mm.c
> > > @@ -199,6 +199,7 @@ static struct dma_map_ops xen_swiotlb_dma_ops = {
> > >  	.dma_supported = xen_swiotlb_dma_supported,
> > >  	.set_dma_mask = xen_swiotlb_set_dma_mask,
> > >  	.mmap = xen_swiotlb_dma_mmap,
> > > +	.get_sgtable = xen_swiotlb_get_sgtable,
> > >  };
> > >  
> > >  int __init xen_mm_init(void)
> > > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > > index 8ac36b4..a809d43 100644
> > > --- a/drivers/xen/swiotlb-xen.c
> > > +++ b/drivers/xen/swiotlb-xen.c
> > > @@ -699,3 +699,25 @@ xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
> > >  	return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size);
> > >  }
> > >  EXPORT_SYMBOL_GPL(xen_swiotlb_dma_mmap);
> > > +
> > > +/*
> > > + * Following function should be called with the local pages only.
> > 
> > What does 'local pages' mean?
> > 
> > > + */
> > > +int
> > > +xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
> > > +			void *cpu_addr, dma_addr_t handle, size_t size,
> > > +			unsigned long attrs)
> > > +{
> > > +#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
> > > +	if (__generic_dma_ops(dev)->get_sgtable) {
> > > +#ifdef DEBUG
> > > +		unsigned long bfn = PHYS_PFN(dma_to_phys(dev, handle));
> > > +		BUG_ON (!page_is_ram(bfn));
> > > +#endif
> > 
> > Could you remove the above please?
> 
> I asked him to add it (see
> http://marc.info/?l=xen-devel&m=148461541618751): the reason is that
> this function cannot work on foreign pages. From the commit message
> (d2b7428eb0caa7c66e34b6ac869a43915b294123) it looks like it is supposed
> to be called on buffers returned by dma_alloc_coherent, thus it should
> be safe.  However, if that's not the case in any of the drivers, it
> would lead to memory corruptions. The two lines under ifdef DEBUG are an
> nice way to catch this kind of errors. However, given that they cost a
> few cpu cycles more than necessary, I wouldn't enable them in
> production, hence the ifdef DEBUG.

But there are no Kconfig DEBUG - so you may as well just do
#if 0

around the code.

> 
> 
> > > +		return __generic_dma_ops(dev)->get_sgtable(dev, sgt, cpu_addr,
> > > +							   handle, size, attrs);
> > > +	}
> > > +#endif
> > > +	return dma_common_get_sgtable(dev, sgt, cpu_addr, handle, size);
> > > +}
> > > +EXPORT_SYMBOL_GPL(xen_swiotlb_get_sgtable);
> > > diff --git a/include/xen/swiotlb-xen.h b/include/xen/swiotlb-xen.h
> > > index 5c8f4c8..c554c23 100644
> > > --- a/include/xen/swiotlb-xen.h
> > > +++ b/include/xen/swiotlb-xen.h
> > > @@ -60,4 +60,10 @@ extern int
> > >  xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
> > >  			void *cpu_addr, dma_addr_t dma_addr, size_t size,
> > >  			unsigned long attrs);
> > > +
> > > +extern int
> > > +xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
> > > +			void *cpu_addr, dma_addr_t handle, size_t size,
> > > +			unsigned long attrs);
> > 
> > And perhaps fix this to be aligned properly?
> > > +
> > >  #endif /* __LINUX_SWIOTLB_XEN_H */
> > > -- 
> > > 2.7.4
> > > 
> > 

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-01-31 19:17       ` Konrad Rzeszutek Wilk
@ 2017-01-31 19:21         ` Stefano Stabellini
  2017-02-01 10:42           ` Andrii Anisov
  2017-02-01 10:19         ` Andrii Anisov
  1 sibling, 1 reply; 19+ messages in thread
From: Stefano Stabellini @ 2017-01-31 19:21 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk
  Cc: Stefano Stabellini, andrii_anisov, oleksandr.dmytryshyn,
	Andrii Anisov, julien.grall, xen-devel

On Tue, 31 Jan 2017, Konrad Rzeszutek Wilk wrote:
> On Tue, Jan 31, 2017 at 11:15:50AM -0800, Stefano Stabellini wrote:
> > On Tue, 31 Jan 2017, Konrad Rzeszutek Wilk wrote:
> > > On Tue, Jan 31, 2017 at 08:30:26PM +0200, Andrii Anisov wrote:
> > > > From: Andrii Anisov <andrii_anisov@epam.com>
> > > > 
> > > > Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
> > > > Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
> > > > ---
> > > >  arch/arm/xen/mm.c         |  1 +
> > > >  drivers/xen/swiotlb-xen.c | 22 ++++++++++++++++++++++
> > > >  include/xen/swiotlb-xen.h |  6 ++++++
> > > >  3 files changed, 29 insertions(+)
> > > > 
> > > > diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
> > > > index cd1684e..76ea48a 100644
> > > > --- a/arch/arm/xen/mm.c
> > > > +++ b/arch/arm/xen/mm.c
> > > > @@ -199,6 +199,7 @@ static struct dma_map_ops xen_swiotlb_dma_ops = {
> > > >  	.dma_supported = xen_swiotlb_dma_supported,
> > > >  	.set_dma_mask = xen_swiotlb_set_dma_mask,
> > > >  	.mmap = xen_swiotlb_dma_mmap,
> > > > +	.get_sgtable = xen_swiotlb_get_sgtable,
> > > >  };
> > > >  
> > > >  int __init xen_mm_init(void)
> > > > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
> > > > index 8ac36b4..a809d43 100644
> > > > --- a/drivers/xen/swiotlb-xen.c
> > > > +++ b/drivers/xen/swiotlb-xen.c
> > > > @@ -699,3 +699,25 @@ xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
> > > >  	return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size);
> > > >  }
> > > >  EXPORT_SYMBOL_GPL(xen_swiotlb_dma_mmap);
> > > > +
> > > > +/*
> > > > + * Following function should be called with the local pages only.
> > > 
> > > What does 'local pages' mean?
> > > 
> > > > + */
> > > > +int
> > > > +xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
> > > > +			void *cpu_addr, dma_addr_t handle, size_t size,
> > > > +			unsigned long attrs)
> > > > +{
> > > > +#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
> > > > +	if (__generic_dma_ops(dev)->get_sgtable) {
> > > > +#ifdef DEBUG
> > > > +		unsigned long bfn = PHYS_PFN(dma_to_phys(dev, handle));
> > > > +		BUG_ON (!page_is_ram(bfn));
> > > > +#endif
> > > 
> > > Could you remove the above please?
> > 
> > I asked him to add it (see
> > http://marc.info/?l=xen-devel&m=148461541618751): the reason is that
> > this function cannot work on foreign pages. From the commit message
> > (d2b7428eb0caa7c66e34b6ac869a43915b294123) it looks like it is supposed
> > to be called on buffers returned by dma_alloc_coherent, thus it should
> > be safe.  However, if that's not the case in any of the drivers, it
> > would lead to memory corruptions. The two lines under ifdef DEBUG are an
> > nice way to catch this kind of errors. However, given that they cost a
> > few cpu cycles more than necessary, I wouldn't enable them in
> > production, hence the ifdef DEBUG.
> 
> But there are no Kconfig DEBUG - so you may as well just do
> #if 0
> 
> around the code.

Ah! Ops :-)

DEBUG_KERNEL?

> > > > +		return __generic_dma_ops(dev)->get_sgtable(dev, sgt, cpu_addr,
> > > > +							   handle, size, attrs);
> > > > +	}
> > > > +#endif
> > > > +	return dma_common_get_sgtable(dev, sgt, cpu_addr, handle, size);
> > > > +}
> > > > +EXPORT_SYMBOL_GPL(xen_swiotlb_get_sgtable);
> > > > diff --git a/include/xen/swiotlb-xen.h b/include/xen/swiotlb-xen.h
> > > > index 5c8f4c8..c554c23 100644
> > > > --- a/include/xen/swiotlb-xen.h
> > > > +++ b/include/xen/swiotlb-xen.h
> > > > @@ -60,4 +60,10 @@ extern int
> > > >  xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
> > > >  			void *cpu_addr, dma_addr_t dma_addr, size_t size,
> > > >  			unsigned long attrs);
> > > > +
> > > > +extern int
> > > > +xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
> > > > +			void *cpu_addr, dma_addr_t handle, size_t size,
> > > > +			unsigned long attrs);
> > > 
> > > And perhaps fix this to be aligned properly?
> > > > +
> > > >  #endif /* __LINUX_SWIOTLB_XEN_H */
> > > > -- 
> > > > 2.7.4
> > > > 
> > > 
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-01-31 19:17       ` Konrad Rzeszutek Wilk
  2017-01-31 19:21         ` Stefano Stabellini
@ 2017-02-01 10:19         ` Andrii Anisov
  2017-02-01 10:46           ` Andrii Anisov
  1 sibling, 1 reply; 19+ messages in thread
From: Andrii Anisov @ 2017-02-01 10:19 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk
  Cc: xen-devel, Julien Grall, Stefano Stabellini, Andrii Anisov,
	Oleksandr Dmytryshyn

Dear Konrad,

You are not correct here:
> But there are no Kconfig DEBUG - so you may as well just do
> #if 0
>
> around the code.

DEBUG macro is widely used in the kernel, just try grepping it through
the code. Elementary example is pr_debug definition which is resolved
through DEBUG macro, also reasonable pieces of debug code are widely
guarded by DEBUG macro.
DEBUG macro could be globally across drivers defined by
CONFIG_DEBUG_DRIVERS. See drivers/base/Makefile.

Sincerely,
Andrii Anisov.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-01-31 19:21         ` Stefano Stabellini
@ 2017-02-01 10:42           ` Andrii Anisov
  2017-02-01 10:57             ` Julien Grall
  0 siblings, 1 reply; 19+ messages in thread
From: Andrii Anisov @ 2017-02-01 10:42 UTC (permalink / raw)
  To: Stefano Stabellini
  Cc: xen-devel, Julien Grall, Andrii Anisov, Oleksandr Dmytryshyn

Stefano,

> Ah! Ops :-)
>
> DEBUG_KERNEL?

You said DEBUG_DRIVER last time.
Both DEBUG_KERNEL and DEBUG_DRIVER are not used in code. DEBUG_KERNEL
is used through Kconfigs to make available debug options to other
different stuff, which consequently define DEBUG through appropriate
makefiles.
DEBUG_DRIVER enables DEBUG macro in base, opp and power makefiles.

Sincerely,
Andrii Anisov.


On Tue, Jan 31, 2017 at 9:21 PM, Stefano Stabellini
<sstabellini@kernel.org> wrote:
> On Tue, 31 Jan 2017, Konrad Rzeszutek Wilk wrote:
>> On Tue, Jan 31, 2017 at 11:15:50AM -0800, Stefano Stabellini wrote:
>> > On Tue, 31 Jan 2017, Konrad Rzeszutek Wilk wrote:
>> > > On Tue, Jan 31, 2017 at 08:30:26PM +0200, Andrii Anisov wrote:
>> > > > From: Andrii Anisov <andrii_anisov@epam.com>
>> > > >
>> > > > Signed-off-by: Andrii Anisov <andrii_anisov@epam.com>
>> > > > Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
>> > > > ---
>> > > >  arch/arm/xen/mm.c         |  1 +
>> > > >  drivers/xen/swiotlb-xen.c | 22 ++++++++++++++++++++++
>> > > >  include/xen/swiotlb-xen.h |  6 ++++++
>> > > >  3 files changed, 29 insertions(+)
>> > > >
>> > > > diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
>> > > > index cd1684e..76ea48a 100644
>> > > > --- a/arch/arm/xen/mm.c
>> > > > +++ b/arch/arm/xen/mm.c
>> > > > @@ -199,6 +199,7 @@ static struct dma_map_ops xen_swiotlb_dma_ops = {
>> > > >         .dma_supported = xen_swiotlb_dma_supported,
>> > > >         .set_dma_mask = xen_swiotlb_set_dma_mask,
>> > > >         .mmap = xen_swiotlb_dma_mmap,
>> > > > +       .get_sgtable = xen_swiotlb_get_sgtable,
>> > > >  };
>> > > >
>> > > >  int __init xen_mm_init(void)
>> > > > diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
>> > > > index 8ac36b4..a809d43 100644
>> > > > --- a/drivers/xen/swiotlb-xen.c
>> > > > +++ b/drivers/xen/swiotlb-xen.c
>> > > > @@ -699,3 +699,25 @@ xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
>> > > >         return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size);
>> > > >  }
>> > > >  EXPORT_SYMBOL_GPL(xen_swiotlb_dma_mmap);
>> > > > +
>> > > > +/*
>> > > > + * Following function should be called with the local pages only.
>> > >
>> > > What does 'local pages' mean?
>> > >
>> > > > + */
>> > > > +int
>> > > > +xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
>> > > > +                       void *cpu_addr, dma_addr_t handle, size_t size,
>> > > > +                       unsigned long attrs)
>> > > > +{
>> > > > +#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
>> > > > +       if (__generic_dma_ops(dev)->get_sgtable) {
>> > > > +#ifdef DEBUG
>> > > > +               unsigned long bfn = PHYS_PFN(dma_to_phys(dev, handle));
>> > > > +               BUG_ON (!page_is_ram(bfn));
>> > > > +#endif
>> > >
>> > > Could you remove the above please?
>> >
>> > I asked him to add it (see
>> > http://marc.info/?l=xen-devel&m=148461541618751): the reason is that
>> > this function cannot work on foreign pages. From the commit message
>> > (d2b7428eb0caa7c66e34b6ac869a43915b294123) it looks like it is supposed
>> > to be called on buffers returned by dma_alloc_coherent, thus it should
>> > be safe.  However, if that's not the case in any of the drivers, it
>> > would lead to memory corruptions. The two lines under ifdef DEBUG are an
>> > nice way to catch this kind of errors. However, given that they cost a
>> > few cpu cycles more than necessary, I wouldn't enable them in
>> > production, hence the ifdef DEBUG.
>>
>> But there are no Kconfig DEBUG - so you may as well just do
>> #if 0
>>
>> around the code.
>

>
>> > > > +               return __generic_dma_ops(dev)->get_sgtable(dev, sgt, cpu_addr,
>> > > > +                                                          handle, size, attrs);
>> > > > +       }
>> > > > +#endif
>> > > > +       return dma_common_get_sgtable(dev, sgt, cpu_addr, handle, size);
>> > > > +}
>> > > > +EXPORT_SYMBOL_GPL(xen_swiotlb_get_sgtable);
>> > > > diff --git a/include/xen/swiotlb-xen.h b/include/xen/swiotlb-xen.h
>> > > > index 5c8f4c8..c554c23 100644
>> > > > --- a/include/xen/swiotlb-xen.h
>> > > > +++ b/include/xen/swiotlb-xen.h
>> > > > @@ -60,4 +60,10 @@ extern int
>> > > >  xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma,
>> > > >                         void *cpu_addr, dma_addr_t dma_addr, size_t size,
>> > > >                         unsigned long attrs);
>> > > > +
>> > > > +extern int
>> > > > +xen_swiotlb_get_sgtable(struct device *dev, struct sg_table *sgt,
>> > > > +                       void *cpu_addr, dma_addr_t handle, size_t size,
>> > > > +                       unsigned long attrs);
>> > >
>> > > And perhaps fix this to be aligned properly?
>> > > > +
>> > > >  #endif /* __LINUX_SWIOTLB_XEN_H */
>> > > > --
>> > > > 2.7.4
>> > > >
>> > >
>>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-02-01 10:19         ` Andrii Anisov
@ 2017-02-01 10:46           ` Andrii Anisov
  2017-02-01 14:25             ` Konrad Rzeszutek Wilk
  0 siblings, 1 reply; 19+ messages in thread
From: Andrii Anisov @ 2017-02-01 10:46 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk
  Cc: xen-devel, Julien Grall, Stefano Stabellini, Andrii Anisov,
	Oleksandr Dmytryshyn

Yup,

Following is wrong:
> DEBUG macro could be globally across drivers defined by
> CONFIG_DEBUG_DRIVERS. See drivers/base/Makefile.
DEBUG is not defined globally. And there is no debug option to enable
DEBUG in drivers/xen/Makefile.
Should it be added?

Sincerely,
Andrii Anisov.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-02-01 10:42           ` Andrii Anisov
@ 2017-02-01 10:57             ` Julien Grall
  2017-02-01 10:58               ` Julien Grall
  0 siblings, 1 reply; 19+ messages in thread
From: Julien Grall @ 2017-02-01 10:57 UTC (permalink / raw)
  To: Andrii Anisov, Stefano Stabellini
  Cc: xen-devel, Oleksandr Dmytryshyn, Andrii Anisov

Hi,

On 01/02/2017 10:42, Andrii Anisov wrote:
>> Ah! Ops :-)
>>
>> DEBUG_KERNEL?
>
> You said DEBUG_DRIVER last time.
> Both DEBUG_KERNEL and DEBUG_DRIVER are not used in code. DEBUG_KERNEL
> is used through Kconfigs to make available debug options to other
> different stuff, which consequently define DEBUG through appropriate
> makefiles.
> DEBUG_DRIVER enables DEBUG macro in base, opp and power makefiles.

Technically this check should be done on any debug build for safety. So 
I would add new Kconfig DEBUG_KENREL that is selected by DEBUG_KERNEL.

Cheers,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-02-01 10:57             ` Julien Grall
@ 2017-02-01 10:58               ` Julien Grall
  0 siblings, 0 replies; 19+ messages in thread
From: Julien Grall @ 2017-02-01 10:58 UTC (permalink / raw)
  To: Andrii Anisov, Stefano Stabellini
  Cc: xen-devel, Oleksandr Dmytryshyn, Andrii Anisov



On 01/02/2017 10:57, Julien Grall wrote:
> Hi,
>
> On 01/02/2017 10:42, Andrii Anisov wrote:
>>> Ah! Ops :-)
>>>
>>> DEBUG_KERNEL?
>>
>> You said DEBUG_DRIVER last time.
>> Both DEBUG_KERNEL and DEBUG_DRIVER are not used in code. DEBUG_KERNEL
>> is used through Kconfigs to make available debug options to other
>> different stuff, which consequently define DEBUG through appropriate
>> makefiles.
>> DEBUG_DRIVER enables DEBUG macro in base, opp and power makefiles.
>
> Technically this check should be done on any debug build for safety. So
> I would add new Kconfig DEBUG_KENREL that is selected by DEBUG_KERNEL.

Sent the e-mail too quickly, sorry. I meant adding DEBUG_XEN selected by 
DEBUG_KERNEL.

Cheers

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 1/2] swiotlb-xen: implement xen_swiotlb_dma_mmap callback
  2017-01-31 19:10     ` Stefano Stabellini
@ 2017-02-01 11:46       ` Andrii Anisov
  2017-02-01 14:24         ` Konrad Rzeszutek Wilk
  0 siblings, 1 reply; 19+ messages in thread
From: Andrii Anisov @ 2017-02-01 11:46 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk, Stefano Stabellini
  Cc: xen-devel, Julien Grall, Andrii Anisov, Oleksandr Dmytryshyn

Konrad, Stefano,

>> What does 'local pages' mean?
>
> A page that belongs to this domain, rather than a foreign page that has
> been mapped.
I guess it should be clarified, but not sure in the commit message or
comment to the code?

Sincerely,
Andrii Anisov.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 1/2] swiotlb-xen: implement xen_swiotlb_dma_mmap callback
  2017-02-01 11:46       ` Andrii Anisov
@ 2017-02-01 14:24         ` Konrad Rzeszutek Wilk
  0 siblings, 0 replies; 19+ messages in thread
From: Konrad Rzeszutek Wilk @ 2017-02-01 14:24 UTC (permalink / raw)
  To: Andrii Anisov
  Cc: xen-devel, Julien Grall, Stefano Stabellini, Andrii Anisov,
	Oleksandr Dmytryshyn

On Wed, Feb 01, 2017 at 01:46:48PM +0200, Andrii Anisov wrote:
> Konrad, Stefano,
> 
> >> What does 'local pages' mean?
> >
> > A page that belongs to this domain, rather than a foreign page that has
> > been mapped.
> I guess it should be clarified, but not sure in the commit message or
> comment to the code?

in the code pls.
> 
> Sincerely,
> Andrii Anisov.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-02-01 10:46           ` Andrii Anisov
@ 2017-02-01 14:25             ` Konrad Rzeszutek Wilk
  2017-02-01 14:30               ` Julien Grall
  0 siblings, 1 reply; 19+ messages in thread
From: Konrad Rzeszutek Wilk @ 2017-02-01 14:25 UTC (permalink / raw)
  To: Andrii Anisov
  Cc: xen-devel, Julien Grall, Stefano Stabellini, Andrii Anisov,
	Oleksandr Dmytryshyn

On Wed, Feb 01, 2017 at 12:46:32PM +0200, Andrii Anisov wrote:
> Yup,
> 
> Following is wrong:
> > DEBUG macro could be globally across drivers defined by
> > CONFIG_DEBUG_DRIVERS. See drivers/base/Makefile.
> DEBUG is not defined globally. And there is no debug option to enable
> DEBUG in drivers/xen/Makefile.
> Should it be added?

I am not exactly sure why you guys insist on having this, but
the lets leave it as #if 0 along with a comment saying why and what
the purpose of this is.

> 
> Sincerely,
> Andrii Anisov.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-02-01 14:25             ` Konrad Rzeszutek Wilk
@ 2017-02-01 14:30               ` Julien Grall
  2017-02-01 15:11                 ` Konrad Rzeszutek Wilk
  0 siblings, 1 reply; 19+ messages in thread
From: Julien Grall @ 2017-02-01 14:30 UTC (permalink / raw)
  To: Konrad Rzeszutek Wilk, Andrii Anisov
  Cc: xen-devel, Oleksandr Dmytryshyn, Stefano Stabellini, Andrii Anisov

Hi Konrad,

On 01/02/2017 14:25, Konrad Rzeszutek Wilk wrote:
> On Wed, Feb 01, 2017 at 12:46:32PM +0200, Andrii Anisov wrote:
>> Yup,
>>
>> Following is wrong:
>>> DEBUG macro could be globally across drivers defined by
>>> CONFIG_DEBUG_DRIVERS. See drivers/base/Makefile.
>> DEBUG is not defined globally. And there is no debug option to enable
>> DEBUG in drivers/xen/Makefile.
>> Should it be added?
>
> I am not exactly sure why you guys insist on having this, but
> the lets leave it as #if 0 along with a comment saying why and what
> the purpose of this is.

 From my understanding, the function has been implemented with the 
assumption of the page will always belongs to the domain and not foreign.

A user will unlikely know that it needs to remove #if 0 in order to 
check the driver is doing the right thing. So I think we should have an 
easy way to enable this code in kernel build.

If you are not happy with the Kconfig, what would be the other way to 
have this enabled without requiring the user to modify the code?

Cheers,

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback
  2017-02-01 14:30               ` Julien Grall
@ 2017-02-01 15:11                 ` Konrad Rzeszutek Wilk
  0 siblings, 0 replies; 19+ messages in thread
From: Konrad Rzeszutek Wilk @ 2017-02-01 15:11 UTC (permalink / raw)
  To: Julien Grall
  Cc: xen-devel, Oleksandr Dmytryshyn, Stefano Stabellini,
	Andrii Anisov, Andrii Anisov

On Wed, Feb 01, 2017 at 02:30:53PM +0000, Julien Grall wrote:
> Hi Konrad,
> 
> On 01/02/2017 14:25, Konrad Rzeszutek Wilk wrote:
> > On Wed, Feb 01, 2017 at 12:46:32PM +0200, Andrii Anisov wrote:
> > > Yup,
> > > 
> > > Following is wrong:
> > > > DEBUG macro could be globally across drivers defined by
> > > > CONFIG_DEBUG_DRIVERS. See drivers/base/Makefile.
> > > DEBUG is not defined globally. And there is no debug option to enable
> > > DEBUG in drivers/xen/Makefile.
> > > Should it be added?
> > 
> > I am not exactly sure why you guys insist on having this, but
> > the lets leave it as #if 0 along with a comment saying why and what
> > the purpose of this is.
> 
> From my understanding, the function has been implemented with the assumption
> of the page will always belongs to the domain and not foreign.
> 
> A user will unlikely know that it needs to remove #if 0 in order to check
> the driver is doing the right thing. So I think we should have an easy way
> to enable this code in kernel build.
> 
> If you are not happy with the Kconfig, what would be the other way to have
> this enabled without requiring the user to modify the code?

Just leave the #if 0 in the code and add a comment explaining why it is
there.
> 
> Cheers,
> 
> -- 
> Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2017-02-01 15:11 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-31 18:30 [PATCH v3 0/2] XEN SWIOTLB dma operations extension Andrii Anisov
2017-01-31 18:30 ` [PATCH v3 1/2] swiotlb-xen: implement xen_swiotlb_dma_mmap callback Andrii Anisov
2017-01-31 18:39   ` Konrad Rzeszutek Wilk
2017-01-31 19:10     ` Stefano Stabellini
2017-02-01 11:46       ` Andrii Anisov
2017-02-01 14:24         ` Konrad Rzeszutek Wilk
2017-01-31 18:30 ` [PATCH v3 2/2] swiotlb-xen: implement xen_swiotlb_get_sgtable callback Andrii Anisov
2017-01-31 18:37   ` Konrad Rzeszutek Wilk
2017-01-31 19:15     ` Stefano Stabellini
2017-01-31 19:17       ` Konrad Rzeszutek Wilk
2017-01-31 19:21         ` Stefano Stabellini
2017-02-01 10:42           ` Andrii Anisov
2017-02-01 10:57             ` Julien Grall
2017-02-01 10:58               ` Julien Grall
2017-02-01 10:19         ` Andrii Anisov
2017-02-01 10:46           ` Andrii Anisov
2017-02-01 14:25             ` Konrad Rzeszutek Wilk
2017-02-01 14:30               ` Julien Grall
2017-02-01 15:11                 ` Konrad Rzeszutek Wilk

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.