diff options
author | Sean Anderson <seanga2@gmail.com> | 2023-11-08 11:48:58 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-11-16 13:49:14 -0500 |
commit | 54a8d845be4f236a5eb7c93d927ff16cb3efb5fe (patch) | |
tree | 7138fe8610ed51df94cc27753e9d09b5379ad7a5 | |
parent | 14509a28aa20808875cc934eaf62f439345e6db6 (diff) | |
download | u-boot-54a8d845be4f236a5eb7c93d927ff16cb3efb5fe.zip u-boot-54a8d845be4f236a5eb7c93d927ff16cb3efb5fe.tar.gz u-boot-54a8d845be4f236a5eb7c93d927ff16cb3efb5fe.tar.bz2 |
spl: fat: Add option to disable DMA alignment
If we don't DMA-align buffers we pass to FAT, it will align them itself.
This behaviour likely should be deprecated in favor of
CONFIG_BOUNCE_BUFFER, but that's a task for another series. For the
meantime, don't bother aligning the buffer unless we had been doing so in
the past.
Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | common/spl/Kconfig | 18 | ||||
-rw-r--r-- | common/spl/spl_blk_fs.c | 5 | ||||
-rw-r--r-- | common/spl/spl_fat.c | 5 |
3 files changed, 24 insertions, 4 deletions
diff --git a/common/spl/Kconfig b/common/spl/Kconfig index b935269..fc284a5 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -694,13 +694,28 @@ config SPL_FS_SQUASHFS config SPL_FS_FAT bool "Support FAT filesystems" select FS_FAT - select SPL_LOAD_BLOCK help Enable support for FAT and VFAT filesystems with SPL. This permits U-Boot (or Linux in Falcon mode) to be loaded from a FAT filesystem from within SPL. Support for the underlying block device (e.g. MMC or USB) must be enabled separately. +config SPL_FS_FAT_DMA_ALIGN + bool "Use DMA-aligned buffers with FAT" + depends on SPL_FS_FAT + select SPL_LOAD_BLOCK + default y if SPL_LOAD_FIT + help + The FAT filesystem driver tries to ensure that the reads it issues to + the block subsystem use DMA-aligned buffers. If the supplied buffer is + not DMA-aligned, the FAT driver will use a bounce-buffer and read + block-by-block. This is separate from the bounce-buffer used by the + block subsystem (CONFIG_BOUNCE_BUFFER). + + Enable this config to align buffers passed to the FAT filesystem + driver. This will speed up reads, but will increase the size of U-Boot + by around 60 bytes. + config SPL_FS_LOAD_PAYLOAD_NAME string "File to load for U-Boot from the filesystem" depends on SPL_FS_EXT4 || SPL_FS_FAT || SPL_FS_SQUASHFS || SPL_SEMIHOSTING @@ -1282,7 +1297,6 @@ config SPL_NVME depends on BLK select FS_LOADER select SPL_BLK_FS - select SPL_LOAD_BLOCK help This option enables support for NVM Express devices. It supports basic functions of NVMe (read/write). diff --git a/common/spl/spl_blk_fs.c b/common/spl/spl_blk_fs.c index ac267ab..04eac6f 100644 --- a/common/spl/spl_blk_fs.c +++ b/common/spl/spl_blk_fs.c @@ -82,7 +82,10 @@ int spl_blk_load_image(struct spl_image_info *spl_image, } load.read = spl_fit_read; - spl_set_bl_len(&load, ARCH_DMA_MINALIGN); + if (IS_ENABLED(CONFIG_SPL_FS_FAT_DMA_ALIGN)) + spl_set_bl_len(&load, ARCH_DMA_MINALIGN); + else + spl_set_bl_len(&load, 1); load.priv = &dev; return spl_load(spl_image, bootdev, &load, filesize, 0); } diff --git a/common/spl/spl_fat.c b/common/spl/spl_fat.c index 569f2b3..a52f9e1 100644 --- a/common/spl/spl_fat.c +++ b/common/spl/spl_fat.c @@ -86,7 +86,10 @@ int spl_load_image_fat(struct spl_image_info *spl_image, } load.read = spl_fit_read; - spl_set_bl_len(&load, ARCH_DMA_MINALIGN); + if (IS_ENABLED(CONFIG_SPL_FS_FAT_DMA_ALIGN)) + spl_set_bl_len(&load, ARCH_DMA_MINALIGN); + else + spl_set_bl_len(&load, 1); load.priv = (void *)filename; err = spl_load(spl_image, bootdev, &load, size, 0); |