From: Zixian Zeng <sycamoremoon376@gmail.com>
To: Dave Klotz <DaveWK225@protonmail.com>,
Yixun Lan <dlan@kernel.org>, Eric Chung <eric.chung@riscstar.com>,
Peng Fan <peng.fan@nxp.com>
Cc: u-boot@lists.u-boot-project.org,
Jaehoon Chung <jh80.chung@samsung.com>,
Tanmay Kathpalia <tanmay.kathpalia@altera.com>,
Tom Rini <trini@konsulko.com>,
u-boot-spacemit@groups.io
Subject: Re: [PATCH v2 2/3] mmc: k1: let the SPL read SD cards more than one block at a time
Date: Sat, 10 Oct 2026 14:17:07 +0800 [thread overview]
Message-ID: <a57e47d3-fe8c-44dc-8afe-2c256ed49d71@gmail.com> (raw)
In-Reply-To: <20261005T135733-0400.mmc-v2-0002.DaveWK225@protonmail.com>
Hi, Dave:
On 2026/10/6 02:01, Dave Klotz wrote:
> spacemit_sdhci_get_b_max() limits every SD read in the SPL to a single
> block, so loading a ~1 MiB u-boot.itb from a card takes about 2000
> separate commands. The controller handles multi-block PIO reads in the
> SPL: the OrangePi RV2 has loaded U-Boot from microSD with them through
> the v2026.07 and v2026.10 trees.
>
> Drop the limit and use the host's b_max.
>
> The merged v13 cover retains the v9 changelog entry choosing single-
> block SD reads in SPL. This reverses that deliberate policy for the
> recorded RV2 SPL boot use case; no general multi-card reliability claim
> is made. K1 does not advertise MMC_CAP_CMD23, so the MMC core sends
> CMD12 after a multi-block read rather than requiring CMD23. Additional
> card models, cold boots and transfer-error recovery remain required.
>
> Signed-off-by: Dave Klotz <DaveWK225@protonmail.com>
> Reviewed-by: Tanmay Kathpalia <tanmay.kathpalia@altera.com>
> ---
> Validation: unchanged executable change from v1; exact-base source
> replay and checkpatch pass. The corrected combined integration, with
> separate clock/MMC and DDR relocation fixes, passed SD SPL/FIT and
> automatic NVMe EFI boot on the 4 GiB RV2 in a warm-boot trial. This is
> an integration result, not an isolated test of this patch.
>
> drivers/mmc/spacemit_sdhci.c | 11 -----------
> 1 file changed, 0 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/mmc/spacemit_sdhci.c b/drivers/mmc/spacemit_sdhci.c
> index 6488ae0fdb..4284553177 100644
> --- a/drivers/mmc/spacemit_sdhci.c
> +++ b/drivers/mmc/spacemit_sdhci.c
> @@ -324,16 +324,6 @@
> return 0;
> }
>
> -static int spacemit_sdhci_get_b_max(struct udevice *dev, void *dst,
> - lbaint_t blkcnt)
> -{
> - struct mmc *mmc = mmc_get_mmc_dev(dev);
> -
> - if (IS_ENABLED(CONFIG_SPL_BUILD) && mmc && IS_SD(mmc))
> - return 1;
> - return mmc->cfg->b_max;
> -}
> -
> static void spacemit_sdhci_set_control_reg(struct sdhci_host *host)
> {
> struct mmc *mmc = host->mmc;
> @@ -574,7 +564,6 @@
>
> spacemit_mmc_ops = sdhci_ops;
> spacemit_mmc_ops.wait_dat0 = spacemit_sdhci_wait_dat0;
> - spacemit_mmc_ops.get_b_max = spacemit_sdhci_get_b_max;
>
> ret = clk_get_bulk(dev, &plat->clks);
> if (ret) {
Using the current version of the next branch u-boot (ed869863c7),
with your MMC patch series applied.
Since the SPI controller is not enabled by default on the BananaPi-F3,
I also applied another patch series:
Link:
https://lore.kernel.org/u-boot/cover.1790976767.git.DaveWK225@protonmail.com/
I tested u-boot SPL with three SD cards on a BananaPi-F3 and found
a reproducible issue, the specific error I encountered is spl: partition
error (Error: -38)
At the meantime, when i was revert the commit:
mmc: k1: let the SPL read SD cards more than one block at a time
the error has gone. Same SD card, same operation steps.
Maybe BananaPi-F3 do not support read SD cards more than one block at a
time?
The issue logs are as follows:
⋊> hack@morise ⋊> ~/k/u-boot on k1-dave-mmc ↑ git log --oneline
origin/next..HEAD
6b4af8b1dd8 (HEAD -> k1-dave-mmc) mmc: k1: do not release the shared AXI
clock and reset on probe failure
4114764d716 mmc: k1: let the SPL read SD cards more than one block at a
time
6676ce89521 mmc: k1: handle a missing max-frequency and clk_set_rate()'s
return value
6427189ef33 spacemit: k1: fall back to the other boot devices in SPL
b58a31797d7 spacemit: k1: do not require a PMIC or an SPI controller in SPL
⋊> hack@morise ⋊> ~/k/u-boot on k1-dave-mmc ↑ export
CROSS_COMPILE=riscv64-linux-gnu- ARCH=riscv
export
DDR=/home/hack/k1/spacemit-firmware/k1/v0.2/ddr_fw.bin
export
SBI=/home/hack/k1/opensbi/build/platform/generic/firmware/fw_dynamic.bin
⋊> hack@morise ⋊> ~/k/u-boot on k1-dave-mmc ↑ make O=build-fix
spacemit_k1_defconfig
make O=build-fix
DDR_FW_FILE=$DDR OPENSBI=$SBI DEVICE_TREE=spacemit/k1-bananapi-f3
-j"$(nproc)"
GEN Makefile
#
# configuration written to .config
#
GEN Makefile
scripts/kconfig/conf --syncconfig Kconfig
CFG u-boot.cfg
GEN include/autoconf.mk.dep
CFG spl/u-boot.cfg
GEN include/autoconf.mk
GEN spl/include/autoconf.mk
GEN Makefile
UPD include/generated/timestamp_autogenerated.h
ENVC include/generated/env.txt
Using .. as source for U-Boot
ENVP include/generated/env.in
ENVT include/generated/environment.h
PYMOD rebuild
LDS u-boot.lds
CC common/version.o
AR common/built-in.a
CC env/common.o
AR env/built-in.a
LD u-boot
OBJCOPY u-boot.srec
OBJCOPY u-boot-nodtb.bin
SYM u-boot.sym
MKIMAGE fit-dtb.blob
MKIMAGE u-boot.img
CC spl/common/spl/spl.o
MKIMAGE u-boot-dtb.img
CAT u-boot-fit-dtb.bin
COPY u-boot.bin
AR spl/common/spl/built-in.a
LD spl/u-boot-spl
OBJCOPY spl/u-boot-spl-nodtb.bin
SYM spl/u-boot-spl.sym
CAT spl/u-boot-spl-dtb.bin
COPY spl/u-boot-spl.bin
BINMAN .binman_stamp
OFCHK .config
⋊> hack@morise ⋊> ~/k/u-boot on k1-dave-mmc ↑ cd ~/k1/uboot-2022.10/
⋊> hack@morise ⋊> ~/k/uboot-2022.10 on k1-bl-v2.2.y ◦ cat mainline-fsbl.sh
SPL=$1
FSBL=$2
cd /home/hack/k1/uboot-2022.10
cp "$SPL" board/spacemit/k1-x/
python3 tools/build_binary_file.py \
-c board/spacemit/k1-x/configs/fsbl_ddr.json \
-o "$FSBL"
rm -f board/spacemit/k1-x/u-boot-spl-ddr.bin
echo "Mainline SPL is included in $FSBL"
⋊> hack@morise ⋊> ~/k/uboot-2022.10 on k1-bl-v2.2.y ◦ bash
mainline-fsbl.sh /home/hack/k1/u-boot/build-fix/u-boot-spl-ddr.bin
/home/hack/k1/uboot-2022.10/mainline-spl/FSBL-dave.bin
(2026-10-09 21:37:10,279) arch : RISCV64
(2026-10-09 21:37:10,279) description : spacemit k1x fsbl image
writing RSA key
writing RSA key
Mainline SPL is included in
/home/hack/k1/uboot-2022.10/mainline-spl/FSBL-dave.bin
⋊> hack@morise ⋊> ~/k/uboot-2022.10 on k1-bl-v2.2.y ◦ lsblk /dev/mmcblk0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 29.7G 0 disk
├─mmcblk0p1 179:1 0 256K 0 part
├─mmcblk0p2 179:2 0 64K 0 part
├─mmcblk0p3 179:3 0 1M 0 part
├─mmcblk0p4 179:4 0 2M 0 part
├─mmcblk0p5 179:5 0 256M 0 part
└─mmcblk0p6 179:6 0 29.5G 0 part
⋊> hack@morise ⋊> ~/k/uboot-2022.10 on k1-bl-v2.2.y ◦ sudo dd
if=/home/hack/k1/flash-dir/factory/bootinfo_sd.bin of=/dev/mmcblk0
bs=512 seek=0 count=1 conv=notrunc status=progress
0+1 records in
0+1 records out
80 bytes copied, 0.685238 s, 0.1 kB/s
⋊> hack@morise ⋊> ~/k/uboot-2022.10 on k1-bl-v2.2.y ◦ sudo dd
if=/home/hack/k1/uboot-2022.10/mainline-spl/FSBL-dave.bin
of=/dev/mmcblk0 bs=512 seek=256 conv=notrunc status=progress
304+1 records in
304+1 records out
156128 bytes (156 kB, 152 KiB) copied, 0.72263 s, 216 kB/s
⋊> hack@morise ⋊> ~/k/uboot-2022.10 on k1-bl-v2.2.y ◦ sudo dd
if=/home/hack/k1/u-boot/build-fix/u-boot.itb of=/dev/mmcblk0 bs=512
seek=4096 conv=notrunc status=progress
1953+1 records in
1953+1 records out
1000145 bytes (1.0 MB, 977 KiB) copied, 0.818001 s, 1.2 MB/s
⋊> hack@morise ⋊> ~/k/uboot-2022.10 on k1-bl-v2.2.y ◦ sync
⋊> hack@morise ⋊> ~/k/uboot-2022.10 on k1-bl-v2.2.y ◦ picocom -b 115200
/dev/ttyUSB1
picocom v3.1
port is : /dev/ttyUSB1
flowcontrol : none
baudrate is : 115200
parity is : none
databits are : 8
stopbits are : 1
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
hangup is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv -E
imap is :
omap is :
emap is : crcrlf,delbs,
logfile is : none
initstring : none
exit_after is : not set
exit is : no
Type [C-a] [C-h] to see available commands
Terminal ready
sys: 0x0
try sd...
bm:3
j...
<debug_uart>
U-Boot SPL 2026.10-rc5-00639-g6b4af8b1dd89 (Oct 09 2026 - 21:36:48 +0800)
Fail to detect board:-2
vdd_core, value:900000
vdd_1v8, value:1800000
vdd_1v8_mmc, value:1800000
DDR firmware: [0xc081d340]:0xf0227179, size:0x8d98
DDR is ready
No SPI controller (-19)
Trying to boot from MMC2
spl: partition error
Error: -38
SPL: Unsupported Boot Device!
Trying to boot from MMC1
alloc space exhausted ptr 104380 limit 100000
Aligned buffer alloc failed
spl: could not find mmc device 0. error: -19
Error: -19
SPL: Unsupported Boot Device!
Trying to boot from SPI
Invalid bus 0 (err=-19)
SPI probe failed.
Error: -19
SPL: Unsupported Boot Device!
SPL: Unsupported Boot Device!
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###
Reported-by: Zixian Zeng <sycamoremoon376@gmail.com>
next prev parent reply other threads:[~2026-10-10 13:14 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-02 21:29 [PATCH 0/3] mmc: k1: fixes for the SpacemiT K1 SDHCI driver Dave Klotz
2026-10-02 21:29 ` [PATCH 1/3] mmc: k1: handle a missing max-frequency and clk_set_rate()'s return value Dave Klotz
2026-10-04 9:14 ` Kathpalia, Tanmay
2026-10-04 9:30 ` Kathpalia, Tanmay
2026-10-05 17:46 ` Dave Klotz
2026-10-02 21:29 ` [PATCH 2/3] mmc: k1: let the SPL read SD cards more than one block at a time Dave Klotz
2026-10-04 9:28 ` Kathpalia, Tanmay
2026-10-02 21:29 ` [PATCH 3/3] mmc: k1: do not release the shared AXI clock and reset on probe failure Dave Klotz
2026-10-04 9:28 ` Kathpalia, Tanmay
2026-10-02 22:06 ` [PATCH 0/3] mmc: k1: fixes for the SpacemiT K1 SDHCI driver Dave Klotz
2026-10-05 17:50 ` [PATCH v2 " Dave Klotz
2026-10-05 17:55 ` [PATCH v2 1/3] mmc: k1: handle a missing max-frequency and clk_set_rate()'s return value Dave Klotz
2026-10-06 5:40 ` Kathpalia, Tanmay
2026-10-10 8:45 ` Yixun Lan
2026-10-05 18:01 ` [PATCH v2 2/3] mmc: k1: let the SPL read SD cards more than one block at a time Dave Klotz
2026-10-10 6:17 ` Zixian Zeng [this message]
2026-10-10 19:02 ` Kathpalia, Tanmay
2026-10-10 19:16 ` Kathpalia, Tanmay
2026-10-11 3:38 ` Zixian Zeng
2026-10-11 14:31 ` Kathpalia, Tanmay
2026-10-11 15:33 ` Anand Moon
2026-10-11 19:41 ` Kathpalia, Tanmay
2026-10-12 13:15 ` Zixian Zeng
2026-10-12 14:00 ` Kathpalia, Tanmay
2026-10-12 14:30 ` Yixun Lan
2026-10-12 14:50 ` Kathpalia, Tanmay
2026-10-12 15:22 ` Yixun Lan
2026-10-12 16:07 ` Anand Moon
2026-10-13 0:15 ` Yixun Lan
2026-10-13 3:44 ` Anand Moon
2026-10-05 18:11 ` [PATCH v2 3/3] mmc: k1: do not release the shared AXI clock and reset on probe failure Dave Klotz
2026-10-10 7:14 ` Yixun Lan
2026-10-10 19:27 ` Kathpalia, Tanmay
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=a57e47d3-fe8c-44dc-8afe-2c256ed49d71@gmail.com \
--to=sycamoremoon376@gmail.com \
--cc=DaveWK225@protonmail.com \
--cc=dlan@kernel.org \
--cc=eric.chung@riscstar.com \
--cc=jh80.chung@samsung.com \
--cc=peng.fan@nxp.com \
--cc=tanmay.kathpalia@altera.com \
--cc=trini@konsulko.com \
--cc=u-boot-spacemit@groups.io \
--cc=u-boot@lists.u-boot-project.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.