All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] make swiotlb prototypes generic
@ 2008-08-07 13:06 Joerg Roedel
  2008-08-07 13:06 ` [PATCH 1/3] introduce generic header file for the software IO/TLB Joerg Roedel
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Joerg Roedel @ 2008-08-07 13:06 UTC (permalink / raw)
  To: akpm; +Cc: mingo, tglx, hpa, tony.luck, linux-kernel

Hi,

this small series of patches introduce a generic header file for the software
IO/TLB implementation in lib/swiotlb.c. Currently each architecture using this
code defines the prototypes itself. The prototypes are moved to
include/linux/swiotlb.h and this file is included in architecture specific code
for X86 and IA64. The changes are compile tested for both architectures.

Joerg

git diff --stat linus/master:

 arch/ia64/hp/common/hwsw_iommu.c |    9 +----
 arch/ia64/include/asm/machvec.h  |   22 +----------
 include/asm-x86/swiotlb.h        |   40 +------------------
 include/linux/swiotlb.h          |   83 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 86 insertions(+), 68 deletions(-)




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

* [PATCH 1/3] introduce generic header file for the software IO/TLB
  2008-08-07 13:06 [PATCH 0/3] make swiotlb prototypes generic Joerg Roedel
@ 2008-08-07 13:06 ` Joerg Roedel
  2008-08-07 13:06 ` [PATCH 2/3] x86: use common header for " Joerg Roedel
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Joerg Roedel @ 2008-08-07 13:06 UTC (permalink / raw)
  To: akpm; +Cc: mingo, tglx, hpa, tony.luck, linux-kernel, Joerg Roedel

This patch created the include/linux/swiotlb.h file which contains all function
prototypes for the lib/swiotlb.c file.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
---
 include/linux/swiotlb.h |   83 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 83 insertions(+), 0 deletions(-)
 create mode 100644 include/linux/swiotlb.h

diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
new file mode 100644
index 0000000..b18ec55
--- /dev/null
+++ b/include/linux/swiotlb.h
@@ -0,0 +1,83 @@
+#ifndef __LINUX_SWIOTLB_H
+#define __LINUX_SWIOTLB_H
+
+#include <linux/types.h>
+
+struct device;
+struct dma_attrs;
+struct scatterlist;
+
+extern void
+swiotlb_init(void);
+
+extern void
+*swiotlb_alloc_coherent(struct device *hwdev, size_t size,
+			dma_addr_t *dma_handle, gfp_t flags);
+
+extern void
+swiotlb_free_coherent(struct device *hwdev, size_t size,
+		      void *vaddr, dma_addr_t dma_handle);
+
+extern dma_addr_t
+swiotlb_map_single(struct device *hwdev, void *ptr, size_t size, int dir);
+
+extern void
+swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr,
+		     size_t size, int dir);
+
+extern dma_addr_t
+swiotlb_map_single_attrs(struct device *hwdev, void *ptr, size_t size,
+			 int dir, struct dma_attrs *attrs);
+
+extern void
+swiotlb_unmap_single_attrs(struct device *hwdev, dma_addr_t dev_addr,
+			   size_t size, int dir, struct dma_attrs *attrs);
+
+extern int
+swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, int nents,
+	       int direction);
+
+extern void
+swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents,
+		 int direction);
+
+extern int
+swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems,
+		     int dir, struct dma_attrs *attrs);
+
+extern void
+swiotlb_unmap_sg_attrs(struct device *hwdev, struct scatterlist *sgl,
+		       int nelems, int dir, struct dma_attrs *attrs);
+
+extern void
+swiotlb_sync_single_for_cpu(struct device *hwdev, dma_addr_t dev_addr,
+			    size_t size, int dir);
+
+extern void
+swiotlb_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg,
+			int nelems, int dir);
+
+extern void
+swiotlb_sync_single_for_device(struct device *hwdev, dma_addr_t dev_addr,
+			       size_t size, int dir);
+
+extern void
+swiotlb_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg,
+			   int nelems, int dir);
+
+extern void
+swiotlb_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dev_addr,
+				  unsigned long offset, size_t size, int dir);
+
+extern void
+swiotlb_sync_single_range_for_device(struct device *hwdev, dma_addr_t dev_addr,
+				     unsigned long offset, size_t size,
+				     int dir);
+
+extern int
+swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr);
+
+extern int
+swiotlb_dma_supported(struct device *hwdev, u64 mask);
+
+#endif /* __LINUX_SWIOTLB_H */
-- 
1.5.3.7



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

* [PATCH 2/3] x86: use common header for software IO/TLB
  2008-08-07 13:06 [PATCH 0/3] make swiotlb prototypes generic Joerg Roedel
  2008-08-07 13:06 ` [PATCH 1/3] introduce generic header file for the software IO/TLB Joerg Roedel
@ 2008-08-07 13:06 ` Joerg Roedel
  2008-08-07 13:06 ` [PATCH 3/3] ia64: " Joerg Roedel
  2008-08-07 17:36 ` [PATCH 0/3] make swiotlb prototypes generic Luck, Tony
  3 siblings, 0 replies; 7+ messages in thread
From: Joerg Roedel @ 2008-08-07 13:06 UTC (permalink / raw)
  To: akpm; +Cc: mingo, tglx, hpa, tony.luck, linux-kernel, Joerg Roedel

This patch removes the swiotlb prototypes from the architecture code and uses
the common header file instead.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
---
 include/asm-x86/swiotlb.h |   40 +---------------------------------------
 1 files changed, 1 insertions(+), 39 deletions(-)

diff --git a/include/asm-x86/swiotlb.h b/include/asm-x86/swiotlb.h
index 2730b35..b3221aa 100644
--- a/include/asm-x86/swiotlb.h
+++ b/include/asm-x86/swiotlb.h
@@ -1,45 +1,7 @@
 #ifndef _ASM_SWIOTLB_H
 #define _ASM_SWIOTLB_H 1
 
-#include <asm/dma-mapping.h>
-
-/* SWIOTLB interface */
-
-extern dma_addr_t swiotlb_map_single(struct device *hwdev, void *ptr,
-				     size_t size, int dir);
-extern void *swiotlb_alloc_coherent(struct device *hwdev, size_t size,
-				    dma_addr_t *dma_handle, gfp_t flags);
-extern void swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr,
-				 size_t size, int dir);
-extern void swiotlb_sync_single_for_cpu(struct device *hwdev,
-					dma_addr_t dev_addr,
-					size_t size, int dir);
-extern void swiotlb_sync_single_for_device(struct device *hwdev,
-					   dma_addr_t dev_addr,
-					   size_t size, int dir);
-extern void swiotlb_sync_single_range_for_cpu(struct device *hwdev,
-					      dma_addr_t dev_addr,
-					      unsigned long offset,
-					      size_t size, int dir);
-extern void swiotlb_sync_single_range_for_device(struct device *hwdev,
-						 dma_addr_t dev_addr,
-						 unsigned long offset,
-						 size_t size, int dir);
-extern void swiotlb_sync_sg_for_cpu(struct device *hwdev,
-				    struct scatterlist *sg, int nelems,
-				    int dir);
-extern void swiotlb_sync_sg_for_device(struct device *hwdev,
-				       struct scatterlist *sg, int nelems,
-				       int dir);
-extern int swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg,
-			  int nents, int direction);
-extern void swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg,
-			     int nents, int direction);
-extern int swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr);
-extern void swiotlb_free_coherent(struct device *hwdev, size_t size,
-				  void *vaddr, dma_addr_t dma_handle);
-extern int swiotlb_dma_supported(struct device *hwdev, u64 mask);
-extern void swiotlb_init(void);
+#include <linux/swiotlb.h>
 
 extern int swiotlb_force;
 
-- 
1.5.3.7



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

* [PATCH 3/3] ia64: use common header for software IO/TLB
  2008-08-07 13:06 [PATCH 0/3] make swiotlb prototypes generic Joerg Roedel
  2008-08-07 13:06 ` [PATCH 1/3] introduce generic header file for the software IO/TLB Joerg Roedel
  2008-08-07 13:06 ` [PATCH 2/3] x86: use common header for " Joerg Roedel
@ 2008-08-07 13:06 ` Joerg Roedel
  2008-08-07 17:36 ` [PATCH 0/3] make swiotlb prototypes generic Luck, Tony
  3 siblings, 0 replies; 7+ messages in thread
From: Joerg Roedel @ 2008-08-07 13:06 UTC (permalink / raw)
  To: akpm; +Cc: mingo, tglx, hpa, tony.luck, linux-kernel, Joerg Roedel

This patch removes the swiotlb prototypes from the architecture code and uses
the common header file instead.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
---
 arch/ia64/hp/common/hwsw_iommu.c |    9 +--------
 arch/ia64/include/asm/machvec.h  |   22 +---------------------
 2 files changed, 2 insertions(+), 29 deletions(-)

diff --git a/arch/ia64/hp/common/hwsw_iommu.c b/arch/ia64/hp/common/hwsw_iommu.c
index 88b6e6f..2769dbf 100644
--- a/arch/ia64/hp/common/hwsw_iommu.c
+++ b/arch/ia64/hp/common/hwsw_iommu.c
@@ -13,19 +13,12 @@
  */
 
 #include <linux/device.h>
+#include <linux/swiotlb.h>
 
 #include <asm/machvec.h>
 
 /* swiotlb declarations & definitions: */
 extern int swiotlb_late_init_with_default_size (size_t size);
-extern ia64_mv_dma_alloc_coherent	swiotlb_alloc_coherent;
-extern ia64_mv_dma_free_coherent	swiotlb_free_coherent;
-extern ia64_mv_dma_map_single_attrs	swiotlb_map_single_attrs;
-extern ia64_mv_dma_unmap_single_attrs	swiotlb_unmap_single_attrs;
-extern ia64_mv_dma_map_sg_attrs		swiotlb_map_sg_attrs;
-extern ia64_mv_dma_unmap_sg_attrs	swiotlb_unmap_sg_attrs;
-extern ia64_mv_dma_supported		swiotlb_dma_supported;
-extern ia64_mv_dma_mapping_error	swiotlb_dma_mapping_error;
 
 /* hwiommu declarations & definitions: */
 
diff --git a/arch/ia64/include/asm/machvec.h b/arch/ia64/include/asm/machvec.h
index 2b850cc..43af7ce 100644
--- a/arch/ia64/include/asm/machvec.h
+++ b/arch/ia64/include/asm/machvec.h
@@ -11,6 +11,7 @@
 #define _ASM_IA64_MACHVEC_H
 
 #include <linux/types.h>
+#include <linux/swiotlb.h>
 
 /* forward declarations: */
 struct device;
@@ -294,27 +295,6 @@ extern void machvec_init_from_cmdline(const char *cmdline);
 # endif /* CONFIG_IA64_GENERIC */
 
 /*
- * Declare default routines which aren't declared anywhere else:
- */
-extern ia64_mv_dma_init			swiotlb_init;
-extern ia64_mv_dma_alloc_coherent	swiotlb_alloc_coherent;
-extern ia64_mv_dma_free_coherent	swiotlb_free_coherent;
-extern ia64_mv_dma_map_single		swiotlb_map_single;
-extern ia64_mv_dma_map_single_attrs	swiotlb_map_single_attrs;
-extern ia64_mv_dma_unmap_single		swiotlb_unmap_single;
-extern ia64_mv_dma_unmap_single_attrs	swiotlb_unmap_single_attrs;
-extern ia64_mv_dma_map_sg		swiotlb_map_sg;
-extern ia64_mv_dma_map_sg_attrs		swiotlb_map_sg_attrs;
-extern ia64_mv_dma_unmap_sg		swiotlb_unmap_sg;
-extern ia64_mv_dma_unmap_sg_attrs	swiotlb_unmap_sg_attrs;
-extern ia64_mv_dma_sync_single_for_cpu	swiotlb_sync_single_for_cpu;
-extern ia64_mv_dma_sync_sg_for_cpu	swiotlb_sync_sg_for_cpu;
-extern ia64_mv_dma_sync_single_for_device swiotlb_sync_single_for_device;
-extern ia64_mv_dma_sync_sg_for_device	swiotlb_sync_sg_for_device;
-extern ia64_mv_dma_mapping_error	swiotlb_dma_mapping_error;
-extern ia64_mv_dma_supported		swiotlb_dma_supported;
-
-/*
  * Define default versions so we can extend machvec for new platforms without having
  * to update the machvec files for all existing platforms.
  */
-- 
1.5.3.7



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

* RE: [PATCH 0/3] make swiotlb prototypes generic
  2008-08-07 13:06 [PATCH 0/3] make swiotlb prototypes generic Joerg Roedel
                   ` (2 preceding siblings ...)
  2008-08-07 13:06 ` [PATCH 3/3] ia64: " Joerg Roedel
@ 2008-08-07 17:36 ` Luck, Tony
  2008-08-11 17:43   ` Ingo Molnar
  3 siblings, 1 reply; 7+ messages in thread
From: Luck, Tony @ 2008-08-07 17:36 UTC (permalink / raw)
  To: Joerg Roedel, akpm@linux-foundation.org
  Cc: mingo@redhat.com, tglx@linutronix.de, hpa@zytor.com,
	linux-kernel@vger.kernel.org

> this small series of patches introduce a generic header file for the software
> IO/TLB implementation in lib/swiotlb.c. Currently each architecture using this
> code defines the prototypes itself. The prototypes are moved to
> include/linux/swiotlb.h and this file is included in architecture specific code
> for X86 and IA64. The changes are compile tested for both architectures.

Boot tested on ia64 (using generic_defconfig, tiger_defconfig and zx1_defconfig).

-Tony

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

* Re: [PATCH 0/3] make swiotlb prototypes generic
  2008-08-07 17:36 ` [PATCH 0/3] make swiotlb prototypes generic Luck, Tony
