From: "Heiko Stübner" <heiko@sntech.de>
To: Guo Ren <guoren@kernel.org>
Cc: Palmer Dabbelt <palmer@dabbelt.com>,
Paul Walmsley <paul.walmsley@sifive.com>,
linux-riscv <linux-riscv@lists.infradead.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Wei Fu <wefu@redhat.com>,
Christoph Muellner <cmuellner@linux.com>,
Philipp Tomsich <philipp.tomsich@vrull.eu>,
Christoph Hellwig <hch@lst.de>,
Samuel Holland <samuel@sholland.org>,
Atish Patra <atishp@atishpatra.org>,
Anup Patel <anup@brainfault.org>,
Nick Kossifidis <mick@ics.forth.gr>,
Rob Herring <robh+dt@kernel.org>,
krzk+dt@kernel.org, devicetree <devicetree@vger.kernel.org>,
Drew Fustini <drew@beagleboard.org>,
Randy Dunlap <rdunlap@infradead.org>,
Atish Patra <atish.patra@wdc.com>
Subject: Re: [PATCH v6 3/4] riscv: Add support for non-coherent devices using zicbom extension
Date: Thu, 07 Jul 2022 01:02:36 +0200 [thread overview]
Message-ID: <3111003.5fSG56mABF@diego> (raw)
In-Reply-To: <CAJF2gTT6DzPihaP+BHLM6Wvn=Hba-jb-bhs96U3+ApdSmT593g@mail.gmail.com>
Hi Guo,
Am Mittwoch, 6. Juli 2022, 01:32:12 CEST schrieb Guo Ren:
> On Wed, Jul 6, 2022 at 6:47 AM Heiko Stuebner <heiko@sntech.de> wrote:
> >
> > The Zicbom ISA-extension was ratified in november 2021
> > and introduces instructions for dcache invalidate, clean
> > and flush operations.
> >
> > Implement cache management operations for non-coherent devices
> > based on them.
> >
> > Of course not all cores will support this, so implement an
> > alternative-based mechanism that replaces empty instructions
> > with ones done around Zicbom instructions.
> >
> > As discussed in previous versions, assume the platform
> > being coherent by default so that non-coherent devices need
> > to get marked accordingly by firmware.
> >
> > Reviewed-by: Christoph Hellwig <hch@lst.de>
> > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> > Cc: Christoph Hellwig <hch@lst.de>
> > Cc: Atish Patra <atish.patra@wdc.com>
> > Cc: Guo Ren <guoren@kernel.org>
> > Cc: Anup Patel <anup@brainfault.org>
> > ---
> > arch/riscv/Kconfig | 31 ++++++++
> > arch/riscv/Makefile | 4 +
> > arch/riscv/include/asm/cache.h | 4 +
> > arch/riscv/include/asm/cacheflush.h | 10 +++
> > arch/riscv/include/asm/errata_list.h | 19 ++++-
> > arch/riscv/include/asm/hwcap.h | 1 +
> > arch/riscv/kernel/cpu.c | 1 +
> > arch/riscv/kernel/cpufeature.c | 24 ++++++
> > arch/riscv/kernel/setup.c | 2 +
> > arch/riscv/mm/Makefile | 1 +
> > arch/riscv/mm/dma-noncoherent.c | 112 +++++++++++++++++++++++++++
> > 11 files changed, 208 insertions(+), 1 deletion(-)
> > create mode 100644 arch/riscv/mm/dma-noncoherent.c
> >
> > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> > index 32ffef9f6e5b..f7b2b3a4b7f1 100644
> > --- a/arch/riscv/Kconfig
> > +++ b/arch/riscv/Kconfig
> > @@ -113,6 +113,7 @@ config RISCV
> > select MODULES_USE_ELF_RELA if MODULES
> > select MODULE_SECTIONS if MODULES
> > select OF
> > + select OF_DMA_DEFAULT_COHERENT
> > select OF_EARLY_FLATTREE
> > select OF_IRQ
> > select PCI_DOMAINS_GENERIC if PCI
> > @@ -218,6 +219,14 @@ config PGTABLE_LEVELS
> > config LOCKDEP_SUPPORT
> > def_bool y
> >
> > +config RISCV_DMA_NONCOHERENT
> > + bool
> > + select ARCH_HAS_DMA_PREP_COHERENT
> > + select ARCH_HAS_SYNC_DMA_FOR_DEVICE
> > + select ARCH_HAS_SYNC_DMA_FOR_CPU
> > + select ARCH_HAS_SETUP_DMA_OPS
> > + select DMA_DIRECT_REMAP
> > +
> > source "arch/riscv/Kconfig.socs"
> > source "arch/riscv/Kconfig.erratas"
> >
> > @@ -376,6 +385,28 @@ config RISCV_ISA_SVPBMT
> >
> > If you don't know what to do here, say Y.
> >
> > +config CC_HAS_ZICBOM
> > + bool
> > + default y if 64BIT && $(cc-option,-mabi=lp64 -march=rv64ima_zicbom)
> > + default y if 32BIT && $(cc-option,-mabi=lp64 -march=rv32ima_zicbom)
>
> -mabi=lp64 for rv32?
Thanks for catching that! :-)
When I converted over to using the real instructions for Zicbom instead of
pre-coded ones, I used a different format first for detecting the Zicbom
existence and I guess when moving over to the above I made a mistake
in the conversion.
In any case, that should of course be ilp32, same as in the Makefile.
With updated opensbi and Qemu I have now re-tested all possible
combinations and am pretty hopefully that this should fit now.
v7 following shortly.
Thanks
Heiko
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko@sntech.de>
To: Guo Ren <guoren@kernel.org>
Cc: Palmer Dabbelt <palmer@dabbelt.com>,
Paul Walmsley <paul.walmsley@sifive.com>,
linux-riscv <linux-riscv@lists.infradead.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Wei Fu <wefu@redhat.com>,
Christoph Muellner <cmuellner@linux.com>,
Philipp Tomsich <philipp.tomsich@vrull.eu>,
Christoph Hellwig <hch@lst.de>,
Samuel Holland <samuel@sholland.org>,
Atish Patra <atishp@atishpatra.org>,
Anup Patel <anup@brainfault.org>,
Nick Kossifidis <mick@ics.forth.gr>,
Rob Herring <robh+dt@kernel.org>,
krzk+dt@kernel.org, devicetree <devicetree@vger.kernel.org>,
Drew Fustini <drew@beagleboard.org>,
Randy Dunlap <rdunlap@infradead.org>,
Atish Patra <atish.patra@wdc.com>
Subject: Re: [PATCH v6 3/4] riscv: Add support for non-coherent devices using zicbom extension
Date: Thu, 07 Jul 2022 01:02:36 +0200 [thread overview]
Message-ID: <3111003.5fSG56mABF@diego> (raw)
In-Reply-To: <CAJF2gTT6DzPihaP+BHLM6Wvn=Hba-jb-bhs96U3+ApdSmT593g@mail.gmail.com>
Hi Guo,
Am Mittwoch, 6. Juli 2022, 01:32:12 CEST schrieb Guo Ren:
> On Wed, Jul 6, 2022 at 6:47 AM Heiko Stuebner <heiko@sntech.de> wrote:
> >
> > The Zicbom ISA-extension was ratified in november 2021
> > and introduces instructions for dcache invalidate, clean
> > and flush operations.
> >
> > Implement cache management operations for non-coherent devices
> > based on them.
> >
> > Of course not all cores will support this, so implement an
> > alternative-based mechanism that replaces empty instructions
> > with ones done around Zicbom instructions.
> >
> > As discussed in previous versions, assume the platform
> > being coherent by default so that non-coherent devices need
> > to get marked accordingly by firmware.
> >
> > Reviewed-by: Christoph Hellwig <hch@lst.de>
> > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> > Cc: Christoph Hellwig <hch@lst.de>
> > Cc: Atish Patra <atish.patra@wdc.com>
> > Cc: Guo Ren <guoren@kernel.org>
> > Cc: Anup Patel <anup@brainfault.org>
> > ---
> > arch/riscv/Kconfig | 31 ++++++++
> > arch/riscv/Makefile | 4 +
> > arch/riscv/include/asm/cache.h | 4 +
> > arch/riscv/include/asm/cacheflush.h | 10 +++
> > arch/riscv/include/asm/errata_list.h | 19 ++++-
> > arch/riscv/include/asm/hwcap.h | 1 +
> > arch/riscv/kernel/cpu.c | 1 +
> > arch/riscv/kernel/cpufeature.c | 24 ++++++
> > arch/riscv/kernel/setup.c | 2 +
> > arch/riscv/mm/Makefile | 1 +
> > arch/riscv/mm/dma-noncoherent.c | 112 +++++++++++++++++++++++++++
> > 11 files changed, 208 insertions(+), 1 deletion(-)
> > create mode 100644 arch/riscv/mm/dma-noncoherent.c
> >
> > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> > index 32ffef9f6e5b..f7b2b3a4b7f1 100644
> > --- a/arch/riscv/Kconfig
> > +++ b/arch/riscv/Kconfig
> > @@ -113,6 +113,7 @@ config RISCV
> > select MODULES_USE_ELF_RELA if MODULES
> > select MODULE_SECTIONS if MODULES
> > select OF
> > + select OF_DMA_DEFAULT_COHERENT
> > select OF_EARLY_FLATTREE
> > select OF_IRQ
> > select PCI_DOMAINS_GENERIC if PCI
> > @@ -218,6 +219,14 @@ config PGTABLE_LEVELS
> > config LOCKDEP_SUPPORT
> > def_bool y
> >
> > +config RISCV_DMA_NONCOHERENT
> > + bool
> > + select ARCH_HAS_DMA_PREP_COHERENT
> > + select ARCH_HAS_SYNC_DMA_FOR_DEVICE
> > + select ARCH_HAS_SYNC_DMA_FOR_CPU
> > + select ARCH_HAS_SETUP_DMA_OPS
> > + select DMA_DIRECT_REMAP
> > +
> > source "arch/riscv/Kconfig.socs"
> > source "arch/riscv/Kconfig.erratas"
> >
> > @@ -376,6 +385,28 @@ config RISCV_ISA_SVPBMT
> >
> > If you don't know what to do here, say Y.
> >
> > +config CC_HAS_ZICBOM
> > + bool
> > + default y if 64BIT && $(cc-option,-mabi=lp64 -march=rv64ima_zicbom)
> > + default y if 32BIT && $(cc-option,-mabi=lp64 -march=rv32ima_zicbom)
>
> -mabi=lp64 for rv32?
Thanks for catching that! :-)
When I converted over to using the real instructions for Zicbom instead of
pre-coded ones, I used a different format first for detecting the Zicbom
existence and I guess when moving over to the above I made a mistake
in the conversion.
In any case, that should of course be ilp32, same as in the Makefile.
With updated opensbi and Qemu I have now re-tested all possible
combinations and am pretty hopefully that this should fit now.
v7 following shortly.
Thanks
Heiko
next prev parent reply other threads:[~2022-07-06 23:03 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-05 22:46 [PATCH v6 0/4] riscv: implement Zicbom-based CMO instructions + the t-head variant Heiko Stuebner
2022-07-05 22:46 ` Heiko Stuebner
2022-07-05 22:47 ` [PATCH v6 1/4] of: also handle dma-noncoherent in of_dma_is_coherent() Heiko Stuebner
2022-07-05 22:47 ` Heiko Stuebner
2022-07-05 23:56 ` Guo Ren
2022-07-05 23:56 ` Guo Ren
2022-07-05 22:47 ` [PATCH v6 2/4] dt-bindings: riscv: document cbom-block-size Heiko Stuebner
2022-07-05 22:47 ` Heiko Stuebner
2022-07-05 23:56 ` Guo Ren
2022-07-05 23:56 ` Guo Ren
2022-07-05 22:47 ` [PATCH v6 3/4] riscv: Add support for non-coherent devices using zicbom extension Heiko Stuebner
2022-07-05 22:47 ` Heiko Stuebner
2022-07-05 23:32 ` Guo Ren
2022-07-05 23:32 ` Guo Ren
2022-07-06 23:02 ` Heiko Stübner [this message]
2022-07-06 23:02 ` Heiko Stübner
2022-07-07 5:06 ` Guo Ren
2022-07-07 5:06 ` Guo Ren
2022-07-05 22:47 ` [PATCH v6 4/4] riscv: implement cache-management errata for T-Head SoCs Heiko Stuebner
2022-07-05 22:47 ` Heiko Stuebner
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=3111003.5fSG56mABF@diego \
--to=heiko@sntech.de \
--cc=anup@brainfault.org \
--cc=atish.patra@wdc.com \
--cc=atishp@atishpatra.org \
--cc=cmuellner@linux.com \
--cc=devicetree@vger.kernel.org \
--cc=drew@beagleboard.org \
--cc=guoren@kernel.org \
--cc=hch@lst.de \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=mick@ics.forth.gr \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=philipp.tomsich@vrull.eu \
--cc=rdunlap@infradead.org \
--cc=robh+dt@kernel.org \
--cc=samuel@sholland.org \
--cc=wefu@redhat.com \
/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.