[PATCH 0/3] make swiotlb prototypes generic - Kernel

This is a discussion on [PATCH 0/3] make swiotlb prototypes generic - 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 ...

+ Reply to Thread
Results 1 to 6 of 6

Thread: [PATCH 0/3] make swiotlb prototypes generic

  1. [PATCH 0/3] make swiotlb prototypes generic

    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(-)



    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. [PATCH 3/3] ia64: use common header for software IO/TLB

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

    Signed-off-by: Joerg Roedel
    ---
    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
    +#include

    #include

    /* 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
    +#include

    /* 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


    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. [PATCH 1/3] introduce generic header file for the software IO/TLB

    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
    ---
    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
    +
    +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


    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  4. RE: [PATCH 0/3] make swiotlb prototypes generic

    > 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
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  5. Re: [PATCH 0/3] make swiotlb prototypes generic


    * Luck, Tony 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
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  6. RE: [PATCH 0/3] make swiotlb prototypes generic

    > > 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
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread