* Re: [RFC PATCH 1/3] riscv: errata: cmo: add CMO macro variant with both VA and PA [not found] ` <20230104074146.578485-2-uwu@icenowy.me> @ 2023-01-04 8:48 ` Guo Ren 0 siblings, 0 replies; 7+ messages in thread From: Guo Ren @ 2023-01-04 8:48 UTC (permalink / raw) To: Icenowy Zheng Cc: Paul Walmsley, Palmer Dabbelt, Albert Ou, Heiko Stuebner, Samuel Holland, Conor Dooley, linux-riscv, linux-kernel Thx for the patch! It's nice. Reviewed-by: Guo Ren <guoren@kernel.org> On Wed, Jan 4, 2023 at 3:42 PM Icenowy Zheng <uwu@icenowy.me> wrote: > > The standardized Zicbom extension supports only VA, however there's some > vendor extensions (e.g. XtheadCmo) that can handle cache management > operations on PA directly, bypassing the TLB lookup. > > Add a CMO alternatives macro variant that come with both VA and PA > supplied, and the code can be patched to use either the VA or the PA at > runtime. In this case the codepath is now patched to use VA for Zicbom > and PA for XtheadCmo. > > Signed-off-by: Icenowy Zheng <uwu@icenowy.me> > --- > arch/riscv/include/asm/errata_list.h | 30 ++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > > diff --git a/arch/riscv/include/asm/errata_list.h b/arch/riscv/include/asm/errata_list.h > index 46adc1c9428f..bf80dd58145e 100644 > --- a/arch/riscv/include/asm/errata_list.h > +++ b/arch/riscv/include/asm/errata_list.h > @@ -118,6 +118,9 @@ asm volatile(ALTERNATIVE( \ > #define THEAD_clean_A0 ".long 0x0255000b" > #define THEAD_flush_A0 ".long 0x0275000b" > #define THEAD_SYNC_S ".long 0x0190000b" > +#define THEAD_inval_PA_A0 ".long 0x02a5000b" > +#define THEAD_clean_PA_A0 ".long 0x0295000b" > +#define THEAD_flush_PA_A0 ".long 0x02b5000b" > > #define ALT_CMO_OP(_op, _start, _size, _cachesize) \ > asm volatile(ALTERNATIVE_2( \ > @@ -144,6 +147,33 @@ asm volatile(ALTERNATIVE_2( \ > "r"((unsigned long)(_start) + (_size)) \ > : "a0") > > +#define ALT_CMO_OP_VPA(_op, _vaddr, _paddr, _size, _cachesize) \ > +asm volatile(ALTERNATIVE_2( \ > + __nops(6), \ > + "mv a0, %1\n\t" \ > + "j 2f\n\t" \ > + "3:\n\t" \ > + "cbo." __stringify(_op) " (a0)\n\t" \ > + "add a0, a0, %0\n\t" \ > + "2:\n\t" \ > + "bltu a0, %2, 3b\n\t" \ > + "nop", 0, CPUFEATURE_ZICBOM, CONFIG_RISCV_ISA_ZICBOM, \ > + "mv a0, %3\n\t" \ > + "j 2f\n\t" \ > + "3:\n\t" \ > + THEAD_##_op##_PA_A0 "\n\t" \ > + "add a0, a0, %0\n\t" \ > + "2:\n\t" \ > + "bltu a0, %4, 3b\n\t" \ > + THEAD_SYNC_S, THEAD_VENDOR_ID, \ > + ERRATA_THEAD_CMO, CONFIG_ERRATA_THEAD_CMO) \ > + : : "r"(_cachesize), \ > + "r"((unsigned long)(_vaddr) & ~((_cachesize) - 1UL)), \ > + "r"((unsigned long)(_vaddr) + (_size)), \ > + "r"((unsigned long)(_paddr) & ~((_cachesize) - 1UL)), \ > + "r"((unsigned long)(_paddr) + (_size)) \ > + : "a0") > + > #define THEAD_C9XX_RV_IRQ_PMU 17 > #define THEAD_C9XX_CSR_SCOUNTEROF 0x5c5 > > -- > 2.38.1 > -- Best Regards Guo Ren ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <20230104074146.578485-3-uwu@icenowy.me>]
* Re: [RFC PATCH 2/3] riscv: use VA+PA variant of CMO macros for DMA synchorization [not found] ` <20230104074146.578485-3-uwu@icenowy.me> @ 2023-01-04 8:50 ` Guo Ren 2023-01-04 8:59 ` Icenowy Zheng 0 siblings, 1 reply; 7+ messages in thread From: Guo Ren @ 2023-01-04 8:50 UTC (permalink / raw) To: Icenowy Zheng Cc: Paul Walmsley, Palmer Dabbelt, Albert Ou, Heiko Stuebner, Samuel Holland, Conor Dooley, linux-riscv, linux-kernel On Wed, Jan 4, 2023 at 3:43 PM Icenowy Zheng <uwu@icenowy.me> wrote: > > DMA synchorization is done on PA and the VA is calculated from the PA. > > Use the alternative macro variant that takes both VA and PA as > parameters, thus in case the ISA extension used support PA directly, the > overhead for re-converting VA to PA can be omitted. > > Suggested-by: Guo Ren <guoren@kernel.org> > Signed-off-by: Icenowy Zheng <uwu@icenowy.me> > --- > arch/riscv/mm/dma-noncoherent.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/riscv/mm/dma-noncoherent.c b/arch/riscv/mm/dma-noncoherent.c > index d919efab6eba..a751f4aece62 100644 > --- a/arch/riscv/mm/dma-noncoherent.c > +++ b/arch/riscv/mm/dma-noncoherent.c > @@ -19,13 +19,13 @@ void arch_sync_dma_for_device(phys_addr_t paddr, size_t size, > > switch (dir) { > case DMA_TO_DEVICE: > - ALT_CMO_OP(clean, vaddr, size, riscv_cbom_block_size); > + ALT_CMO_OP_VPA(clean, vaddr, paddr, size, riscv_cbom_block_size); ALT_CMO_OP -> ALT_CMO_OP_VPA, is the renaming necessary? Others: Reviewed-by: Guo Ren <guoren@kernel.org> > break; > case DMA_FROM_DEVICE: > - ALT_CMO_OP(clean, vaddr, size, riscv_cbom_block_size); > + ALT_CMO_OP_VPA(clean, vaddr, paddr, size, riscv_cbom_block_size); > break; > case DMA_BIDIRECTIONAL: > - ALT_CMO_OP(flush, vaddr, size, riscv_cbom_block_size); > + ALT_CMO_OP_VPA(flush, vaddr, paddr, size, riscv_cbom_block_size); > break; > default: > break; > @@ -42,7 +42,7 @@ void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size, > break; > case DMA_FROM_DEVICE: > case DMA_BIDIRECTIONAL: > - ALT_CMO_OP(flush, vaddr, size, riscv_cbom_block_size); > + ALT_CMO_OP_VPA(flush, vaddr, paddr, size, riscv_cbom_block_size); > break; > default: > break; > -- > 2.38.1 > -- Best Regards Guo Ren ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC PATCH 2/3] riscv: use VA+PA variant of CMO macros for DMA synchorization 2023-01-04 8:50 ` [RFC PATCH 2/3] riscv: use VA+PA variant of CMO macros for DMA synchorization Guo Ren @ 2023-01-04 8:59 ` Icenowy Zheng 2023-01-04 9:24 ` Guo Ren 0 siblings, 1 reply; 7+ messages in thread From: Icenowy Zheng @ 2023-01-04 8:59 UTC (permalink / raw) To: Guo Ren Cc: Paul Walmsley, Palmer Dabbelt, Albert Ou, Heiko Stuebner, Samuel Holland, Conor Dooley, linux-riscv, linux-kernel 在 2023-01-04星期三的 16:50 +0800,Guo Ren写道: > On Wed, Jan 4, 2023 at 3:43 PM Icenowy Zheng <uwu@icenowy.me> wrote: > > > > DMA synchorization is done on PA and the VA is calculated from the > > PA. > > > > Use the alternative macro variant that takes both VA and PA as > > parameters, thus in case the ISA extension used support PA > > directly, the > > overhead for re-converting VA to PA can be omitted. > > > > Suggested-by: Guo Ren <guoren@kernel.org> > > Signed-off-by: Icenowy Zheng <uwu@icenowy.me> > > --- > > arch/riscv/mm/dma-noncoherent.c | 8 ++++---- > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > diff --git a/arch/riscv/mm/dma-noncoherent.c b/arch/riscv/mm/dma- > > noncoherent.c > > index d919efab6eba..a751f4aece62 100644 > > --- a/arch/riscv/mm/dma-noncoherent.c > > +++ b/arch/riscv/mm/dma-noncoherent.c > > @@ -19,13 +19,13 @@ void arch_sync_dma_for_device(phys_addr_t > > paddr, size_t size, > > > > switch (dir) { > > case DMA_TO_DEVICE: > > - ALT_CMO_OP(clean, vaddr, size, > > riscv_cbom_block_size); > > + ALT_CMO_OP_VPA(clean, vaddr, paddr, size, > > riscv_cbom_block_size); > ALT_CMO_OP -> ALT_CMO_OP_VPA, is the renaming necessary? I didn't rename the original ALT_CMO_OP, ALT_CMO_OP_VPA is something new. > > Others: > Reviewed-by: Guo Ren <guoren@kernel.org> > > > break; > > case DMA_FROM_DEVICE: > > - ALT_CMO_OP(clean, vaddr, size, > > riscv_cbom_block_size); > > + ALT_CMO_OP_VPA(clean, vaddr, paddr, size, > > riscv_cbom_block_size); > > break; > > case DMA_BIDIRECTIONAL: > > - ALT_CMO_OP(flush, vaddr, size, > > riscv_cbom_block_size); > > + ALT_CMO_OP_VPA(flush, vaddr, paddr, size, > > riscv_cbom_block_size); > > break; > > default: > > break; > > @@ -42,7 +42,7 @@ void arch_sync_dma_for_cpu(phys_addr_t paddr, > > size_t size, > > break; > > case DMA_FROM_DEVICE: > > case DMA_BIDIRECTIONAL: > > - ALT_CMO_OP(flush, vaddr, size, > > riscv_cbom_block_size); > > + ALT_CMO_OP_VPA(flush, vaddr, paddr, size, > > riscv_cbom_block_size); > > break; > > default: > > break; > > -- > > 2.38.1 > > > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC PATCH 2/3] riscv: use VA+PA variant of CMO macros for DMA synchorization 2023-01-04 8:59 ` Icenowy Zheng @ 2023-01-04 9:24 ` Guo Ren 2023-01-04 9:27 ` Icenowy Zheng 0 siblings, 1 reply; 7+ messages in thread From: Guo Ren @ 2023-01-04 9:24 UTC (permalink / raw) To: Icenowy Zheng Cc: Paul Walmsley, Palmer Dabbelt, Albert Ou, Heiko Stuebner, Samuel Holland, Conor Dooley, linux-riscv, linux-kernel On Wed, Jan 4, 2023 at 4:59 PM Icenowy Zheng <uwu@icenowy.me> wrote: > > 在 2023-01-04星期三的 16:50 +0800,Guo Ren写道: > > On Wed, Jan 4, 2023 at 3:43 PM Icenowy Zheng <uwu@icenowy.me> wrote: > > > > > > DMA synchorization is done on PA and the VA is calculated from the > > > PA. > > > > > > Use the alternative macro variant that takes both VA and PA as > > > parameters, thus in case the ISA extension used support PA > > > directly, the > > > overhead for re-converting VA to PA can be omitted. > > > > > > Suggested-by: Guo Ren <guoren@kernel.org> > > > Signed-off-by: Icenowy Zheng <uwu@icenowy.me> > > > --- > > > arch/riscv/mm/dma-noncoherent.c | 8 ++++---- > > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > > > diff --git a/arch/riscv/mm/dma-noncoherent.c b/arch/riscv/mm/dma- > > > noncoherent.c > > > index d919efab6eba..a751f4aece62 100644 > > > --- a/arch/riscv/mm/dma-noncoherent.c > > > +++ b/arch/riscv/mm/dma-noncoherent.c > > > @@ -19,13 +19,13 @@ void arch_sync_dma_for_device(phys_addr_t > > > paddr, size_t size, > > > > > > switch (dir) { > > > case DMA_TO_DEVICE: > > > - ALT_CMO_OP(clean, vaddr, size, > > > riscv_cbom_block_size); > > > + ALT_CMO_OP_VPA(clean, vaddr, paddr, size, > > > riscv_cbom_block_size); > > ALT_CMO_OP -> ALT_CMO_OP_VPA, is the renaming necessary? > > I didn't rename the original ALT_CMO_OP, ALT_CMO_OP_VPA is something > new. The ##_VPA is really strange. How about: ALT_CMO_OP -> ALT_CMO_OP_VA ALT_CMO_OP_VPA -> ALT_CMO_OP > > > > > Others: > > Reviewed-by: Guo Ren <guoren@kernel.org> > > > > > break; > > > case DMA_FROM_DEVICE: > > > - ALT_CMO_OP(clean, vaddr, size, > > > riscv_cbom_block_size); > > > + ALT_CMO_OP_VPA(clean, vaddr, paddr, size, > > > riscv_cbom_block_size); > > > break; > > > case DMA_BIDIRECTIONAL: > > > - ALT_CMO_OP(flush, vaddr, size, > > > riscv_cbom_block_size); > > > + ALT_CMO_OP_VPA(flush, vaddr, paddr, size, > > > riscv_cbom_block_size); > > > break; > > > default: > > > break; > > > @@ -42,7 +42,7 @@ void arch_sync_dma_for_cpu(phys_addr_t paddr, > > > size_t size, > > > break; > > > case DMA_FROM_DEVICE: > > > case DMA_BIDIRECTIONAL: > > > - ALT_CMO_OP(flush, vaddr, size, > > > riscv_cbom_block_size); > > > + ALT_CMO_OP_VPA(flush, vaddr, paddr, size, > > > riscv_cbom_block_size); > > > break; > > > default: > > > break; > > > -- > > > 2.38.1 > > > > > > > > -- Best Regards Guo Ren ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC PATCH 2/3] riscv: use VA+PA variant of CMO macros for DMA synchorization 2023-01-04 9:24 ` Guo Ren @ 2023-01-04 9:27 ` Icenowy Zheng 2023-01-04 12:16 ` Heiko Stübner 0 siblings, 1 reply; 7+ messages in thread From: Icenowy Zheng @ 2023-01-04 9:27 UTC (permalink / raw) To: Guo Ren Cc: Paul Walmsley, Palmer Dabbelt, Albert Ou, Heiko Stuebner, Samuel Holland, Conor Dooley, linux-riscv, linux-kernel 在 2023-01-04星期三的 17:24 +0800,Guo Ren写道: > On Wed, Jan 4, 2023 at 4:59 PM Icenowy Zheng <uwu@icenowy.me> wrote: > > > > 在 2023-01-04星期三的 16:50 +0800,Guo Ren写道: > > > On Wed, Jan 4, 2023 at 3:43 PM Icenowy Zheng <uwu@icenowy.me> > > > wrote: > > > > > > > > DMA synchorization is done on PA and the VA is calculated from > > > > the > > > > PA. > > > > > > > > Use the alternative macro variant that takes both VA and PA as > > > > parameters, thus in case the ISA extension used support PA > > > > directly, the > > > > overhead for re-converting VA to PA can be omitted. > > > > > > > > Suggested-by: Guo Ren <guoren@kernel.org> > > > > Signed-off-by: Icenowy Zheng <uwu@icenowy.me> > > > > --- > > > > arch/riscv/mm/dma-noncoherent.c | 8 ++++---- > > > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > > > > > diff --git a/arch/riscv/mm/dma-noncoherent.c > > > > b/arch/riscv/mm/dma- > > > > noncoherent.c > > > > index d919efab6eba..a751f4aece62 100644 > > > > --- a/arch/riscv/mm/dma-noncoherent.c > > > > +++ b/arch/riscv/mm/dma-noncoherent.c > > > > @@ -19,13 +19,13 @@ void arch_sync_dma_for_device(phys_addr_t > > > > paddr, size_t size, > > > > > > > > switch (dir) { > > > > case DMA_TO_DEVICE: > > > > - ALT_CMO_OP(clean, vaddr, size, > > > > riscv_cbom_block_size); > > > > + ALT_CMO_OP_VPA(clean, vaddr, paddr, size, > > > > riscv_cbom_block_size); > > > ALT_CMO_OP -> ALT_CMO_OP_VPA, is the renaming necessary? > > > > I didn't rename the original ALT_CMO_OP, ALT_CMO_OP_VPA is > > something > > new. > The ##_VPA is really strange. > > How about: > ALT_CMO_OP -> ALT_CMO_OP_VA > ALT_CMO_OP_VPA -> ALT_CMO_OP It's thus a much bigger change. If you are not fond of _VPA, I can rename it to _VA_PA. > > > > > > > > > Others: > > > Reviewed-by: Guo Ren <guoren@kernel.org> > > > > > > > break; > > > > case DMA_FROM_DEVICE: > > > > - ALT_CMO_OP(clean, vaddr, size, > > > > riscv_cbom_block_size); > > > > + ALT_CMO_OP_VPA(clean, vaddr, paddr, size, > > > > riscv_cbom_block_size); > > > > break; > > > > case DMA_BIDIRECTIONAL: > > > > - ALT_CMO_OP(flush, vaddr, size, > > > > riscv_cbom_block_size); > > > > + ALT_CMO_OP_VPA(flush, vaddr, paddr, size, > > > > riscv_cbom_block_size); > > > > break; > > > > default: > > > > break; > > > > @@ -42,7 +42,7 @@ void arch_sync_dma_for_cpu(phys_addr_t paddr, > > > > size_t size, > > > > break; > > > > case DMA_FROM_DEVICE: > > > > case DMA_BIDIRECTIONAL: > > > > - ALT_CMO_OP(flush, vaddr, size, > > > > riscv_cbom_block_size); > > > > + ALT_CMO_OP_VPA(flush, vaddr, paddr, size, > > > > riscv_cbom_block_size); > > > > break; > > > > default: > > > > break; > > > > -- > > > > 2.38.1 > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC PATCH 2/3] riscv: use VA+PA variant of CMO macros for DMA synchorization 2023-01-04 9:27 ` Icenowy Zheng @ 2023-01-04 12:16 ` Heiko Stübner 2023-01-06 7:38 ` Icenowy Zheng 0 siblings, 1 reply; 7+ messages in thread From: Heiko Stübner @ 2023-01-04 12:16 UTC (permalink / raw) To: Guo Ren, Icenowy Zheng Cc: Paul Walmsley, Palmer Dabbelt, Albert Ou, Samuel Holland, Conor Dooley, linux-riscv, linux-kernel Hi, Am Mittwoch, 4. Januar 2023, 10:27:53 CET schrieb Icenowy Zheng: > 在 2023-01-04星期三的 17:24 +0800,Guo Ren写道: > > On Wed, Jan 4, 2023 at 4:59 PM Icenowy Zheng <uwu@icenowy.me> wrote: > > > > > > 在 2023-01-04星期三的 16:50 +0800,Guo Ren写道: > > > > On Wed, Jan 4, 2023 at 3:43 PM Icenowy Zheng <uwu@icenowy.me> > > > > wrote: > > > > > > > > > > DMA synchorization is done on PA and the VA is calculated from > > > > > the > > > > > PA. > > > > > > > > > > Use the alternative macro variant that takes both VA and PA as > > > > > parameters, thus in case the ISA extension used support PA > > > > > directly, the > > > > > overhead for re-converting VA to PA can be omitted. > > > > > > > > > > Suggested-by: Guo Ren <guoren@kernel.org> > > > > > Signed-off-by: Icenowy Zheng <uwu@icenowy.me> > > > > > --- > > > > > arch/riscv/mm/dma-noncoherent.c | 8 ++++---- > > > > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > > > > > > > diff --git a/arch/riscv/mm/dma-noncoherent.c > > > > > b/arch/riscv/mm/dma- > > > > > noncoherent.c > > > > > index d919efab6eba..a751f4aece62 100644 > > > > > --- a/arch/riscv/mm/dma-noncoherent.c > > > > > +++ b/arch/riscv/mm/dma-noncoherent.c > > > > > @@ -19,13 +19,13 @@ void arch_sync_dma_for_device(phys_addr_t > > > > > paddr, size_t size, > > > > > > > > > > switch (dir) { > > > > > case DMA_TO_DEVICE: > > > > > - ALT_CMO_OP(clean, vaddr, size, > > > > > riscv_cbom_block_size); > > > > > + ALT_CMO_OP_VPA(clean, vaddr, paddr, size, > > > > > riscv_cbom_block_size); > > > > ALT_CMO_OP -> ALT_CMO_OP_VPA, is the renaming necessary? > > > > > > I didn't rename the original ALT_CMO_OP, ALT_CMO_OP_VPA is > > > something > > > new. > > The ##_VPA is really strange. > > > > How about: > > ALT_CMO_OP -> ALT_CMO_OP_VA > > ALT_CMO_OP_VPA -> ALT_CMO_OP > > It's thus a much bigger change. > > If you are not fond of _VPA, I can rename it to _VA_PA. before you spend too much time on this, there is currently a parallel discussion running about including all the other different vendor- specific cache management. See [0] and the thread before that for reference. The consensus seems to be that cache-handling itself is not fast anyway, and therefore to reduce complexity for the cache handling and move non-zicbom cache-handling into a indirect function call that the can be overridden at runtime. Heiko [0] https://lore.kernel.org/all/43aee000-5b89-4d94-98d2-b37b1a18a83e@app.fastmail.com/ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [RFC PATCH 2/3] riscv: use VA+PA variant of CMO macros for DMA synchorization 2023-01-04 12:16 ` Heiko Stübner @ 2023-01-06 7:38 ` Icenowy Zheng 0 siblings, 0 replies; 7+ messages in thread From: Icenowy Zheng @ 2023-01-06 7:38 UTC (permalink / raw) To: Heiko Stübner, Guo Ren Cc: Paul Walmsley, Palmer Dabbelt, Albert Ou, Samuel Holland, Conor Dooley, linux-riscv, linux-kernel 在 2023-01-04星期三的 13:16 +0100,Heiko Stübner写道: > Hi, > > Am Mittwoch, 4. Januar 2023, 10:27:53 CET schrieb Icenowy Zheng: > > 在 2023-01-04星期三的 17:24 +0800,Guo Ren写道: > > > On Wed, Jan 4, 2023 at 4:59 PM Icenowy Zheng <uwu@icenowy.me> > > > wrote: > > > > > > > > 在 2023-01-04星期三的 16:50 +0800,Guo Ren写道: > > > > > On Wed, Jan 4, 2023 at 3:43 PM Icenowy Zheng <uwu@icenowy.me> > > > > > wrote: > > > > > > > > > > > > DMA synchorization is done on PA and the VA is calculated > > > > > > from > > > > > > the > > > > > > PA. > > > > > > > > > > > > Use the alternative macro variant that takes both VA and PA > > > > > > as > > > > > > parameters, thus in case the ISA extension used support PA > > > > > > directly, the > > > > > > overhead for re-converting VA to PA can be omitted. > > > > > > > > > > > > Suggested-by: Guo Ren <guoren@kernel.org> > > > > > > Signed-off-by: Icenowy Zheng <uwu@icenowy.me> > > > > > > --- > > > > > > arch/riscv/mm/dma-noncoherent.c | 8 ++++---- > > > > > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > > > > > > > > > diff --git a/arch/riscv/mm/dma-noncoherent.c > > > > > > b/arch/riscv/mm/dma- > > > > > > noncoherent.c > > > > > > index d919efab6eba..a751f4aece62 100644 > > > > > > --- a/arch/riscv/mm/dma-noncoherent.c > > > > > > +++ b/arch/riscv/mm/dma-noncoherent.c > > > > > > @@ -19,13 +19,13 @@ void > > > > > > arch_sync_dma_for_device(phys_addr_t > > > > > > paddr, size_t size, > > > > > > > > > > > > switch (dir) { > > > > > > case DMA_TO_DEVICE: > > > > > > - ALT_CMO_OP(clean, vaddr, size, > > > > > > riscv_cbom_block_size); > > > > > > + ALT_CMO_OP_VPA(clean, vaddr, paddr, size, > > > > > > riscv_cbom_block_size); > > > > > ALT_CMO_OP -> ALT_CMO_OP_VPA, is the renaming necessary? > > > > > > > > I didn't rename the original ALT_CMO_OP, ALT_CMO_OP_VPA is > > > > something > > > > new. > > > The ##_VPA is really strange. > > > > > > How about: > > > ALT_CMO_OP -> ALT_CMO_OP_VA > > > ALT_CMO_OP_VPA -> ALT_CMO_OP > > > > It's thus a much bigger change. > > > > If you are not fond of _VPA, I can rename it to _VA_PA. > > before you spend too much time on this, there is currently a parallel > discussion running about including all the other different vendor- > specific cache management. > > See [0] and the thread before that for reference. The code shown here seems to be only a draft, and not even testable. > > The consensus seems to be that cache-handling itself is not fast > anyway, > and therefore to reduce complexity for the cache handling and move > non-zicbom cache-handling into a indirect function call that the can > be > overridden at runtime. Well yes I tested this patchset on my LiteX with OpenC906, and it does not help at all on LiteETH throughtput. So maybe this is only some theortical gain. > > > Heiko > > [0] > https://lore.kernel.org/all/43aee000-5b89-4d94-98d2-b37b1a18a83e@app.fastmail.com/ > > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-01-06 7:39 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20230104074146.578485-1-uwu@icenowy.me>
[not found] ` <20230104074146.578485-2-uwu@icenowy.me>
2023-01-04 8:48 ` [RFC PATCH 1/3] riscv: errata: cmo: add CMO macro variant with both VA and PA Guo Ren
[not found] ` <20230104074146.578485-3-uwu@icenowy.me>
2023-01-04 8:50 ` [RFC PATCH 2/3] riscv: use VA+PA variant of CMO macros for DMA synchorization Guo Ren
2023-01-04 8:59 ` Icenowy Zheng
2023-01-04 9:24 ` Guo Ren
2023-01-04 9:27 ` Icenowy Zheng
2023-01-04 12:16 ` Heiko Stübner
2023-01-06 7:38 ` Icenowy Zheng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox