From: FUJITA Tomonori on
On Fri, 12 Mar 2010 20:12:39 +0100
Albert Herranz <albert_herranz(a)yahoo.es> 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.
>
> 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.
>
> CC: linuxppc-dev(a)lists.ozlabs.org
> CC: linux-kernel(a)vger.kernel.org
> CC: x86(a)kernel.org
> CC: linux-ia64(a)vger.kernel.org
> Signed-off-by: Albert Herranz <albert_herranz(a)yahoo.es>
> ---
> 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(-)

Why can't you use dma_sync_single_* instead of inventing new
swiotlb sync functions?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: FUJITA Tomonori on
On Tue, 16 Mar 2010 10:54:40 +0900
FUJITA Tomonori <fujita.tomonori(a)lab.ntt.co.jp> wrote:

> On Fri, 12 Mar 2010 20:12:39 +0100
> Albert Herranz <albert_herranz(a)yahoo.es> 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.
> >
> > 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.
> >
> > CC: linuxppc-dev(a)lists.ozlabs.org
> > CC: linux-kernel(a)vger.kernel.org
> > CC: x86(a)kernel.org
> > CC: linux-ia64(a)vger.kernel.org
> > Signed-off-by: Albert Herranz <albert_herranz(a)yahoo.es>
> > ---
> > 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(-)
>
> Why can't you use dma_sync_single_* instead of inventing new
> swiotlb sync functions?

If we want to make swiotlb generic (make on any architectures), we
need to handle more cache issues here, I think. So it's better to have
more generic ways instead of adding hooks to some archs.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Albert Herranz on
FUJITA Tomonori wrote:
> On Fri, 12 Mar 2010 20:12:39 +0100
> Albert Herranz <albert_herranz(a)yahoo.es> 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.
>>
>> 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.
>>
>> CC: linuxppc-dev(a)lists.ozlabs.org
>> CC: linux-kernel(a)vger.kernel.org
>> CC: x86(a)kernel.org
>> CC: linux-ia64(a)vger.kernel.org
>> Signed-off-by: Albert Herranz <albert_herranz(a)yahoo.es>
>> ---
>> 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(-)
>
> Why can't you use dma_sync_single_* instead of inventing new
> swiotlb sync functions?
>

At least on PowerPC, the DMA ops are per-device hooks. We attach the swiotlb DMA ops functions to those hooks when we are using swiotlb.
So calling dma_sync_single_*() would end up calling swiotlb_sync_single_*() which is not what we want.

Thanks,
Albert

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