From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Albert Herranz <albert_herranz@yahoo.es>
Cc: linux-usb@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org, x86@kernel.org,
linux-ia64@vger.kernel.org
Subject: Re: [LKML] [RFC PATCH v3 04/11] swiotlb: support
Date: Mon, 08 Mar 2010 16:55:00 +0000 [thread overview]
Message-ID: <20100308165500.GB4568@phenom.dumpdata.com> (raw)
In-Reply-To: <1267963912-984-5-git-send-email-albert_herranz@yahoo.es>
On Sun, Mar 07, 2010 at 01:11:45PM +0100, Albert Herranz wrote:
> The current SWIOTLB code does not support NOT_COHERENT_CACHE platforms.
> This patch adds support for NOT_COHERENT_CACHE platforms to SWIOTLB by
> adding two platform specific functions swiotlb_dma_sync_page() and
> swiotlb_dma_sync() which can be used to explicitly manage cache coherency.
Hey Albert,
I've been doing some posting in this area to split the physical / bus
address translation so that multiple platforms can utilize it. I was
wondering if it makes sense to utilize some of those concepts (ie, extend it
for DMA coherency) for your code:
https://lists.linux-foundation.org/pipermail/iommu/2010-February/002066.html
And here is the git tree that goes on top of those patches:
git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb-2.6.git xen-swiotlb-0.5
>
> On PowerPC these functions are mapped to their corresponding
> __dma_sync_page() and __dma_sync() functions.
> On other architectures using SWIOTLB these functions are optimized out.
>
> This will be used later to support SWIOTLB on the Nintendo Wii video game
> console.
>
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
> CC: linuxppc-dev@lists.ozlabs.org
> CC: linux-kernel@vger.kernel.org
> CC: x86@kernel.org
> CC: linux-ia64@vger.kernel.org
> ---
> arch/ia64/include/asm/swiotlb.h | 10 ++++++++++
> arch/powerpc/include/asm/swiotlb.h | 3 +++
> arch/x86/include/asm/swiotlb.h | 10 ++++++++++
> lib/swiotlb.c | 30 ++++++++++++++++++++++++------
> 4 files changed, 47 insertions(+), 6 deletions(-)
>
> diff --git a/arch/ia64/include/asm/swiotlb.h b/arch/ia64/include/asm/swiotlb.h
> index f0acde6..6722090 100644
> --- a/arch/ia64/include/asm/swiotlb.h
> +++ b/arch/ia64/include/asm/swiotlb.h
> @@ -14,4 +14,14 @@ static inline void pci_swiotlb_init(void)
> }
> #endif
>
> +static inline void swiotlb_dma_sync_page(struct page *page,
> + unsigned long offset,
> + size_t size, int direction)
> +{
> +}
> +
> +static inline void swiotlb_dma_sync(void *vaddr, size_t size, int direction)
> +{
> +}
> +
> #endif /* ASM_IA64__SWIOTLB_H */
> diff --git a/arch/powerpc/include/asm/swiotlb.h b/arch/powerpc/include/asm/swiotlb.h
> index 8979d4c..603b343 100644
> --- a/arch/powerpc/include/asm/swiotlb.h
> +++ b/arch/powerpc/include/asm/swiotlb.h
> @@ -22,4 +22,7 @@ int __init swiotlb_setup_bus_notifier(void);
>
> extern void pci_dma_dev_setup_swiotlb(struct pci_dev *pdev);
>
> +#define swiotlb_dma_sync_page __dma_sync_page
> +#define swiotlb_dma_sync __dma_sync
> +
> #endif /* __ASM_SWIOTLB_H */
> diff --git a/arch/x86/include/asm/swiotlb.h b/arch/x86/include/asm/swiotlb.h
> index 8085277..e5f6d9c 100644
> --- a/arch/x86/include/asm/swiotlb.h
> +++ b/arch/x86/include/asm/swiotlb.h
> @@ -20,4 +20,14 @@ static inline void pci_swiotlb_init(void)
>
> static inline void dma_mark_clean(void *addr, size_t size) {}
>
> +static inline void swiotlb_dma_sync_page(struct page *page,
> + unsigned long offset,
> + size_t size, int direction)
> +{
> +}
> +
> +static inline void swiotlb_dma_sync(void *vaddr, size_t size, int direction)
> +{
> +}
> +
> #endif /* _ASM_X86_SWIOTLB_H */
> diff --git a/lib/swiotlb.c b/lib/swiotlb.c
> index 94db5df..8f2dad9 100644
> --- a/lib/swiotlb.c
> +++ b/lib/swiotlb.c
> @@ -346,10 +346,13 @@ static void swiotlb_bounce(phys_addr_t phys, char *dma_addr, size_t size,
> local_irq_save(flags);
> buffer = kmap_atomic(pfn_to_page(pfn),
> KM_BOUNCE_READ);
> - if (dir = DMA_TO_DEVICE)
> + if (dir = DMA_TO_DEVICE) {
> memcpy(dma_addr, buffer + offset, sz);
> - else
> + swiotlb_dma_sync(dma_addr, sz, dir);
> + } else {
> + swiotlb_dma_sync(dma_addr, sz, dir);
> memcpy(buffer + offset, dma_addr, sz);
> + }
> kunmap_atomic(buffer, KM_BOUNCE_READ);
> local_irq_restore(flags);
>
> @@ -359,10 +362,14 @@ static void swiotlb_bounce(phys_addr_t phys, char *dma_addr, size_t size,
> offset = 0;
> }
> } else {
> - if (dir = DMA_TO_DEVICE)
> + if (dir = DMA_TO_DEVICE) {
> memcpy(dma_addr, phys_to_virt(phys), size);
> - else
> + swiotlb_dma_sync(dma_addr, size, dir);
> +
> + } else {
> + swiotlb_dma_sync(dma_addr, size, dir);
> memcpy(phys_to_virt(phys), dma_addr, size);
> + }
> }
> }
>
> @@ -542,6 +549,8 @@ sync_single(struct device *hwdev, char *dma_addr, size_t size,
> }
> }
>
> +#ifndef CONFIG_NOT_COHERENT_CACHE
> +
> void *
> swiotlb_alloc_coherent(struct device *hwdev, size_t size,
> dma_addr_t *dma_handle, gfp_t flags)
> @@ -606,6 +615,8 @@ swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
> }
> EXPORT_SYMBOL(swiotlb_free_coherent);
>
> +#endif /* !CONFIG_NOT_COHERENT_CACHE */
> +
> static void
> swiotlb_full(struct device *dev, size_t size, int dir, int do_panic)
> {
> @@ -652,8 +663,10 @@ dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,
> * we can safely return the device addr and not worry about bounce
> * buffering it.
> */
> - if (dma_capable(dev, dev_addr, size) && !swiotlb_force)
> + if (dma_capable(dev, dev_addr, size) && !swiotlb_force) {
> + swiotlb_dma_sync_page(page, offset, size, dir);
> return dev_addr;
> + }
>
> /*
> * Oh well, have to allocate and map a bounce buffer.
> @@ -739,6 +752,8 @@ swiotlb_sync_single(struct device *hwdev, dma_addr_t dev_addr,
> return;
> }
>
> + swiotlb_dma_sync(phys_to_virt(paddr), size, dir);
> +
> if (dir != DMA_FROM_DEVICE)
> return;
>
> @@ -835,8 +850,11 @@ swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems,
> return 0;
> }
> sg->dma_address = swiotlb_virt_to_bus(hwdev, map);
> - } else
> + } else {
> + swiotlb_dma_sync_page(sg_page(sg), sg->offset,
> + sg->length, dir);
> sg->dma_address = dev_addr;
> + }
> sg->dma_length = sg->length;
> }
> return nelems;
> --
> 1.6.3.3
>
> --
> 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/
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Albert Herranz <albert_herranz@yahoo.es>
Cc: x86@kernel.org, linux-ia64@vger.kernel.org,
linux-usb@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org
Subject: Re: [LKML] [RFC PATCH v3 04/11] swiotlb: support NOT_COHERENT_CACHE PowerPC platforms
Date: Mon, 8 Mar 2010 11:55:00 -0500 [thread overview]
Message-ID: <20100308165500.GB4568@phenom.dumpdata.com> (raw)
In-Reply-To: <1267963912-984-5-git-send-email-albert_herranz@yahoo.es>
On Sun, Mar 07, 2010 at 01:11:45PM +0100, Albert Herranz wrote:
> The current SWIOTLB code does not support NOT_COHERENT_CACHE platforms.
> This patch adds support for NOT_COHERENT_CACHE platforms to SWIOTLB by
> adding two platform specific functions swiotlb_dma_sync_page() and
> swiotlb_dma_sync() which can be used to explicitly manage cache coherency.
Hey Albert,
I've been doing some posting in this area to split the physical / bus
address translation so that multiple platforms can utilize it. I was
wondering if it makes sense to utilize some of those concepts (ie, extend it
for DMA coherency) for your code:
https://lists.linux-foundation.org/pipermail/iommu/2010-February/002066.html
And here is the git tree that goes on top of those patches:
git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb-2.6.git xen-swiotlb-0.5
>
> On PowerPC these functions are mapped to their corresponding
> __dma_sync_page() and __dma_sync() functions.
> On other architectures using SWIOTLB these functions are optimized out.
>
> This will be used later to support SWIOTLB on the Nintendo Wii video game
> console.
>
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
> CC: linuxppc-dev@lists.ozlabs.org
> CC: linux-kernel@vger.kernel.org
> CC: x86@kernel.org
> CC: linux-ia64@vger.kernel.org
> ---
> arch/ia64/include/asm/swiotlb.h | 10 ++++++++++
> arch/powerpc/include/asm/swiotlb.h | 3 +++
> arch/x86/include/asm/swiotlb.h | 10 ++++++++++
> lib/swiotlb.c | 30 ++++++++++++++++++++++++------
> 4 files changed, 47 insertions(+), 6 deletions(-)
>
> diff --git a/arch/ia64/include/asm/swiotlb.h b/arch/ia64/include/asm/swiotlb.h
> index f0acde6..6722090 100644
> --- a/arch/ia64/include/asm/swiotlb.h
> +++ b/arch/ia64/include/asm/swiotlb.h
> @@ -14,4 +14,14 @@ static inline void pci_swiotlb_init(void)
> }
> #endif
>
> +static inline void swiotlb_dma_sync_page(struct page *page,
> + unsigned long offset,
> + size_t size, int direction)
> +{
> +}
> +
> +static inline void swiotlb_dma_sync(void *vaddr, size_t size, int direction)
> +{
> +}
> +
> #endif /* ASM_IA64__SWIOTLB_H */
> diff --git a/arch/powerpc/include/asm/swiotlb.h b/arch/powerpc/include/asm/swiotlb.h
> index 8979d4c..603b343 100644
> --- a/arch/powerpc/include/asm/swiotlb.h
> +++ b/arch/powerpc/include/asm/swiotlb.h
> @@ -22,4 +22,7 @@ int __init swiotlb_setup_bus_notifier(void);
>
> extern void pci_dma_dev_setup_swiotlb(struct pci_dev *pdev);
>
> +#define swiotlb_dma_sync_page __dma_sync_page
> +#define swiotlb_dma_sync __dma_sync
> +
> #endif /* __ASM_SWIOTLB_H */
> diff --git a/arch/x86/include/asm/swiotlb.h b/arch/x86/include/asm/swiotlb.h
> index 8085277..e5f6d9c 100644
> --- a/arch/x86/include/asm/swiotlb.h
> +++ b/arch/x86/include/asm/swiotlb.h
> @@ -20,4 +20,14 @@ static inline void pci_swiotlb_init(void)
>
> static inline void dma_mark_clean(void *addr, size_t size) {}
>
> +static inline void swiotlb_dma_sync_page(struct page *page,
> + unsigned long offset,
> + size_t size, int direction)
> +{
> +}
> +
> +static inline void swiotlb_dma_sync(void *vaddr, size_t size, int direction)
> +{
> +}
> +
> #endif /* _ASM_X86_SWIOTLB_H */
> diff --git a/lib/swiotlb.c b/lib/swiotlb.c
> index 94db5df..8f2dad9 100644
> --- a/lib/swiotlb.c
> +++ b/lib/swiotlb.c
> @@ -346,10 +346,13 @@ static void swiotlb_bounce(phys_addr_t phys, char *dma_addr, size_t size,
> local_irq_save(flags);
> buffer = kmap_atomic(pfn_to_page(pfn),
> KM_BOUNCE_READ);
> - if (dir == DMA_TO_DEVICE)
> + if (dir == DMA_TO_DEVICE) {
> memcpy(dma_addr, buffer + offset, sz);
> - else
> + swiotlb_dma_sync(dma_addr, sz, dir);
> + } else {
> + swiotlb_dma_sync(dma_addr, sz, dir);
> memcpy(buffer + offset, dma_addr, sz);
> + }
> kunmap_atomic(buffer, KM_BOUNCE_READ);
> local_irq_restore(flags);
>
> @@ -359,10 +362,14 @@ static void swiotlb_bounce(phys_addr_t phys, char *dma_addr, size_t size,
> offset = 0;
> }
> } else {
> - if (dir == DMA_TO_DEVICE)
> + if (dir == DMA_TO_DEVICE) {
> memcpy(dma_addr, phys_to_virt(phys), size);
> - else
> + swiotlb_dma_sync(dma_addr, size, dir);
> +
> + } else {
> + swiotlb_dma_sync(dma_addr, size, dir);
> memcpy(phys_to_virt(phys), dma_addr, size);
> + }
> }
> }
>
> @@ -542,6 +549,8 @@ sync_single(struct device *hwdev, char *dma_addr, size_t size,
> }
> }
>
> +#ifndef CONFIG_NOT_COHERENT_CACHE
> +
> void *
> swiotlb_alloc_coherent(struct device *hwdev, size_t size,
> dma_addr_t *dma_handle, gfp_t flags)
> @@ -606,6 +615,8 @@ swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
> }
> EXPORT_SYMBOL(swiotlb_free_coherent);
>
> +#endif /* !CONFIG_NOT_COHERENT_CACHE */
> +
> static void
> swiotlb_full(struct device *dev, size_t size, int dir, int do_panic)
> {
> @@ -652,8 +663,10 @@ dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,
> * we can safely return the device addr and not worry about bounce
> * buffering it.
> */
> - if (dma_capable(dev, dev_addr, size) && !swiotlb_force)
> + if (dma_capable(dev, dev_addr, size) && !swiotlb_force) {
> + swiotlb_dma_sync_page(page, offset, size, dir);
> return dev_addr;
> + }
>
> /*
> * Oh well, have to allocate and map a bounce buffer.
> @@ -739,6 +752,8 @@ swiotlb_sync_single(struct device *hwdev, dma_addr_t dev_addr,
> return;
> }
>
> + swiotlb_dma_sync(phys_to_virt(paddr), size, dir);
> +
> if (dir != DMA_FROM_DEVICE)
> return;
>
> @@ -835,8 +850,11 @@ swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems,
> return 0;
> }
> sg->dma_address = swiotlb_virt_to_bus(hwdev, map);
> - } else
> + } else {
> + swiotlb_dma_sync_page(sg_page(sg), sg->offset,
> + sg->length, dir);
> sg->dma_address = dev_addr;
> + }
> sg->dma_length = sg->length;
> }
> return nelems;
> --
> 1.6.3.3
>
> --
> 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/
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Albert Herranz <albert_herranz@yahoo.es>
Cc: linux-usb@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org, x86@kernel.org,
linux-ia64@vger.kernel.org
Subject: Re: [LKML] [RFC PATCH v3 04/11] swiotlb: support NOT_COHERENT_CACHE PowerPC platforms
Date: Mon, 8 Mar 2010 11:55:00 -0500 [thread overview]
Message-ID: <20100308165500.GB4568@phenom.dumpdata.com> (raw)
In-Reply-To: <1267963912-984-5-git-send-email-albert_herranz@yahoo.es>
On Sun, Mar 07, 2010 at 01:11:45PM +0100, Albert Herranz wrote:
> The current SWIOTLB code does not support NOT_COHERENT_CACHE platforms.
> This patch adds support for NOT_COHERENT_CACHE platforms to SWIOTLB by
> adding two platform specific functions swiotlb_dma_sync_page() and
> swiotlb_dma_sync() which can be used to explicitly manage cache coherency.
Hey Albert,
I've been doing some posting in this area to split the physical / bus
address translation so that multiple platforms can utilize it. I was
wondering if it makes sense to utilize some of those concepts (ie, extend it
for DMA coherency) for your code:
https://lists.linux-foundation.org/pipermail/iommu/2010-February/002066.html
And here is the git tree that goes on top of those patches:
git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb-2.6.git xen-swiotlb-0.5
>
> On PowerPC these functions are mapped to their corresponding
> __dma_sync_page() and __dma_sync() functions.
> On other architectures using SWIOTLB these functions are optimized out.
>
> This will be used later to support SWIOTLB on the Nintendo Wii video game
> console.
>
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
> CC: linuxppc-dev@lists.ozlabs.org
> CC: linux-kernel@vger.kernel.org
> CC: x86@kernel.org
> CC: linux-ia64@vger.kernel.org
> ---
> arch/ia64/include/asm/swiotlb.h | 10 ++++++++++
> arch/powerpc/include/asm/swiotlb.h | 3 +++
> arch/x86/include/asm/swiotlb.h | 10 ++++++++++
> lib/swiotlb.c | 30 ++++++++++++++++++++++++------
> 4 files changed, 47 insertions(+), 6 deletions(-)
>
> diff --git a/arch/ia64/include/asm/swiotlb.h b/arch/ia64/include/asm/swiotlb.h
> index f0acde6..6722090 100644
> --- a/arch/ia64/include/asm/swiotlb.h
> +++ b/arch/ia64/include/asm/swiotlb.h
> @@ -14,4 +14,14 @@ static inline void pci_swiotlb_init(void)
> }
> #endif
>
> +static inline void swiotlb_dma_sync_page(struct page *page,
> + unsigned long offset,
> + size_t size, int direction)
> +{
> +}
> +
> +static inline void swiotlb_dma_sync(void *vaddr, size_t size, int direction)
> +{
> +}
> +
> #endif /* ASM_IA64__SWIOTLB_H */
> diff --git a/arch/powerpc/include/asm/swiotlb.h b/arch/powerpc/include/asm/swiotlb.h
> index 8979d4c..603b343 100644
> --- a/arch/powerpc/include/asm/swiotlb.h
> +++ b/arch/powerpc/include/asm/swiotlb.h
> @@ -22,4 +22,7 @@ int __init swiotlb_setup_bus_notifier(void);
>
> extern void pci_dma_dev_setup_swiotlb(struct pci_dev *pdev);
>
> +#define swiotlb_dma_sync_page __dma_sync_page
> +#define swiotlb_dma_sync __dma_sync
> +
> #endif /* __ASM_SWIOTLB_H */
> diff --git a/arch/x86/include/asm/swiotlb.h b/arch/x86/include/asm/swiotlb.h
> index 8085277..e5f6d9c 100644
> --- a/arch/x86/include/asm/swiotlb.h
> +++ b/arch/x86/include/asm/swiotlb.h
> @@ -20,4 +20,14 @@ static inline void pci_swiotlb_init(void)
>
> static inline void dma_mark_clean(void *addr, size_t size) {}
>
> +static inline void swiotlb_dma_sync_page(struct page *page,
> + unsigned long offset,
> + size_t size, int direction)
> +{
> +}
> +
> +static inline void swiotlb_dma_sync(void *vaddr, size_t size, int direction)
> +{
> +}
> +
> #endif /* _ASM_X86_SWIOTLB_H */
> diff --git a/lib/swiotlb.c b/lib/swiotlb.c
> index 94db5df..8f2dad9 100644
> --- a/lib/swiotlb.c
> +++ b/lib/swiotlb.c
> @@ -346,10 +346,13 @@ static void swiotlb_bounce(phys_addr_t phys, char *dma_addr, size_t size,
> local_irq_save(flags);
> buffer = kmap_atomic(pfn_to_page(pfn),
> KM_BOUNCE_READ);
> - if (dir == DMA_TO_DEVICE)
> + if (dir == DMA_TO_DEVICE) {
> memcpy(dma_addr, buffer + offset, sz);
> - else
> + swiotlb_dma_sync(dma_addr, sz, dir);
> + } else {
> + swiotlb_dma_sync(dma_addr, sz, dir);
> memcpy(buffer + offset, dma_addr, sz);
> + }
> kunmap_atomic(buffer, KM_BOUNCE_READ);
> local_irq_restore(flags);
>
> @@ -359,10 +362,14 @@ static void swiotlb_bounce(phys_addr_t phys, char *dma_addr, size_t size,
> offset = 0;
> }
> } else {
> - if (dir == DMA_TO_DEVICE)
> + if (dir == DMA_TO_DEVICE) {
> memcpy(dma_addr, phys_to_virt(phys), size);
> - else
> + swiotlb_dma_sync(dma_addr, size, dir);
> +
> + } else {
> + swiotlb_dma_sync(dma_addr, size, dir);
> memcpy(phys_to_virt(phys), dma_addr, size);
> + }
> }
> }
>
> @@ -542,6 +549,8 @@ sync_single(struct device *hwdev, char *dma_addr, size_t size,
> }
> }
>
> +#ifndef CONFIG_NOT_COHERENT_CACHE
> +
> void *
> swiotlb_alloc_coherent(struct device *hwdev, size_t size,
> dma_addr_t *dma_handle, gfp_t flags)
> @@ -606,6 +615,8 @@ swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
> }
> EXPORT_SYMBOL(swiotlb_free_coherent);
>
> +#endif /* !CONFIG_NOT_COHERENT_CACHE */
> +
> static void
> swiotlb_full(struct device *dev, size_t size, int dir, int do_panic)
> {
> @@ -652,8 +663,10 @@ dma_addr_t swiotlb_map_page(struct device *dev, struct page *page,
> * we can safely return the device addr and not worry about bounce
> * buffering it.
> */
> - if (dma_capable(dev, dev_addr, size) && !swiotlb_force)
> + if (dma_capable(dev, dev_addr, size) && !swiotlb_force) {
> + swiotlb_dma_sync_page(page, offset, size, dir);
> return dev_addr;
> + }
>
> /*
> * Oh well, have to allocate and map a bounce buffer.
> @@ -739,6 +752,8 @@ swiotlb_sync_single(struct device *hwdev, dma_addr_t dev_addr,
> return;
> }
>
> + swiotlb_dma_sync(phys_to_virt(paddr), size, dir);
> +
> if (dir != DMA_FROM_DEVICE)
> return;
>
> @@ -835,8 +850,11 @@ swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems,
> return 0;
> }
> sg->dma_address = swiotlb_virt_to_bus(hwdev, map);
> - } else
> + } else {
> + swiotlb_dma_sync_page(sg_page(sg), sg->offset,
> + sg->length, dir);
> sg->dma_address = dev_addr;
> + }
> sg->dma_length = sg->length;
> }
> return nelems;
> --
> 1.6.3.3
>
> --
> 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/
next prev parent reply other threads:[~2010-03-08 16:55 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-07 12:11 [RFC PATCH v3 00/11] wii: add usb 2.0 support Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 01/11] powerpc: add per-device dma coherent support Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 02/11] powerpc: add min_direct_dma_addr Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 03/11] swiotbl: add back swiotlb_alloc_boot() Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 04/11] swiotlb: support NOT_COHERENT_CACHE PowerPC platforms Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-08 16:55 ` Konrad Rzeszutek Wilk [this message]
2010-03-08 16:55 ` [LKML] " Konrad Rzeszutek Wilk
2010-03-08 16:55 ` Konrad Rzeszutek Wilk
2010-03-09 18:07 ` [LKML] [RFC PATCH v3 04/11] swiotlb: support NOT_COHERENT_CACHE Albert Herranz
2010-03-09 18:07 ` [LKML] [RFC PATCH v3 04/11] swiotlb: support NOT_COHERENT_CACHE PowerPC platforms Albert Herranz
2010-03-09 18:07 ` Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 05/11] swiotlb: add swiotlb_set_default_size() Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-08 16:59 ` [LKML] [RFC PATCH v3 05/11] swiotlb: add Konrad Rzeszutek Wilk
2010-03-08 16:59 ` [LKML] [RFC PATCH v3 05/11] swiotlb: add swiotlb_set_default_size() Konrad Rzeszutek Wilk
2010-03-08 16:59 ` Konrad Rzeszutek Wilk
2010-03-09 18:38 ` Albert Herranz
2010-03-09 18:38 ` Albert Herranz
2010-03-09 18:38 ` Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 06/11] USB: refactor unmap_urb_for_dma/map_urb_for_dma Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 07/11] USB: add HCD_NO_COHERENT_MEM host controller driver flag Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 08/11] wii: have generic dma coherent Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 09/11] wii: add mem2 dma mapping ops Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 10/11] wii: enable swiotlb Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 11/11] wii: hollywood ehci controller support Albert Herranz
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=20100308165500.GB4568@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=albert_herranz@yahoo.es \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=x86@kernel.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.