@ 2008-08-11 17:43   ` Ingo Molnar
  2008-08-11 17:55     ` Luck, Tony
  0 siblings, 1 reply; 7+ messages in thread
From: Ingo Molnar @ 2008-08-11 17:43 UTC (permalink / raw)
  To: Luck, Tony
  Cc: Joerg Roedel, akpm@linux-foundation.org, mingo@redhat.com,
	tglx@linutronix.de, hpa@zytor.com, linux-kernel@vger.kernel.org,
	the arch/x86 maintainers


* Luck, Tony <tony.luck@intel.com> wrote:

> > this small series of patches introduce a generic header file for the software
> > IO/TLB implementation in lib/swiotlb.c. Currently each architecture using this
> > code defines the prototypes itself. The prototypes are moved to
> > include/linux/swiotlb.h and this file is included in architecture specific code
> > for X86 and IA64. The changes are compile tested for both architectures.
> 
> Boot tested on ia64 (using generic_defconfig, tiger_defconfig and 
> zx1_defconfig).

given that this touches both x86 and ia64, i suspect queueing it in -mm 
(as it is already) and merging it upstream from there would be the best 
approach?

	Ingo

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

* RE: [PATCH 0/3] make swiotlb prototypes generic
  2008-08-11 17:43   ` Ingo Molnar
@ 2008-08-11 17:55     ` Luck, Tony
  0 siblings, 0 replies; 7+ messages in thread
From: Luck, Tony @ 2008-08-11 17:55 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Joerg Roedel, akpm@linux-foundation.org, mingo@redhat.com,
	tglx@linutronix.de, hpa@zytor.com, linux-kernel@vger.kernel.org,
	the arch/x86 maintainers

> > Boot tested on ia64 (using generic_defconfig, tiger_defconfig and
> > zx1_defconfig).
>
> given that this touches both x86 and ia64, i suspect queueing it in -mm
> (as it is already) and merging it upstream from there would be the best
> approach?

That sounds fine to me.

-Tony

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

end of thread, other threads:[~2008-08-11 17:57 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-07 13:06 [PATCH 0/3] make swiotlb prototypes generic Joerg Roedel
2008-08-07 13:06 ` [PATCH 1/3] introduce generic header file for the software IO/TLB Joerg Roedel
2008-08-07 13:06 ` [PATCH 2/3] x86: use common header for " Joerg Roedel
2008-08-07 13:06 ` [PATCH 3/3] ia64: " Joerg Roedel
2008-08-07 17:36 ` [PATCH 0/3] make swiotlb prototypes generic Luck, Tony
2008-08-11 17:43   ` Ingo Molnar
2008-08-11 17:55     ` Luck, Tony

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.