* [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.