From: Jisheng Zhang <jszhang@kernel.org>
To: Drew Fustini <dfustini@baylibre.com>,
Christoph Hellwig <hch@lst.de>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Cc: "Robert Nelson" <robertcnelson@gmail.com>,
Prabhakar <prabhakar.csengg@gmail.com>,
"Ulf Hansson" <ulf.hansson@linaro.org>,
"Rob Herring" <robh+dt@kernel.org>,
"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Adrian Hunter" <adrian.hunter@intel.com>,
"Guo Ren" <guoren@kernel.org>, "Fu Wei" <wefu@redhat.com>,
"Paul Walmsley" <paul.walmsley@sifive.com>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Conor Dooley" <conor@kernel.org>,
"Jason Kridner" <jkridner@beagleboard.org>,
"Xi Ruoyao" <xry111@xry111.site>, "Han Gao" <gaohan@iscas.ac.cn>,
"Icenowy Zheng" <uwu@icenowy.me>,
linux-mmc@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org,
"Björn Töpel" <bjorn@kernel.org>,
"Alexandre Ghiti" <alexghiti@rivosinc.com>
Subject: Re: [PATCH 0/6] RISC-V: Add eMMC support for TH1520 boards
Date: Wed, 4 Oct 2023 19:30:36 +0800 [thread overview]
Message-ID: <ZR1M3FcdXrDmIGu2@xhacker> (raw)
In-Reply-To: <ZRuamJuShOnvP1pr@x1>
On Mon, Oct 02, 2023 at 09:37:44PM -0700, Drew Fustini wrote:
> On Fri, Sep 22, 2023 at 05:48:21PM -0500, Robert Nelson wrote:
> > On Fri, Sep 22, 2023 at 2:08 PM Robert Nelson <robertcnelson@gmail.com> wrote:
> > >
> > > On Thu, Sep 21, 2023 at 8:51 PM Drew Fustini <dfustini@baylibre.com> wrote:
> > > >
> > > > This series adds support for the eMMC on the BeagleV Ahead and the
> > > > Sipeed LicheePi 4A. This allows the kernel to boot with the rootfs on
> > > > eMMC.
> > > >
> > > > I tested on top of v6.6-rc2 with this config [1]. I was able to boot
> > > > both the Ahead [2] and LPi4a [3] from eMMC. The following prerequisites
> > > > are required:
> > > >
> > > > [PATCH v2] riscv: dts: thead: set dma-noncoherent to soc bus [4]
> > > >
> > > > I pushed a branch [5] with this patch series and the above patch for
> > > > those that find a git branch easier to test.
> > > >
> > > > Please note that only the MMC controller connected to the eMMC device
> > > > is enabled in the device trees for these two boards. I did not yet
> > > > attempt to configure and use the microSD card slot. My preference is to
> > > > address that in a future patch series.
> > > >
> > > > References:
> > > > [1] https://gist.github.com/pdp7/5fbdcf2a65eb1abdd3a29d519c19cdd2
> > > > [2] https://gist.github.com/pdp7/91a801a5f8d1070c53509eda9800ad78
> > > > [3] https://gist.github.com/pdp7/1445c3c991e88fd69c60165cef65726a
> > > > [4] https://lore.kernel.org/linux-riscv/20230912072232.2455-1-jszhang@kernel.org/
> > > > [5] https://github.com/pdp7/linux/tree/b4/th1520-mmc
> > >
> > > This patchset came out very nice!
> > >
> > > v6.6-rc2 with Last RFC v2:
> > >
> > > [ 4.066630] mmc0: SDHCI controller on ffe7080000.mmc
> > > [ffe7080000.mmc] using PIO
> > >
> > > debian@BeagleV:~$ sudo hdparm -tT /dev/mmcblk0
> > >
> > > /dev/mmcblk0:
> > > Timing cached reads: 1516 MB in 2.00 seconds = 758.09 MB/sec
> > > Timing buffered disk reads: 84 MB in 3.01 seconds = 27.94 MB/sec
> > >
> > > vs v6.6-rc2 with this patchset:
> > >
> > > [ 4.096837] mmc0: SDHCI controller on ffe7080000.mmc
> > > [ffe7080000.mmc] using DMA
> > >
> > > debian@BeagleV:~$ sudo hdparm -tT /dev/mmcblk0
> > >
> > > /dev/mmcblk0:
> > > Timing cached reads: 1580 MB in 2.00 seconds = 790.97 MB/sec
> > > Timing buffered disk reads: 418 MB in 3.00 seconds = 139.11 MB/sec
> >
> > Drew pointed out on Slack, this was not quite right.. After more
> > digging by Drew, CONFIG_DMA_GLOBAL_POOL is causing a DMA limitation
> > with the multiplatform defconfig. so with,
> >
> > ./scripts/config --disable CONFIG_ARCH_R9A07G043
> >
> > (to remove CONFIG_DMA_GLOBAL_POOL)... another 2x in buffered reads..
> >
> > [ 4.059242] mmc0: SDHCI controller on ffe7080000.mmc
> > [ffe7080000.mmc] using ADMA 64-bit
> >
> > debian@BeagleV:~$ sudo hdparm -tT /dev/mmcblk0
> >
> > /dev/mmcblk0:
> > Timing cached reads: 1600 MB in 2.00 seconds = 800.93 MB/sec
> > Timing buffered disk reads: 892 MB in 3.00 seconds = 297.06 MB/sec
>
> It seems CONFIG_DMA_GLOBAL_POOL=y causes ADMA buffer alloc to fail [1]:
>
> mmc0: Unable to allocate ADMA buffers - falling back to standard DMA
>
> Prabhakar's AX45MP non-coherent DMA support [2] series introduced the
> selection of DMA_GLOBAL_POOL for ARCH_R9A07G043 and the riscv defconfig
> selects ARCH_R9A07G043.
>
> Patch 5 in the series [3] states that:
>
> With DMA_GLOBAL_POOL enabled all DMA allocations happen from this
> region and synchronization callbacks are implemented to synchronize
> when doing DMA transactions.
>
> This example of a "shared-dma-pool" node was given:
>
> pma_resv0@58000000 {
> compatible = "shared-dma-pool";
> reg = <0x0 0x58000000 0x0 0x08000000>;
> no-map;
> linux,dma-default;
> };
>
> I've copied that to th1520-beaglev-ahead.dts. The address of 0x58000000
> has no significance on th1520, but the existence of shared-dma-pool
> seems to fix the problem. ADMA mode [4] is now working even though
> CONFIG_DMA_GLOBAL_POOL=y.
+ Christoph, Lad
IMHO, this is not TH1520 specific but a generic issue.
I believe commit 484861e09f3e ("soc: renesas: Kconfig: Select the
required configs for RZ/Five SoC") can cause regression on all
non-dma-coherent riscv platforms with generic defconfig. This is
a common issue. The logic here is: generic riscv defconfig selects
ARCH_R9A07G043 which selects DMA_GLOBAL_POOL, which assumes all
non-dma-coherent riscv platforms have a dma global pool, this assumption
seems not correct. And I believe DMA_GLOBAL_POOL should not be
selected by ARCH_SOCFAMILIY, instead, only ARCH under some specific
conditions can select it globaly, for example NOMMU ARM and so on.
Since this is a regression, what's proper fix? any suggestion is
appreciated.
Thanks
>
> Thanks,
> Drew
>
> [1] https://gist.github.com/pdp7/73041ed808bbc7dd445836fb90574979
> [2] https://lore.kernel.org/linux-riscv/20230818135723.80612-1-prabhakar.mahadev-lad.rj@bp.renesas.com/
> [3] https://lore.kernel.org/linux-riscv/20230818135723.80612-6-prabhakar.mahadev-lad.rj@bp.renesas.com/
> [4] https://gist.github.com/pdp7/91e72a663d3bb73eb28182337ad8bbcb
WARNING: multiple messages have this Message-ID (diff)
From: Jisheng Zhang <jszhang@kernel.org>
To: Drew Fustini <dfustini@baylibre.com>,
Christoph Hellwig <hch@lst.de>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Cc: "Ulf Hansson" <ulf.hansson@linaro.org>,
"Adrian Hunter" <adrian.hunter@intel.com>,
Prabhakar <prabhakar.csengg@gmail.com>,
"Guo Ren" <guoren@kernel.org>,
"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
"Conor Dooley" <conor+dt@kernel.org>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Ghiti" <alexghiti@rivosinc.com>,
"Han Gao" <gaohan@iscas.ac.cn>,
"Jason Kridner" <jkridner@beagleboard.org>,
"Paul Walmsley" <paul.walmsley@sifive.com>,
"Robert Nelson" <robertcnelson@gmail.com>,
linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org,
"Conor Dooley" <conor@kernel.org>,
"Björn Töpel" <bjorn@kernel.org>,
"Rob Herring" <robh+dt@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Xi Ruoyao" <xry111@xry111.site>, "Fu Wei" <wefu@redhat.com>
Subject: Re: [PATCH 0/6] RISC-V: Add eMMC support for TH1520 boards
Date: Wed, 4 Oct 2023 19:30:36 +0800 [thread overview]
Message-ID: <ZR1M3FcdXrDmIGu2@xhacker> (raw)
In-Reply-To: <ZRuamJuShOnvP1pr@x1>
On Mon, Oct 02, 2023 at 09:37:44PM -0700, Drew Fustini wrote:
> On Fri, Sep 22, 2023 at 05:48:21PM -0500, Robert Nelson wrote:
> > On Fri, Sep 22, 2023 at 2:08 PM Robert Nelson <robertcnelson@gmail.com> wrote:
> > >
> > > On Thu, Sep 21, 2023 at 8:51 PM Drew Fustini <dfustini@baylibre.com> wrote:
> > > >
> > > > This series adds support for the eMMC on the BeagleV Ahead and the
> > > > Sipeed LicheePi 4A. This allows the kernel to boot with the rootfs on
> > > > eMMC.
> > > >
> > > > I tested on top of v6.6-rc2 with this config [1]. I was able to boot
> > > > both the Ahead [2] and LPi4a [3] from eMMC. The following prerequisites
> > > > are required:
> > > >
> > > > [PATCH v2] riscv: dts: thead: set dma-noncoherent to soc bus [4]
> > > >
> > > > I pushed a branch [5] with this patch series and the above patch for
> > > > those that find a git branch easier to test.
> > > >
> > > > Please note that only the MMC controller connected to the eMMC device
> > > > is enabled in the device trees for these two boards. I did not yet
> > > > attempt to configure and use the microSD card slot. My preference is to
> > > > address that in a future patch series.
> > > >
> > > > References:
> > > > [1] https://gist.github.com/pdp7/5fbdcf2a65eb1abdd3a29d519c19cdd2
> > > > [2] https://gist.github.com/pdp7/91a801a5f8d1070c53509eda9800ad78
> > > > [3] https://gist.github.com/pdp7/1445c3c991e88fd69c60165cef65726a
> > > > [4] https://lore.kernel.org/linux-riscv/20230912072232.2455-1-jszhang@kernel.org/
> > > > [5] https://github.com/pdp7/linux/tree/b4/th1520-mmc
> > >
> > > This patchset came out very nice!
> > >
> > > v6.6-rc2 with Last RFC v2:
> > >
> > > [ 4.066630] mmc0: SDHCI controller on ffe7080000.mmc
> > > [ffe7080000.mmc] using PIO
> > >
> > > debian@BeagleV:~$ sudo hdparm -tT /dev/mmcblk0
> > >
> > > /dev/mmcblk0:
> > > Timing cached reads: 1516 MB in 2.00 seconds = 758.09 MB/sec
> > > Timing buffered disk reads: 84 MB in 3.01 seconds = 27.94 MB/sec
> > >
> > > vs v6.6-rc2 with this patchset:
> > >
> > > [ 4.096837] mmc0: SDHCI controller on ffe7080000.mmc
> > > [ffe7080000.mmc] using DMA
> > >
> > > debian@BeagleV:~$ sudo hdparm -tT /dev/mmcblk0
> > >
> > > /dev/mmcblk0:
> > > Timing cached reads: 1580 MB in 2.00 seconds = 790.97 MB/sec
> > > Timing buffered disk reads: 418 MB in 3.00 seconds = 139.11 MB/sec
> >
> > Drew pointed out on Slack, this was not quite right.. After more
> > digging by Drew, CONFIG_DMA_GLOBAL_POOL is causing a DMA limitation
> > with the multiplatform defconfig. so with,
> >
> > ./scripts/config --disable CONFIG_ARCH_R9A07G043
> >
> > (to remove CONFIG_DMA_GLOBAL_POOL)... another 2x in buffered reads..
> >
> > [ 4.059242] mmc0: SDHCI controller on ffe7080000.mmc
> > [ffe7080000.mmc] using ADMA 64-bit
> >
> > debian@BeagleV:~$ sudo hdparm -tT /dev/mmcblk0
> >
> > /dev/mmcblk0:
> > Timing cached reads: 1600 MB in 2.00 seconds = 800.93 MB/sec
> > Timing buffered disk reads: 892 MB in 3.00 seconds = 297.06 MB/sec
>
> It seems CONFIG_DMA_GLOBAL_POOL=y causes ADMA buffer alloc to fail [1]:
>
> mmc0: Unable to allocate ADMA buffers - falling back to standard DMA
>
> Prabhakar's AX45MP non-coherent DMA support [2] series introduced the
> selection of DMA_GLOBAL_POOL for ARCH_R9A07G043 and the riscv defconfig
> selects ARCH_R9A07G043.
>
> Patch 5 in the series [3] states that:
>
> With DMA_GLOBAL_POOL enabled all DMA allocations happen from this
> region and synchronization callbacks are implemented to synchronize
> when doing DMA transactions.
>
> This example of a "shared-dma-pool" node was given:
>
> pma_resv0@58000000 {
> compatible = "shared-dma-pool";
> reg = <0x0 0x58000000 0x0 0x08000000>;
> no-map;
> linux,dma-default;
> };
>
> I've copied that to th1520-beaglev-ahead.dts. The address of 0x58000000
> has no significance on th1520, but the existence of shared-dma-pool
> seems to fix the problem. ADMA mode [4] is now working even though
> CONFIG_DMA_GLOBAL_POOL=y.
+ Christoph, Lad
IMHO, this is not TH1520 specific but a generic issue.
I believe commit 484861e09f3e ("soc: renesas: Kconfig: Select the
required configs for RZ/Five SoC") can cause regression on all
non-dma-coherent riscv platforms with generic defconfig. This is
a common issue. The logic here is: generic riscv defconfig selects
ARCH_R9A07G043 which selects DMA_GLOBAL_POOL, which assumes all
non-dma-coherent riscv platforms have a dma global pool, this assumption
seems not correct. And I believe DMA_GLOBAL_POOL should not be
selected by ARCH_SOCFAMILIY, instead, only ARCH under some specific
conditions can select it globaly, for example NOMMU ARM and so on.
Since this is a regression, what's proper fix? any suggestion is
appreciated.
Thanks
>
> Thanks,
> Drew
>
> [1] https://gist.github.com/pdp7/73041ed808bbc7dd445836fb90574979
> [2] https://lore.kernel.org/linux-riscv/20230818135723.80612-1-prabhakar.mahadev-lad.rj@bp.renesas.com/
> [3] https://lore.kernel.org/linux-riscv/20230818135723.80612-6-prabhakar.mahadev-lad.rj@bp.renesas.com/
> [4] https://gist.github.com/pdp7/91e72a663d3bb73eb28182337ad8bbcb
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2023-10-04 11:42 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-22 1:49 [PATCH 0/6] RISC-V: Add eMMC support for TH1520 boards Drew Fustini
2023-09-22 1:49 ` Drew Fustini
2023-09-22 1:49 ` [PATCH 1/6] dt-bindings: mmc: sdhci-of-dwcmhsc: Add T-Head TH1520 support Drew Fustini
2023-09-22 1:49 ` Drew Fustini
2023-09-22 9:57 ` Conor Dooley
2023-09-22 9:57 ` Conor Dooley
2023-09-22 15:18 ` Drew Fustini
2023-09-22 15:18 ` Drew Fustini
2023-09-23 8:10 ` Guo Ren
2023-09-23 8:10 ` Guo Ren
2023-09-24 21:04 ` Drew Fustini
2023-09-24 21:04 ` Drew Fustini
2023-09-22 1:49 ` [PATCH 2/6] mmc: sdhci: add __sdhci_execute_tuning() to header Drew Fustini
2023-09-22 1:49 ` Drew Fustini
2023-09-25 10:21 ` Adrian Hunter
2023-09-25 10:21 ` Adrian Hunter
2023-09-25 10:23 ` Xi Ruoyao
2023-09-25 10:23 ` Xi Ruoyao
2023-09-25 10:31 ` Adrian Hunter
2023-09-25 10:31 ` Adrian Hunter
2023-09-25 14:41 ` Drew Fustini
2023-09-25 14:41 ` Drew Fustini
2023-09-22 1:49 ` [PATCH 3/6] mmc: sdhci-of-dwcmshc: Add support for T-Head TH1520 Drew Fustini
2023-09-22 1:49 ` Drew Fustini
2023-09-25 10:35 ` Adrian Hunter
2023-09-25 10:35 ` Adrian Hunter
2023-09-25 14:43 ` Drew Fustini
2023-09-25 14:43 ` Drew Fustini
2023-10-04 16:19 ` Jisheng Zhang
2023-10-04 16:19 ` Jisheng Zhang
2023-10-04 19:12 ` Drew Fustini
2023-10-04 19:12 ` Drew Fustini
2023-09-22 1:49 ` [PATCH 4/6] riscv: dts: thead: Add TH1520 mmc controller and sdhci clock Drew Fustini
2023-09-22 1:49 ` Drew Fustini
2023-09-22 1:49 ` [PATCH 5/6] riscv: dts: thead: Enable BeagleV Ahead eMMC controller Drew Fustini
2023-09-22 1:49 ` Drew Fustini
2023-09-22 1:49 ` [PATCH 6/6] riscv: dts: thead: Enable LicheePi 4A " Drew Fustini
2023-09-22 1:49 ` Drew Fustini
2023-09-22 11:41 ` [PATCH 0/6] RISC-V: Add eMMC support for TH1520 boards Xi Ruoyao
2023-09-22 11:41 ` Xi Ruoyao
2023-09-22 16:23 ` Drew Fustini
2023-09-22 16:23 ` Drew Fustini
2023-09-23 16:33 ` Xi Ruoyao
2023-09-23 16:33 ` Xi Ruoyao
2023-09-23 0:11 ` Icenowy Zheng
2023-09-23 0:11 ` Icenowy Zheng
2023-09-22 19:08 ` Robert Nelson
2023-09-22 19:08 ` Robert Nelson
2023-09-22 22:48 ` Robert Nelson
2023-09-22 22:48 ` Robert Nelson
2023-10-03 4:37 ` Drew Fustini
2023-10-03 4:37 ` Drew Fustini
2023-10-04 11:30 ` Jisheng Zhang [this message]
2023-10-04 11:30 ` Jisheng Zhang
2023-10-04 13:02 ` Lad, Prabhakar
2023-10-04 13:02 ` Lad, Prabhakar
2023-10-04 13:49 ` Robin Murphy
2023-10-04 13:49 ` Robin Murphy
2023-10-04 14:02 ` Icenowy Zheng
2023-10-04 14:02 ` Icenowy Zheng
2023-10-04 14:18 ` Robin Murphy
2023-10-04 14:18 ` Robin Murphy
2023-10-04 14:46 ` Icenowy Zheng
2023-10-04 14:46 ` Icenowy Zheng
2023-10-04 14:58 ` Icenowy Zheng
2023-10-04 14:58 ` Icenowy Zheng
2023-10-04 16:03 ` Lad, Prabhakar
2023-10-04 16:03 ` Lad, Prabhakar
2023-10-04 17:16 ` Lad, Prabhakar
2023-10-04 17:16 ` Lad, Prabhakar
2023-10-04 18:49 ` Samuel Holland
2023-10-04 18:49 ` Samuel Holland
2023-10-04 19:38 ` Robin Murphy
2023-10-04 19:38 ` Robin Murphy
2023-10-04 20:47 ` Lad, Prabhakar
2023-10-04 20:47 ` Lad, Prabhakar
2023-10-05 6:57 ` Christoph Hellwig
2023-10-05 6:57 ` Christoph Hellwig
2023-10-04 14:06 ` Jisheng Zhang
2023-10-04 14:06 ` Jisheng Zhang
2023-10-04 15:27 ` Geert Uytterhoeven
2023-10-04 15:27 ` Geert Uytterhoeven
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=ZR1M3FcdXrDmIGu2@xhacker \
--to=jszhang@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexghiti@rivosinc.com \
--cc=aou@eecs.berkeley.edu \
--cc=bjorn@kernel.org \
--cc=conor+dt@kernel.org \
--cc=conor@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dfustini@baylibre.com \
--cc=gaohan@iscas.ac.cn \
--cc=guoren@kernel.org \
--cc=hch@lst.de \
--cc=jkridner@beagleboard.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=prabhakar.csengg@gmail.com \
--cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
--cc=robertcnelson@gmail.com \
--cc=robh+dt@kernel.org \
--cc=ulf.hansson@linaro.org \
--cc=uwu@icenowy.me \
--cc=wefu@redhat.com \
--cc=xry111@xry111.site \
/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.