* [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems
@ 2023-08-13 21:46 Marek Vasut
2023-08-13 21:46 ` [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test Marek Vasut
` (2 more replies)
0 siblings, 3 replies; 20+ messages in thread
From: Marek Vasut @ 2023-08-13 21:46 UTC (permalink / raw)
To: u-boot; +Cc: Marek Vasut, Abdellatif El Khlifi, Simon Glass
Get rid of nvmxip_mmio_rawread() and just implement the readl()/readq()
reader loop within nvmxip_blk_read(). Cast the destination buffer as
needed and increment the read by either 4 or 8 bytes depending on if
this is systemd with 32bit or 64bit physical address.
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
---
Cc: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Cc: Simon Glass <sjg@chromium.org>
---
drivers/mtd/nvmxip/nvmxip.c | 38 ++++++++++++-------------------------
1 file changed, 12 insertions(+), 26 deletions(-)
diff --git a/drivers/mtd/nvmxip/nvmxip.c b/drivers/mtd/nvmxip/nvmxip.c
index a359e3b4822..0bd98d64275 100644
--- a/drivers/mtd/nvmxip/nvmxip.c
+++ b/drivers/mtd/nvmxip/nvmxip.c
@@ -15,23 +15,6 @@
#include <linux/errno.h>
#include "nvmxip.h"
-/**
- * nvmxip_mmio_rawread() - read from the XIP flash
- * @address: address of the data
- * @value: pointer to where storing the value read
- *
- * Read raw data from the XIP flash.
- *
- * Return:
- *
- * Always return 0.
- */
-static int nvmxip_mmio_rawread(const phys_addr_t address, u64 *value)
-{
- *value = readq(address);
- return 0;
-}
-
/**
* nvmxip_blk_read() - block device read operation
* @dev: the block device
@@ -49,15 +32,14 @@ static ulong nvmxip_blk_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcn
{
struct nvmxip_plat *plat = dev_get_plat(dev->parent);
struct blk_desc *desc = dev_get_uclass_plat(dev);
- /* number of the u64 words to read */
- u32 qwords = (blkcnt * desc->blksz) / sizeof(u64);
+ /* number of bytes to read */
+ u32 size = blkcnt * desc->blksz;
/* physical address of the first block to read */
phys_addr_t blkaddr = plat->phys_base + blknr * desc->blksz;
- u64 *virt_blkaddr;
- u64 *pdst = buffer;
+ void *virt_blkaddr;
uint qdata_idx;
- if (!pdst)
+ if (!buffer)
return -EINVAL;
log_debug("[%s]: reading from blknr: %lu , blkcnt: %lu\n", dev->name, blknr, blkcnt);
@@ -66,12 +48,16 @@ static ulong nvmxip_blk_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcn
/* assumption: the data is virtually contiguous */
- for (qdata_idx = 0 ; qdata_idx < qwords ; qdata_idx++)
- nvmxip_mmio_rawread((phys_addr_t)(virt_blkaddr + qdata_idx), pdst++);
-
+#if IS_ENABLED(CONFIG_PHYS_64BIT)
+ for (qdata_idx = 0 ; qdata_idx < size; qdata_idx += sizeof(u64))
+ *(u64 *)(buffer + qdata_idx) = readq(virt_blkaddr + qdata_idx);
+#else
+ for (qdata_idx = 0 ; qdata_idx < size; qdata_idx += sizeof(u32))
+ *(u32 *)(buffer + qdata_idx) = readl(virt_blkaddr + qdata_idx);
+#endif
log_debug("[%s]: src[0]: 0x%llx , dst[0]: 0x%llx , src[-1]: 0x%llx , dst[-1]: 0x%llx\n",
dev->name,
- *virt_blkaddr,
+ *(u64 *)virt_blkaddr,
*(u64 *)buffer,
*(u64 *)((u8 *)virt_blkaddr + desc->blksz * blkcnt - sizeof(u64)),
*(u64 *)((u8 *)buffer + desc->blksz * blkcnt - sizeof(u64)));
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test 2023-08-13 21:46 [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems Marek Vasut @ 2023-08-13 21:46 ` Marek Vasut 2023-08-14 22:42 ` Simon Glass 2023-08-13 23:55 ` [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems Marek Vasut 2023-08-19 0:23 ` Marek Vasut 2 siblings, 1 reply; 20+ messages in thread From: Marek Vasut @ 2023-08-13 21:46 UTC (permalink / raw) To: u-boot; +Cc: Marek Vasut, Abdellatif El Khlifi, Simon Glass Enable NVMXIP QSPI driver on sandbox, since it is already enabled on sandbox64. Update blk tests to match. Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> --- Cc: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> Cc: Simon Glass <sjg@chromium.org> --- configs/sandbox_defconfig | 1 + test/dm/blk.c | 63 +++++++++++++++++++++++++++++++-------- 2 files changed, 52 insertions(+), 12 deletions(-) diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index 1cd1c2ed7cd..f451a94362e 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -227,6 +227,7 @@ CONFIG_SPI_FLASH_SPANSION=y CONFIG_SPI_FLASH_STMICRO=y CONFIG_SPI_FLASH_SST=y CONFIG_SPI_FLASH_WINBOND=y +CONFIG_NVMXIP_QSPI=y CONFIG_MULTIPLEXER=y CONFIG_MUX_MMIO=y CONFIG_NVME_PCI=y diff --git a/test/dm/blk.c b/test/dm/blk.c index 446c4423e6f..d268a441c99 100644 --- a/test/dm/blk.c +++ b/test/dm/blk.c @@ -82,12 +82,12 @@ static int dm_test_blk_usb(struct unit_test_state *uts) ut_asserteq_ptr(usb_dev, dev_get_parent(dev)); /* Check we have one block device for each mass storage device */ - ut_asserteq(6, count_blk_devices()); + ut_asserteq(8, count_blk_devices()); /* Now go around again, making sure the old devices were unbound */ ut_assertok(usb_stop()); ut_assertok(usb_init()); - ut_asserteq(6, count_blk_devices()); + ut_asserteq(8, count_blk_devices()); ut_assertok(usb_stop()); return 0; @@ -184,6 +184,10 @@ static int dm_test_blk_iter(struct unit_test_state *uts) */ ut_assertok(blk_first_device_err(BLKF_FIXED, &dev)); ut_asserteq_str("mmc2.blk", dev->name); + ut_assertok(blk_next_device_err(BLKF_FIXED, &dev)); + ut_asserteq_str("nvmxip-qspi1@08000000.blk#1", dev->name); + ut_assertok(blk_next_device_err(BLKF_FIXED, &dev)); + ut_asserteq_str("nvmxip-qspi2@08200000.blk#2", dev->name); ut_asserteq(-ENODEV, blk_next_device_err(BLKF_FIXED, &dev)); ut_assertok(blk_first_device_err(BLKF_REMOVABLE, &dev)); @@ -198,16 +202,23 @@ static int dm_test_blk_iter(struct unit_test_state *uts) ut_asserteq_str("mmc1.blk", dev->name); ut_assertok(blk_next_device_err(BLKF_BOTH, &dev)); ut_asserteq_str("mmc0.blk", dev->name); + ut_assertok(blk_next_device_err(BLKF_BOTH, &dev)); + ut_asserteq_str("nvmxip-qspi1@08000000.blk#1", dev->name); + ut_assertok(blk_next_device_err(BLKF_BOTH, &dev)); + ut_asserteq_str("nvmxip-qspi2@08200000.blk#2", dev->name); ut_asserteq(-ENODEV, blk_next_device_err(BLKF_FIXED, &dev)); - ut_asserteq(1, blk_count_devices(BLKF_FIXED)); + ut_asserteq(3, blk_count_devices(BLKF_FIXED)); ut_asserteq(2, blk_count_devices(BLKF_REMOVABLE)); - ut_asserteq(3, blk_count_devices(BLKF_BOTH)); + ut_asserteq(5, blk_count_devices(BLKF_BOTH)); i = 0; blk_foreach_probe(BLKF_FIXED, dev) - ut_asserteq_str((i++, "mmc2.blk"), dev->name); - ut_asserteq(1, i); + ut_asserteq_str((++i == 1 ? "mmc2.blk" : + i == 2 ? "nvmxip-qspi1@08000000.blk#1" : + "nvmxip-qspi2@08200000.blk#2"), + dev->name); + ut_asserteq(3, i); i = 0; blk_foreach_probe(BLKF_REMOVABLE, dev) @@ -216,9 +227,13 @@ static int dm_test_blk_iter(struct unit_test_state *uts) i = 0; blk_foreach_probe(BLKF_BOTH, dev) - ut_asserteq_str((++i == 1 ? "mmc2.blk" : i == 2 ? - "mmc1.blk" : "mmc0.blk"), dev->name); - ut_asserteq(3, i); + ut_asserteq_str((++i == 1 ? "mmc2.blk" : + i == 2 ? "mmc1.blk" : + i == 3 ? "mmc0.blk" : + i == 4 ? "nvmxip-qspi1@08000000.blk#1" : + "nvmxip-qspi2@08200000.blk#2"), + dev->name); + ut_asserteq(5, i); return 0; } @@ -242,6 +257,14 @@ static int dm_test_blk_flags(struct unit_test_state *uts) ut_assertnonnull(dev); ut_asserteq_str("mmc0.blk", dev->name); + ut_assertok(blk_find_next(BLKF_BOTH, &dev)); + ut_assertnonnull(dev); + ut_asserteq_str("nvmxip-qspi1@08000000.blk#1", dev->name); + + ut_assertok(blk_find_next(BLKF_BOTH, &dev)); + ut_assertnonnull(dev); + ut_asserteq_str("nvmxip-qspi2@08200000.blk#2", dev->name); + ut_asserteq(-ENODEV, blk_find_next(BLKF_BOTH, &dev)); ut_assertnull(dev); @@ -265,6 +288,14 @@ static int dm_test_blk_flags(struct unit_test_state *uts) ut_assertnonnull(dev); ut_asserteq_str("mmc0.blk", dev->name); + ut_assertok(blk_next_device_err(BLKF_BOTH, &dev)); + ut_assertnonnull(dev); + ut_asserteq_str("nvmxip-qspi1@08000000.blk#1", dev->name); + + ut_assertok(blk_next_device_err(BLKF_BOTH, &dev)); + ut_assertnonnull(dev); + ut_asserteq_str("nvmxip-qspi2@08200000.blk#2", dev->name); + ut_asserteq(-ENODEV, blk_next_device_err(BLKF_BOTH, &dev)); /* Look only for fixed devices */ @@ -272,6 +303,14 @@ static int dm_test_blk_flags(struct unit_test_state *uts) ut_assertnonnull(dev); ut_asserteq_str("mmc2.blk", dev->name); + ut_assertok(blk_next_device_err(BLKF_FIXED, &dev)); + ut_assertnonnull(dev); + ut_asserteq_str("nvmxip-qspi1@08000000.blk#1", dev->name); + + ut_assertok(blk_next_device_err(BLKF_FIXED, &dev)); + ut_assertnonnull(dev); + ut_asserteq_str("nvmxip-qspi2@08200000.blk#2", dev->name); + ut_asserteq(-ENODEV, blk_next_device_err(BLKF_FIXED, &dev)); /* Look only for removable devices */ @@ -317,13 +356,13 @@ static int dm_test_blk_foreach(struct unit_test_state *uts) blk_foreach_probe(BLKF_BOTH, dev) found |= 1 << dectoul(&dev->name[3], NULL); ut_asserteq(7, found); - ut_asserteq(3, blk_count_devices(BLKF_BOTH)); + ut_asserteq(5, blk_count_devices(BLKF_BOTH)); found = 0; blk_foreach_probe(BLKF_FIXED, dev) found |= 1 << dectoul(&dev->name[3], NULL); - ut_asserteq(4, found); - ut_asserteq(1, blk_count_devices(BLKF_FIXED)); + ut_asserteq(5, found); + ut_asserteq(3, blk_count_devices(BLKF_FIXED)); found = 0; blk_foreach_probe(BLKF_REMOVABLE, dev) -- 2.40.1 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test 2023-08-13 21:46 ` [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test Marek Vasut @ 2023-08-14 22:42 ` Simon Glass 2023-08-14 22:45 ` Marek Vasut 0 siblings, 1 reply; 20+ messages in thread From: Simon Glass @ 2023-08-14 22:42 UTC (permalink / raw) To: Marek Vasut; +Cc: u-boot, Abdellatif El Khlifi On Sun, 13 Aug 2023 at 15:47, Marek Vasut <marek.vasut+renesas@mailbox.org> wrote: > > Enable NVMXIP QSPI driver on sandbox, since it is already enabled > on sandbox64. Update blk tests to match. > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> > --- > Cc: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> > Cc: Simon Glass <sjg@chromium.org> > --- > configs/sandbox_defconfig | 1 + > test/dm/blk.c | 63 +++++++++++++++++++++++++++++++-------- > 2 files changed, 52 insertions(+), 12 deletions(-) > Reviewed-by: Simon Glass <sjg@chromium.org> ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test 2023-08-14 22:42 ` Simon Glass @ 2023-08-14 22:45 ` Marek Vasut 2023-08-15 16:43 ` [PATCH] nvmxip: add sandbox support Abdellatif El Khlifi 2023-08-15 17:08 ` [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test Abdellatif El Khlifi 0 siblings, 2 replies; 20+ messages in thread From: Marek Vasut @ 2023-08-14 22:45 UTC (permalink / raw) To: Simon Glass, Marek Vasut; +Cc: u-boot, Abdellatif El Khlifi On 8/15/23 00:42, Simon Glass wrote: > On Sun, 13 Aug 2023 at 15:47, Marek Vasut > <marek.vasut+renesas@mailbox.org> wrote: >> >> Enable NVMXIP QSPI driver on sandbox, since it is already enabled >> on sandbox64. Update blk tests to match. >> >> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> >> --- >> Cc: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> >> Cc: Simon Glass <sjg@chromium.org> >> --- >> configs/sandbox_defconfig | 1 + >> test/dm/blk.c | 63 +++++++++++++++++++++++++++++++-------- >> 2 files changed, 52 insertions(+), 12 deletions(-) >> > > Reviewed-by: Simon Glass <sjg@chromium.org> NAK, this one has to wait. All of this NVMXIP stuff needs closer look, I think it is really weirdly broken and doesn't even pass sandbox and sandbox64 tests. Can Abdellatif try and check whether ALL sandbox and sandbox64 tests pass with this enabled ? ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH] nvmxip: add sandbox support 2023-08-14 22:45 ` Marek Vasut @ 2023-08-15 16:43 ` Abdellatif El Khlifi 2023-08-15 18:39 ` Simon Glass 2023-08-15 20:44 ` [PATCH] nvmxip: add sandbox support Marek Vasut 2023-08-15 17:08 ` [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test Abdellatif El Khlifi 1 sibling, 2 replies; 20+ messages in thread From: Abdellatif El Khlifi @ 2023-08-15 16:43 UTC (permalink / raw) To: marek.vasut Cc: abdellatif.elkhlifi, marek.vasut+renesas, sjg, u-boot, nd, Tom Rini enable the 32-bit version of sandbox Initially NVMXIP came with sandbox64 support. Let's enable sandbox support as well. Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> Cc: Tom Rini <trini@konsulko.com> Cc: Simon Glass <sjg@chromium.org> --- arch/sandbox/dts/sandbox.dts | 14 ++++++++++++++ configs/sandbox_defconfig | 4 ++-- drivers/mtd/nvmxip/nvmxip-uclass.c | 6 +++--- drivers/mtd/nvmxip/nvmxip.c | 13 +++++++++++-- drivers/mtd/nvmxip/nvmxip_qspi.c | 10 +++++++++- test/dm/Makefile | 2 +- 6 files changed, 40 insertions(+), 9 deletions(-) diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts index 12d3eff5fa..1d38a939c4 100644 --- a/arch/sandbox/dts/sandbox.dts +++ b/arch/sandbox/dts/sandbox.dts @@ -97,6 +97,20 @@ compatible = "sandbox,spi"; cs-gpios = <0>, <&gpio_a 0>; }; + + nvmxip-qspi1@08000000 { + compatible = "nvmxip,qspi"; + reg = <0x08000000 0x00200000>; + lba_shift = <9>; + lba = <4096>; + }; + + nvmxip-qspi2@08200000 { + compatible = "nvmxip,qspi"; + reg = <0x08200000 0x00100000>; + lba_shift = <9>; + lba = <2048>; + }; }; #include "sandbox.dtsi" diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index 1cd1c2ed7c..296f9d7326 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -145,7 +145,6 @@ CONFIG_IP_DEFRAG=y CONFIG_BOOTP_SERVERIP=y CONFIG_IPV6=y CONFIG_DM_DMA=y -CONFIG_DEVRES=y CONFIG_DEBUG_DEVRES=y CONFIG_SIMPLE_PM_BUS=y CONFIG_ADC=y @@ -184,6 +183,7 @@ CONFIG_DMA_CHANNELS=y CONFIG_SANDBOX_DMA=y CONFIG_FASTBOOT_FLASH=y CONFIG_FASTBOOT_FLASH_MMC_DEV=0 +CONFIG_ARM_FFA_TRANSPORT=y CONFIG_GPIO_HOG=y CONFIG_DM_GPIO_LOOKUP_LABEL=y CONFIG_QCOM_PMIC_GPIO=y @@ -227,6 +227,7 @@ CONFIG_SPI_FLASH_SPANSION=y CONFIG_SPI_FLASH_STMICRO=y CONFIG_SPI_FLASH_SST=y CONFIG_SPI_FLASH_WINBOND=y +CONFIG_NVMXIP_QSPI=y CONFIG_MULTIPLEXER=y CONFIG_MUX_MMIO=y CONFIG_NVME_PCI=y @@ -345,4 +346,3 @@ CONFIG_TEST_FDTDEC=y CONFIG_UNIT_TEST=y CONFIG_UT_TIME=y CONFIG_UT_DM=y -CONFIG_ARM_FFA_TRANSPORT=y diff --git a/drivers/mtd/nvmxip/nvmxip-uclass.c b/drivers/mtd/nvmxip/nvmxip-uclass.c index 6d8eb177b5..7177f8f314 100644 --- a/drivers/mtd/nvmxip/nvmxip-uclass.c +++ b/drivers/mtd/nvmxip/nvmxip-uclass.c @@ -9,7 +9,7 @@ #include <common.h> #include <dm.h> #include <log.h> -#if CONFIG_IS_ENABLED(SANDBOX64) +#if CONFIG_IS_ENABLED(SANDBOX) #include <asm/test.h> #endif #include <linux/bitops.h> @@ -39,7 +39,7 @@ static int nvmxip_post_bind(struct udevice *udev) char bdev_name[NVMXIP_BLKDEV_NAME_SZ + 1]; int devnum; -#if CONFIG_IS_ENABLED(SANDBOX64) +#if CONFIG_IS_ENABLED(SANDBOX) sandbox_set_enable_memio(true); #endif @@ -62,7 +62,7 @@ static int nvmxip_post_bind(struct udevice *udev) return ret; } - log_info("[%s]: the block device %s ready for use\n", udev->name, bdev_name); + log_debug("[%s]: the block device %s ready for use\n", udev->name, bdev_name); return 0; } diff --git a/drivers/mtd/nvmxip/nvmxip.c b/drivers/mtd/nvmxip/nvmxip.c index a359e3b482..9191e69a40 100644 --- a/drivers/mtd/nvmxip/nvmxip.c +++ b/drivers/mtd/nvmxip/nvmxip.c @@ -11,6 +11,7 @@ #include <log.h> #include <mapmem.h> #include <asm/io.h> +#include <linux/bitfield.h> #include <linux/bitops.h> #include <linux/errno.h> #include "nvmxip.h" @@ -26,9 +27,17 @@ * * Always return 0. */ -static int nvmxip_mmio_rawread(const phys_addr_t address, u64 *value) +static int nvmxip_mmio_rawread(const u64 *address, u64 *value) { +#if CONFIG_IS_ENABLED(PHYS_64BIT) *value = readq(address); +#else + u32 h_word, l_word; + + l_word = readl(address); + h_word = readl((u8 *)address + sizeof(u32)); + *value = FIELD_PREP(GENMASK_ULL(63, 32), h_word) | l_word; +#endif return 0; } @@ -67,7 +76,7 @@ static ulong nvmxip_blk_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcn /* assumption: the data is virtually contiguous */ for (qdata_idx = 0 ; qdata_idx < qwords ; qdata_idx++) - nvmxip_mmio_rawread((phys_addr_t)(virt_blkaddr + qdata_idx), pdst++); + nvmxip_mmio_rawread(virt_blkaddr + qdata_idx, pdst++); log_debug("[%s]: src[0]: 0x%llx , dst[0]: 0x%llx , src[-1]: 0x%llx , dst[-1]: 0x%llx\n", dev->name, diff --git a/drivers/mtd/nvmxip/nvmxip_qspi.c b/drivers/mtd/nvmxip/nvmxip_qspi.c index 7221fd1cb4..b6b94ca57f 100644 --- a/drivers/mtd/nvmxip/nvmxip_qspi.c +++ b/drivers/mtd/nvmxip/nvmxip_qspi.c @@ -17,6 +17,14 @@ DECLARE_GLOBAL_DATA_PTR; #define NVMXIP_QSPI_DRV_NAME "nvmxip_qspi" +/* Select the right physical address formatting according to the platform */ +#ifdef CONFIG_PHYS_64BIT +#define PhysAddrLength "ll" +#else +#define PhysAddrLength "" +#endif +#define PHYS_ADDR_LN "%" PhysAddrLength "x" + /** * nvmxip_qspi_of_to_plat() -read from DT * @dev: the NVMXIP device @@ -50,7 +58,7 @@ static int nvmxip_qspi_of_to_plat(struct udevice *dev) return -EINVAL; } - log_debug("[%s]: XIP device base addr: 0x%llx , lba_shift: %d , lbas: %lu\n", + log_debug("[%s]: XIP device base addr: " PHYS_ADDR_LN " , lba_shift: %d , lbas: %lu\n", dev->name, plat->phys_base, plat->lba_shift, plat->lba); return 0; diff --git a/test/dm/Makefile b/test/dm/Makefile index 7ed00733c1..77172d9012 100644 --- a/test/dm/Makefile +++ b/test/dm/Makefile @@ -18,7 +18,7 @@ obj-$(CONFIG_UT_DM) += test-uclass.o obj-$(CONFIG_UT_DM) += core.o obj-$(CONFIG_UT_DM) += read.o obj-$(CONFIG_UT_DM) += phys2bus.o -ifeq ($(CONFIG_NVMXIP_QSPI)$(CONFIG_SANDBOX64),yy) +ifeq ($(CONFIG_NVMXIP_QSPI),y) obj-y += nvmxip.o endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH] nvmxip: add sandbox support 2023-08-15 16:43 ` [PATCH] nvmxip: add sandbox support Abdellatif El Khlifi @ 2023-08-15 18:39 ` Simon Glass 2023-08-16 11:05 ` [PATCH v2 1/2] log: select physical address formatting in a generic way Abdellatif El Khlifi 2023-08-15 20:44 ` [PATCH] nvmxip: add sandbox support Marek Vasut 1 sibling, 1 reply; 20+ messages in thread From: Simon Glass @ 2023-08-15 18:39 UTC (permalink / raw) To: Abdellatif El Khlifi Cc: marek.vasut, marek.vasut+renesas, u-boot, nd, Tom Rini On Tue, 15 Aug 2023 at 10:43, Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> wrote: > > enable the 32-bit version of sandbox > > Initially NVMXIP came with sandbox64 support. > Let's enable sandbox support as well. > > Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> > Cc: Tom Rini <trini@konsulko.com> > Cc: Simon Glass <sjg@chromium.org> > --- > arch/sandbox/dts/sandbox.dts | 14 ++++++++++++++ > configs/sandbox_defconfig | 4 ++-- > drivers/mtd/nvmxip/nvmxip-uclass.c | 6 +++--- > drivers/mtd/nvmxip/nvmxip.c | 13 +++++++++++-- > drivers/mtd/nvmxip/nvmxip_qspi.c | 10 +++++++++- > test/dm/Makefile | 2 +- > 6 files changed, 40 insertions(+), 9 deletions(-) Reviewed-by: Simon Glass <sjg@chromium.org> > > diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts > index 12d3eff5fa..1d38a939c4 100644 > --- a/arch/sandbox/dts/sandbox.dts > +++ b/arch/sandbox/dts/sandbox.dts > @@ -97,6 +97,20 @@ > compatible = "sandbox,spi"; > cs-gpios = <0>, <&gpio_a 0>; > }; > + > + nvmxip-qspi1@08000000 { > + compatible = "nvmxip,qspi"; > + reg = <0x08000000 0x00200000>; > + lba_shift = <9>; > + lba = <4096>; > + }; > + > + nvmxip-qspi2@08200000 { > + compatible = "nvmxip,qspi"; > + reg = <0x08200000 0x00100000>; > + lba_shift = <9>; > + lba = <2048>; > + }; > }; > > #include "sandbox.dtsi" > diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig > index 1cd1c2ed7c..296f9d7326 100644 > --- a/configs/sandbox_defconfig > +++ b/configs/sandbox_defconfig > @@ -145,7 +145,6 @@ CONFIG_IP_DEFRAG=y > CONFIG_BOOTP_SERVERIP=y > CONFIG_IPV6=y > CONFIG_DM_DMA=y > -CONFIG_DEVRES=y > CONFIG_DEBUG_DEVRES=y > CONFIG_SIMPLE_PM_BUS=y > CONFIG_ADC=y > @@ -184,6 +183,7 @@ CONFIG_DMA_CHANNELS=y > CONFIG_SANDBOX_DMA=y > CONFIG_FASTBOOT_FLASH=y > CONFIG_FASTBOOT_FLASH_MMC_DEV=0 > +CONFIG_ARM_FFA_TRANSPORT=y > CONFIG_GPIO_HOG=y > CONFIG_DM_GPIO_LOOKUP_LABEL=y > CONFIG_QCOM_PMIC_GPIO=y > @@ -227,6 +227,7 @@ CONFIG_SPI_FLASH_SPANSION=y > CONFIG_SPI_FLASH_STMICRO=y > CONFIG_SPI_FLASH_SST=y > CONFIG_SPI_FLASH_WINBOND=y > +CONFIG_NVMXIP_QSPI=y > CONFIG_MULTIPLEXER=y > CONFIG_MUX_MMIO=y > CONFIG_NVME_PCI=y > @@ -345,4 +346,3 @@ CONFIG_TEST_FDTDEC=y > CONFIG_UNIT_TEST=y > CONFIG_UT_TIME=y > CONFIG_UT_DM=y > -CONFIG_ARM_FFA_TRANSPORT=y > diff --git a/drivers/mtd/nvmxip/nvmxip-uclass.c b/drivers/mtd/nvmxip/nvmxip-uclass.c > index 6d8eb177b5..7177f8f314 100644 > --- a/drivers/mtd/nvmxip/nvmxip-uclass.c > +++ b/drivers/mtd/nvmxip/nvmxip-uclass.c > @@ -9,7 +9,7 @@ > #include <common.h> > #include <dm.h> > #include <log.h> > -#if CONFIG_IS_ENABLED(SANDBOX64) > +#if CONFIG_IS_ENABLED(SANDBOX) > #include <asm/test.h> > #endif > #include <linux/bitops.h> > @@ -39,7 +39,7 @@ static int nvmxip_post_bind(struct udevice *udev) > char bdev_name[NVMXIP_BLKDEV_NAME_SZ + 1]; > int devnum; > > -#if CONFIG_IS_ENABLED(SANDBOX64) > +#if CONFIG_IS_ENABLED(SANDBOX) > sandbox_set_enable_memio(true); > #endif > > @@ -62,7 +62,7 @@ static int nvmxip_post_bind(struct udevice *udev) > return ret; > } > > - log_info("[%s]: the block device %s ready for use\n", udev->name, bdev_name); > + log_debug("[%s]: the block device %s ready for use\n", udev->name, bdev_name); > > return 0; > } > diff --git a/drivers/mtd/nvmxip/nvmxip.c b/drivers/mtd/nvmxip/nvmxip.c > index a359e3b482..9191e69a40 100644 > --- a/drivers/mtd/nvmxip/nvmxip.c > +++ b/drivers/mtd/nvmxip/nvmxip.c > @@ -11,6 +11,7 @@ > #include <log.h> > #include <mapmem.h> > #include <asm/io.h> > +#include <linux/bitfield.h> > #include <linux/bitops.h> > #include <linux/errno.h> > #include "nvmxip.h" > @@ -26,9 +27,17 @@ > * > * Always return 0. > */ > -static int nvmxip_mmio_rawread(const phys_addr_t address, u64 *value) > +static int nvmxip_mmio_rawread(const u64 *address, u64 *value) > { > +#if CONFIG_IS_ENABLED(PHYS_64BIT) > *value = readq(address); > +#else > + u32 h_word, l_word; > + > + l_word = readl(address); > + h_word = readl((u8 *)address + sizeof(u32)); > + *value = FIELD_PREP(GENMASK_ULL(63, 32), h_word) | l_word; > +#endif > return 0; > } > > @@ -67,7 +76,7 @@ static ulong nvmxip_blk_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcn > /* assumption: the data is virtually contiguous */ > > for (qdata_idx = 0 ; qdata_idx < qwords ; qdata_idx++) > - nvmxip_mmio_rawread((phys_addr_t)(virt_blkaddr + qdata_idx), pdst++); > + nvmxip_mmio_rawread(virt_blkaddr + qdata_idx, pdst++); > > log_debug("[%s]: src[0]: 0x%llx , dst[0]: 0x%llx , src[-1]: 0x%llx , dst[-1]: 0x%llx\n", > dev->name, > diff --git a/drivers/mtd/nvmxip/nvmxip_qspi.c b/drivers/mtd/nvmxip/nvmxip_qspi.c > index 7221fd1cb4..b6b94ca57f 100644 > --- a/drivers/mtd/nvmxip/nvmxip_qspi.c > +++ b/drivers/mtd/nvmxip/nvmxip_qspi.c > @@ -17,6 +17,14 @@ DECLARE_GLOBAL_DATA_PTR; > > #define NVMXIP_QSPI_DRV_NAME "nvmxip_qspi" > > +/* Select the right physical address formatting according to the platform */ > +#ifdef CONFIG_PHYS_64BIT > +#define PhysAddrLength "ll" > +#else > +#define PhysAddrLength "" > +#endif > +#define PHYS_ADDR_LN "%" PhysAddrLength "x" Could this go in a standard header? > + > /** > * nvmxip_qspi_of_to_plat() -read from DT > * @dev: the NVMXIP device > @@ -50,7 +58,7 @@ static int nvmxip_qspi_of_to_plat(struct udevice *dev) > return -EINVAL; > } > > - log_debug("[%s]: XIP device base addr: 0x%llx , lba_shift: %d , lbas: %lu\n", > + log_debug("[%s]: XIP device base addr: " PHYS_ADDR_LN " , lba_shift: %d , lbas: %lu\n", > dev->name, plat->phys_base, plat->lba_shift, plat->lba); > > return 0; > diff --git a/test/dm/Makefile b/test/dm/Makefile > index 7ed00733c1..77172d9012 100644 > --- a/test/dm/Makefile > +++ b/test/dm/Makefile > @@ -18,7 +18,7 @@ obj-$(CONFIG_UT_DM) += test-uclass.o > obj-$(CONFIG_UT_DM) += core.o > obj-$(CONFIG_UT_DM) += read.o > obj-$(CONFIG_UT_DM) += phys2bus.o > -ifeq ($(CONFIG_NVMXIP_QSPI)$(CONFIG_SANDBOX64),yy) > +ifeq ($(CONFIG_NVMXIP_QSPI),y) > obj-y += nvmxip.o > endif > > -- > 2.25.1 > Regars, Simon ^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v2 1/2] log: select physical address formatting in a generic way 2023-08-15 18:39 ` Simon Glass @ 2023-08-16 11:05 ` Abdellatif El Khlifi 2023-08-16 11:05 ` [PATCH v2 2/2] nvmxip: add sandbox support Abdellatif El Khlifi ` (2 more replies) 0 siblings, 3 replies; 20+ messages in thread From: Abdellatif El Khlifi @ 2023-08-16 11:05 UTC (permalink / raw) To: sjg Cc: abdellatif.elkhlifi, marek.vasut+renesas, marek.vasut, nd, trini, u-boot sets the log formatting according to the platform (64-bit vs 32-bit) Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> Cc: Simon Glass <sjg@chromium.org> --- cmd/armffa.c | 8 -------- include/log.h | 9 +++++++++ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/cmd/armffa.c b/cmd/armffa.c index 7e6eafc03a..ab0fd54d97 100644 --- a/cmd/armffa.c +++ b/cmd/armffa.c @@ -13,14 +13,6 @@ #include <stdlib.h> #include <asm/io.h> -/* Select the right physical address formatting according to the platform */ -#ifdef CONFIG_PHYS_64BIT -#define PhysAddrLength "ll" -#else -#define PhysAddrLength "" -#endif -#define PHYS_ADDR_LN "%" PhysAddrLength "x" - /** * ffa_get_dev() - Return the FF-A device * @devp: pointer to the FF-A device diff --git a/include/log.h b/include/log.h index 6e84f080ef..3f631d6816 100644 --- a/include/log.h +++ b/include/log.h @@ -370,6 +370,15 @@ void __assert_fail(const char *assertion, const char *file, unsigned int line, #define log_msg_retz(_msg, _ret) ((void)(_msg), _ret) #endif +/* Select the right physical address formatting according to the platform */ +#ifdef CONFIG_PHYS_64BIT +#define PhysAddrLength "ll" +#else +#define PhysAddrLength "" +#endif +#define PHYS_ADDR_LN "%" PhysAddrLength "x" +#define PHYS_ADDR_LNU "%" PhysAddrLength "u" + /** * enum log_rec_flags - Flags for a log record */ enum log_rec_flags { /** @LOGRECF_FORCE_DEBUG: Force output of debug record */ -- 2.25.1 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 2/2] nvmxip: add sandbox support 2023-08-16 11:05 ` [PATCH v2 1/2] log: select physical address formatting in a generic way Abdellatif El Khlifi @ 2023-08-16 11:05 ` Abdellatif El Khlifi 2023-08-16 11:18 ` Marek Vasut 2023-08-16 11:13 ` [PATCH v2 1/2] log: select physical address formatting in a generic way Marek Vasut 2023-10-20 12:12 ` Abdellatif El Khlifi 2 siblings, 1 reply; 20+ messages in thread From: Abdellatif El Khlifi @ 2023-08-16 11:05 UTC (permalink / raw) To: sjg Cc: abdellatif.elkhlifi, marek.vasut+renesas, marek.vasut, nd, trini, u-boot enable the 32-bit version of sandbox Initially NVMXIP came with sandbox64 support. Let's enable sandbox support as well. Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> Cc: Tom Rini <trini@konsulko.com> Cc: Simon Glass <sjg@chromium.org> Cc: Marek Vasut <marek.vasut@mailbox.org> --- Changelog: =============== v2: * split into 2 commits: one for sandbox 32-bit support, and one for moving PHYS_ADDR_LN* to log.h v1: introduce the sandbox 32-bit support arch/sandbox/dts/sandbox.dts | 14 ++++++++++++++ configs/sandbox_defconfig | 4 ++-- drivers/mtd/nvmxip/nvmxip-uclass.c | 6 +++--- drivers/mtd/nvmxip/nvmxip.c | 13 +++++++++++-- drivers/mtd/nvmxip/nvmxip_qspi.c | 2 +- test/dm/Makefile | 2 +- 6 files changed, 32 insertions(+), 9 deletions(-) diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts index 12d3eff5fa..1d38a939c4 100644 --- a/arch/sandbox/dts/sandbox.dts +++ b/arch/sandbox/dts/sandbox.dts @@ -97,6 +97,20 @@ compatible = "sandbox,spi"; cs-gpios = <0>, <&gpio_a 0>; }; + + nvmxip-qspi1@08000000 { + compatible = "nvmxip,qspi"; + reg = <0x08000000 0x00200000>; + lba_shift = <9>; + lba = <4096>; + }; + + nvmxip-qspi2@08200000 { + compatible = "nvmxip,qspi"; + reg = <0x08200000 0x00100000>; + lba_shift = <9>; + lba = <2048>; + }; }; #include "sandbox.dtsi" diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig index 1cd1c2ed7c..296f9d7326 100644 --- a/configs/sandbox_defconfig +++ b/configs/sandbox_defconfig @@ -145,7 +145,6 @@ CONFIG_IP_DEFRAG=y CONFIG_BOOTP_SERVERIP=y CONFIG_IPV6=y CONFIG_DM_DMA=y -CONFIG_DEVRES=y CONFIG_DEBUG_DEVRES=y CONFIG_SIMPLE_PM_BUS=y CONFIG_ADC=y @@ -184,6 +183,7 @@ CONFIG_DMA_CHANNELS=y CONFIG_SANDBOX_DMA=y CONFIG_FASTBOOT_FLASH=y CONFIG_FASTBOOT_FLASH_MMC_DEV=0 +CONFIG_ARM_FFA_TRANSPORT=y CONFIG_GPIO_HOG=y CONFIG_DM_GPIO_LOOKUP_LABEL=y CONFIG_QCOM_PMIC_GPIO=y @@ -227,6 +227,7 @@ CONFIG_SPI_FLASH_SPANSION=y CONFIG_SPI_FLASH_STMICRO=y CONFIG_SPI_FLASH_SST=y CONFIG_SPI_FLASH_WINBOND=y +CONFIG_NVMXIP_QSPI=y CONFIG_MULTIPLEXER=y CONFIG_MUX_MMIO=y CONFIG_NVME_PCI=y @@ -345,4 +346,3 @@ CONFIG_TEST_FDTDEC=y CONFIG_UNIT_TEST=y CONFIG_UT_TIME=y CONFIG_UT_DM=y -CONFIG_ARM_FFA_TRANSPORT=y diff --git a/drivers/mtd/nvmxip/nvmxip-uclass.c b/drivers/mtd/nvmxip/nvmxip-uclass.c index 6d8eb177b5..7177f8f314 100644 --- a/drivers/mtd/nvmxip/nvmxip-uclass.c +++ b/drivers/mtd/nvmxip/nvmxip-uclass.c @@ -9,7 +9,7 @@ #include <common.h> #include <dm.h> #include <log.h> -#if CONFIG_IS_ENABLED(SANDBOX64) +#if CONFIG_IS_ENABLED(SANDBOX) #include <asm/test.h> #endif #include <linux/bitops.h> @@ -39,7 +39,7 @@ static int nvmxip_post_bind(struct udevice *udev) char bdev_name[NVMXIP_BLKDEV_NAME_SZ + 1]; int devnum; -#if CONFIG_IS_ENABLED(SANDBOX64) +#if CONFIG_IS_ENABLED(SANDBOX) sandbox_set_enable_memio(true); #endif @@ -62,7 +62,7 @@ static int nvmxip_post_bind(struct udevice *udev) return ret; } - log_info("[%s]: the block device %s ready for use\n", udev->name, bdev_name); + log_debug("[%s]: the block device %s ready for use\n", udev->name, bdev_name); return 0; } diff --git a/drivers/mtd/nvmxip/nvmxip.c b/drivers/mtd/nvmxip/nvmxip.c index a359e3b482..9191e69a40 100644 --- a/drivers/mtd/nvmxip/nvmxip.c +++ b/drivers/mtd/nvmxip/nvmxip.c @@ -11,6 +11,7 @@ #include <log.h> #include <mapmem.h> #include <asm/io.h> +#include <linux/bitfield.h> #include <linux/bitops.h> #include <linux/errno.h> #include "nvmxip.h" @@ -26,9 +27,17 @@ * * Always return 0. */ -static int nvmxip_mmio_rawread(const phys_addr_t address, u64 *value) +static int nvmxip_mmio_rawread(const u64 *address, u64 *value) { +#if CONFIG_IS_ENABLED(PHYS_64BIT) *value = readq(address); +#else + u32 h_word, l_word; + + l_word = readl(address); + h_word = readl((u8 *)address + sizeof(u32)); + *value = FIELD_PREP(GENMASK_ULL(63, 32), h_word) | l_word; +#endif return 0; } @@ -67,7 +76,7 @@ static ulong nvmxip_blk_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcn /* assumption: the data is virtually contiguous */ for (qdata_idx = 0 ; qdata_idx < qwords ; qdata_idx++) - nvmxip_mmio_rawread((phys_addr_t)(virt_blkaddr + qdata_idx), pdst++); + nvmxip_mmio_rawread(virt_blkaddr + qdata_idx, pdst++); log_debug("[%s]: src[0]: 0x%llx , dst[0]: 0x%llx , src[-1]: 0x%llx , dst[-1]: 0x%llx\n", dev->name, diff --git a/drivers/mtd/nvmxip/nvmxip_qspi.c b/drivers/mtd/nvmxip/nvmxip_qspi.c index 7221fd1cb4..faeb99b4ad 100644 --- a/drivers/mtd/nvmxip/nvmxip_qspi.c +++ b/drivers/mtd/nvmxip/nvmxip_qspi.c @@ -50,7 +50,7 @@ static int nvmxip_qspi_of_to_plat(struct udevice *dev) return -EINVAL; } - log_debug("[%s]: XIP device base addr: 0x%llx , lba_shift: %d , lbas: %lu\n", + log_debug("[%s]: XIP device base addr: " PHYS_ADDR_LN " , lba_shift: %d , lbas: %lu\n", dev->name, plat->phys_base, plat->lba_shift, plat->lba); return 0; diff --git a/test/dm/Makefile b/test/dm/Makefile index 7ed00733c1..77172d9012 100644 --- a/test/dm/Makefile +++ b/test/dm/Makefile @@ -18,7 +18,7 @@ obj-$(CONFIG_UT_DM) += test-uclass.o obj-$(CONFIG_UT_DM) += core.o obj-$(CONFIG_UT_DM) += read.o obj-$(CONFIG_UT_DM) += phys2bus.o -ifeq ($(CONFIG_NVMXIP_QSPI)$(CONFIG_SANDBOX64),yy) +ifeq ($(CONFIG_NVMXIP_QSPI),y) obj-y += nvmxip.o endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v2 2/2] nvmxip: add sandbox support 2023-08-16 11:05 ` [PATCH v2 2/2] nvmxip: add sandbox support Abdellatif El Khlifi @ 2023-08-16 11:18 ` Marek Vasut 2023-08-16 16:39 ` Abdellatif El Khlifi 0 siblings, 1 reply; 20+ messages in thread From: Marek Vasut @ 2023-08-16 11:18 UTC (permalink / raw) To: Abdellatif El Khlifi, sjg; +Cc: marek.vasut+renesas, nd, trini, u-boot On 8/16/23 13:05, Abdellatif El Khlifi wrote: > enable the 32-bit version of sandbox > > Initially NVMXIP came with sandbox64 support. > Let's enable sandbox support as well. > > Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> > Cc: Tom Rini <trini@konsulko.com> > Cc: Simon Glass <sjg@chromium.org> > Cc: Marek Vasut <marek.vasut@mailbox.org> > > --- > > Changelog: > =============== > > v2: > > * split into 2 commits: one for sandbox 32-bit support, > and one for moving PHYS_ADDR_LN* to log.h > > v1: introduce the sandbox 32-bit support > > arch/sandbox/dts/sandbox.dts | 14 ++++++++++++++ Please separate DT change > configs/sandbox_defconfig | 4 ++-- Config change too, separate patch that goes last. > drivers/mtd/nvmxip/nvmxip-uclass.c | 6 +++--- > drivers/mtd/nvmxip/nvmxip.c | 13 +++++++++++-- > drivers/mtd/nvmxip/nvmxip_qspi.c | 2 +- > test/dm/Makefile | 2 +- > 6 files changed, 32 insertions(+), 9 deletions(-) [...] > --- a/drivers/mtd/nvmxip/nvmxip-uclass.c > +++ b/drivers/mtd/nvmxip/nvmxip-uclass.c > @@ -9,7 +9,7 @@ > #include <common.h> > #include <dm.h> > #include <log.h> > -#if CONFIG_IS_ENABLED(SANDBOX64) > +#if CONFIG_IS_ENABLED(SANDBOX) > #include <asm/test.h> > #endif > #include <linux/bitops.h> > @@ -39,7 +39,7 @@ static int nvmxip_post_bind(struct udevice *udev) > char bdev_name[NVMXIP_BLKDEV_NAME_SZ + 1]; > int devnum; > > -#if CONFIG_IS_ENABLED(SANDBOX64) > +#if CONFIG_IS_ENABLED(SANDBOX) > sandbox_set_enable_memio(true); This should not be in drivers at all, this should be in tests/ , see https://source.denx.de/u-boot/custodians/u-boot-sh/-/commit/b07772226b405d6212d4faa9329d64a09708b188 > #endif > > @@ -62,7 +62,7 @@ static int nvmxip_post_bind(struct udevice *udev) > return ret; > } > > - log_info("[%s]: the block device %s ready for use\n", udev->name, bdev_name); > + log_debug("[%s]: the block device %s ready for use\n", udev->name, bdev_name); Unrelated change -> separate patch please. > return 0; > } > diff --git a/drivers/mtd/nvmxip/nvmxip.c b/drivers/mtd/nvmxip/nvmxip.c > index a359e3b482..9191e69a40 100644 > --- a/drivers/mtd/nvmxip/nvmxip.c > +++ b/drivers/mtd/nvmxip/nvmxip.c > @@ -11,6 +11,7 @@ > #include <log.h> > #include <mapmem.h> > #include <asm/io.h> > +#include <linux/bitfield.h> > #include <linux/bitops.h> > #include <linux/errno.h> > #include "nvmxip.h" > @@ -26,9 +27,17 @@ > * > * Always return 0. > */ > -static int nvmxip_mmio_rawread(const phys_addr_t address, u64 *value) > +static int nvmxip_mmio_rawread(const u64 *address, u64 *value) > { > +#if CONFIG_IS_ENABLED(PHYS_64BIT) > *value = readq(address); > +#else > + u32 h_word, l_word; > + > + l_word = readl(address); > + h_word = readl((u8 *)address + sizeof(u32)); > + *value = FIELD_PREP(GENMASK_ULL(63, 32), h_word) | l_word; > +#endif > return 0; > } > > @@ -67,7 +76,7 @@ static ulong nvmxip_blk_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcn > /* assumption: the data is virtually contiguous */ > > for (qdata_idx = 0 ; qdata_idx < qwords ; qdata_idx++) > - nvmxip_mmio_rawread((phys_addr_t)(virt_blkaddr + qdata_idx), pdst++); > + nvmxip_mmio_rawread(virt_blkaddr + qdata_idx, pdst++); Separate patch please, or just use this commit as part of this series: https://source.denx.de/u-boot/custodians/u-boot-sh/-/commit/85a662e98c44921a0f5652fa4b170625424ef9a9 > log_debug("[%s]: src[0]: 0x%llx , dst[0]: 0x%llx , src[-1]: 0x%llx , dst[-1]: 0x%llx\n", > dev->name, > diff --git a/drivers/mtd/nvmxip/nvmxip_qspi.c b/drivers/mtd/nvmxip/nvmxip_qspi.c > index 7221fd1cb4..faeb99b4ad 100644 > --- a/drivers/mtd/nvmxip/nvmxip_qspi.c > +++ b/drivers/mtd/nvmxip/nvmxip_qspi.c > @@ -50,7 +50,7 @@ static int nvmxip_qspi_of_to_plat(struct udevice *dev) > return -EINVAL; > } > > - log_debug("[%s]: XIP device base addr: 0x%llx , lba_shift: %d , lbas: %lu\n", > + log_debug("[%s]: XIP device base addr: " PHYS_ADDR_LN " , lba_shift: %d , lbas: %lu\n", > dev->name, plat->phys_base, plat->lba_shift, plat->lba); Another separate patch. > return 0; > diff --git a/test/dm/Makefile b/test/dm/Makefile > index 7ed00733c1..77172d9012 100644 > --- a/test/dm/Makefile > +++ b/test/dm/Makefile > @@ -18,7 +18,7 @@ obj-$(CONFIG_UT_DM) += test-uclass.o > obj-$(CONFIG_UT_DM) += core.o > obj-$(CONFIG_UT_DM) += read.o > obj-$(CONFIG_UT_DM) += phys2bus.o > -ifeq ($(CONFIG_NVMXIP_QSPI)$(CONFIG_SANDBOX64),yy) > +ifeq ($(CONFIG_NVMXIP_QSPI),y) Separate patch. Look here for some ideas: https://source.denx.de/u-boot/custodians/u-boot-sh/-/commits/ci%2Ftest-sandbox64?ref_type=heads ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 2/2] nvmxip: add sandbox support 2023-08-16 11:18 ` Marek Vasut @ 2023-08-16 16:39 ` Abdellatif El Khlifi 2023-08-16 21:47 ` Marek Vasut 0 siblings, 1 reply; 20+ messages in thread From: Abdellatif El Khlifi @ 2023-08-16 16:39 UTC (permalink / raw) To: Marek Vasut; +Cc: nd, u-boot, sjg Hi Marek, Please kindly find my comments below. > > arch/sandbox/dts/sandbox.dts | 14 ++++++++++++++ > > Please separate DT change > > > configs/sandbox_defconfig | 4 ++-- > > Config change too, separate patch that goes last. This commit is doing 1 thing: adding 32-bit sandbox support. The DT change comes into the same context. It makes sense to keep it in this same commit. In previous contributions I made, it was accepted that DT and defconfig are part of the same commit as the code. Let's see what Simon thinks. I'm happy to split if that has becone a new requirement. > > int devnum; > > -#if CONFIG_IS_ENABLED(SANDBOX64) > > +#if CONFIG_IS_ENABLED(SANDBOX) > > sandbox_set_enable_memio(true); > > This should not be in drivers at all, this should be in tests/ , see > > https://source.denx.de/u-boot/custodians/u-boot-sh/-/commit/b07772226b405d6212d4faa9329d64a09708b188 Thanks, I'm happy to improve that one. I'll move it to tests in a seperate commit :) > > > #endif > > @@ -62,7 +62,7 @@ static int nvmxip_post_bind(struct udevice *udev) > > return ret; > > } > > - log_info("[%s]: the block device %s ready for use\n", udev->name, bdev_name); > > + log_debug("[%s]: the block device %s ready for use\n", udev->name, bdev_name); > > Unrelated change -> separate patch please. Valid point, I'll do thanks. > > + l_word = readl(address); > > + h_word = readl((u8 *)address + sizeof(u32)); > > + *value = FIELD_PREP(GENMASK_ULL(63, 32), h_word) | l_word; > > +#endif > > return 0; > > } > > @@ -67,7 +76,7 @@ static ulong nvmxip_blk_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcn > > /* assumption: the data is virtually contiguous */ > > for (qdata_idx = 0 ; qdata_idx < qwords ; qdata_idx++) > > - nvmxip_mmio_rawread((phys_addr_t)(virt_blkaddr + qdata_idx), pdst++); > > + nvmxip_mmio_rawread(virt_blkaddr + qdata_idx, pdst++); > > Separate patch please, or just use this commit as part of this series: > > https://source.denx.de/u-boot/custodians/u-boot-sh/-/commit/85a662e98c44921a0f5652fa4b170625424ef9a9 This is part of the 32-bit support work. Before this commit, it works fine on sandbox64. > > log_debug("[%s]: src[0]: 0x%llx , dst[0]: 0x%llx , src[-1]: 0x%llx , dst[-1]: 0x%llx\n", > > dev->name, > > diff --git a/drivers/mtd/nvmxip/nvmxip_qspi.c b/drivers/mtd/nvmxip/nvmxip_qspi.c > > index 7221fd1cb4..faeb99b4ad 100644 > > --- a/drivers/mtd/nvmxip/nvmxip_qspi.c > > +++ b/drivers/mtd/nvmxip/nvmxip_qspi.c > > @@ -50,7 +50,7 @@ static int nvmxip_qspi_of_to_plat(struct udevice *dev) > > return -EINVAL; > > } > > - log_debug("[%s]: XIP device base addr: 0x%llx , lba_shift: %d , lbas: %lu\n", > > + log_debug("[%s]: XIP device base addr: " PHYS_ADDR_LN " , lba_shift: %d , lbas: %lu\n", > > dev->name, plat->phys_base, plat->lba_shift, plat->lba); > > Another separate patch. This is part of the 32-bit support work. > > > return 0; > > diff --git a/test/dm/Makefile b/test/dm/Makefile > > index 7ed00733c1..77172d9012 100644 > > --- a/test/dm/Makefile > > +++ b/test/dm/Makefile > > @@ -18,7 +18,7 @@ obj-$(CONFIG_UT_DM) += test-uclass.o > > obj-$(CONFIG_UT_DM) += core.o > > obj-$(CONFIG_UT_DM) += read.o > > obj-$(CONFIG_UT_DM) += phys2bus.o > > -ifeq ($(CONFIG_NVMXIP_QSPI)$(CONFIG_SANDBOX64),yy) > > +ifeq ($(CONFIG_NVMXIP_QSPI),y) > > Separate patch. > > Look here for some ideas: > > https://source.denx.de/u-boot/custodians/u-boot-sh/-/commits/ci%2Ftest-sandbox64?ref_type=heads SANDBOX applies for both sandbox64 and sandbox. This is part of enabling sandbox alongside sandbox64. This has been tested and works. Kind regards Abdellatif ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 2/2] nvmxip: add sandbox support 2023-08-16 16:39 ` Abdellatif El Khlifi @ 2023-08-16 21:47 ` Marek Vasut 0 siblings, 0 replies; 20+ messages in thread From: Marek Vasut @ 2023-08-16 21:47 UTC (permalink / raw) To: Abdellatif El Khlifi; +Cc: nd, u-boot, sjg On 8/16/23 18:39, Abdellatif El Khlifi wrote: > Hi Marek, Hi, > Please kindly find my comments below. > >>> arch/sandbox/dts/sandbox.dts | 14 ++++++++++++++ >> >> Please separate DT change >> >>> configs/sandbox_defconfig | 4 ++-- >> >> Config change too, separate patch that goes last. > > This commit is doing 1 thing: adding 32-bit sandbox support. No, it does not do one thing, else I would not ask you to split this up into a series. It does multiple things and squashes those in single commit. > The DT change comes into the same context. > It makes sense to keep it in this same commit. > > In previous contributions I made, it was accepted that DT > and defconfig are part of the same commit as the code. > > Let's see what Simon thinks. > > I'm happy to split if that has becone a new requirement. This is not a new requirement, that requirement has been around since forever, see: https://docs.kernel.org/process/submitting-patches.html#split-changes U-Boot follows the same rule set. >>> int devnum; >>> -#if CONFIG_IS_ENABLED(SANDBOX64) >>> +#if CONFIG_IS_ENABLED(SANDBOX) >>> sandbox_set_enable_memio(true); >> >> This should not be in drivers at all, this should be in tests/ , see >> >> https://source.denx.de/u-boot/custodians/u-boot-sh/-/commit/b07772226b405d6212d4faa9329d64a09708b188 > > Thanks, I'm happy to improve that one. I'll move it to tests in a seperate commit :) > >> >>> #endif >>> @@ -62,7 +62,7 @@ static int nvmxip_post_bind(struct udevice *udev) >>> return ret; >>> } >>> - log_info("[%s]: the block device %s ready for use\n", udev->name, bdev_name); >>> + log_debug("[%s]: the block device %s ready for use\n", udev->name, bdev_name); >> >> Unrelated change -> separate patch please. > > Valid point, I'll do thanks. > >>> + l_word = readl(address); >>> + h_word = readl((u8 *)address + sizeof(u32)); >>> + *value = FIELD_PREP(GENMASK_ULL(63, 32), h_word) | l_word; >>> +#endif >>> return 0; >>> } >>> @@ -67,7 +76,7 @@ static ulong nvmxip_blk_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcn >>> /* assumption: the data is virtually contiguous */ >>> for (qdata_idx = 0 ; qdata_idx < qwords ; qdata_idx++) >>> - nvmxip_mmio_rawread((phys_addr_t)(virt_blkaddr + qdata_idx), pdst++); >>> + nvmxip_mmio_rawread(virt_blkaddr + qdata_idx, pdst++); >> >> Separate patch please, or just use this commit as part of this series: >> >> https://source.denx.de/u-boot/custodians/u-boot-sh/-/commit/85a662e98c44921a0f5652fa4b170625424ef9a9 > > This is part of the 32-bit support work. > Before this commit, it works fine on sandbox64. Have you tested the entire test suite ? Like e.g. the DM/UT 'host' test ? That one fails on sandbox64 iirc . >>> log_debug("[%s]: src[0]: 0x%llx , dst[0]: 0x%llx , src[-1]: 0x%llx , dst[-1]: 0x%llx\n", >>> dev->name, >>> diff --git a/drivers/mtd/nvmxip/nvmxip_qspi.c b/drivers/mtd/nvmxip/nvmxip_qspi.c >>> index 7221fd1cb4..faeb99b4ad 100644 >>> --- a/drivers/mtd/nvmxip/nvmxip_qspi.c >>> +++ b/drivers/mtd/nvmxip/nvmxip_qspi.c >>> @@ -50,7 +50,7 @@ static int nvmxip_qspi_of_to_plat(struct udevice *dev) >>> return -EINVAL; >>> } >>> - log_debug("[%s]: XIP device base addr: 0x%llx , lba_shift: %d , lbas: %lu\n", >>> + log_debug("[%s]: XIP device base addr: " PHYS_ADDR_LN " , lba_shift: %d , lbas: %lu\n", >>> dev->name, plat->phys_base, plat->lba_shift, plat->lba); >> >> Another separate patch. > > This is part of the 32-bit support work. This fixes a print of phys_addr_t and is a good example for others to follow if they need to print such an address. If this is a separate patch with proper commit message explaining the change, then others can be pointed to that commit as an example to follow. If this is buried in a mega-patch, this benefit is lost. >>> return 0; >>> diff --git a/test/dm/Makefile b/test/dm/Makefile >>> index 7ed00733c1..77172d9012 100644 >>> --- a/test/dm/Makefile >>> +++ b/test/dm/Makefile >>> @@ -18,7 +18,7 @@ obj-$(CONFIG_UT_DM) += test-uclass.o >>> obj-$(CONFIG_UT_DM) += core.o >>> obj-$(CONFIG_UT_DM) += read.o >>> obj-$(CONFIG_UT_DM) += phys2bus.o >>> -ifeq ($(CONFIG_NVMXIP_QSPI)$(CONFIG_SANDBOX64),yy) >>> +ifeq ($(CONFIG_NVMXIP_QSPI),y) >> >> Separate patch. >> >> Look here for some ideas: >> >> https://source.denx.de/u-boot/custodians/u-boot-sh/-/commits/ci%2Ftest-sandbox64?ref_type=heads > > SANDBOX applies for both sandbox64 and sandbox. > This is part of enabling sandbox alongside sandbox64. > > This has been tested and works. If this is split up into proper patches with proper commit messages, the resulting change would be identical, so the "tested and works" argument still applies, even if this is split into proper series. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 1/2] log: select physical address formatting in a generic way 2023-08-16 11:05 ` [PATCH v2 1/2] log: select physical address formatting in a generic way Abdellatif El Khlifi 2023-08-16 11:05 ` [PATCH v2 2/2] nvmxip: add sandbox support Abdellatif El Khlifi @ 2023-08-16 11:13 ` Marek Vasut 2023-08-16 14:39 ` Simon Glass 2023-10-20 12:12 ` Abdellatif El Khlifi 2 siblings, 1 reply; 20+ messages in thread From: Marek Vasut @ 2023-08-16 11:13 UTC (permalink / raw) To: Abdellatif El Khlifi, sjg; +Cc: marek.vasut+renesas, nd, trini, u-boot On 8/16/23 13:05, Abdellatif El Khlifi wrote: > sets the log formatting according to the platform (64-bit vs 32-bit) Use imperative mood please, see https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes > Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> > Cc: Simon Glass <sjg@chromium.org> > --- > cmd/armffa.c | 8 -------- > include/log.h | 9 +++++++++ > 2 files changed, 9 insertions(+), 8 deletions(-) > > diff --git a/cmd/armffa.c b/cmd/armffa.c > index 7e6eafc03a..ab0fd54d97 100644 > --- a/cmd/armffa.c > +++ b/cmd/armffa.c > @@ -13,14 +13,6 @@ > #include <stdlib.h> > #include <asm/io.h> > > -/* Select the right physical address formatting according to the platform */ > -#ifdef CONFIG_PHYS_64BIT > -#define PhysAddrLength "ll" > -#else > -#define PhysAddrLength "" > -#endif > -#define PHYS_ADDR_LN "%" PhysAddrLength "x" Would it make sense to implement printf '%pa' formatting string instead ? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 1/2] log: select physical address formatting in a generic way 2023-08-16 11:13 ` [PATCH v2 1/2] log: select physical address formatting in a generic way Marek Vasut @ 2023-08-16 14:39 ` Simon Glass 2023-08-16 15:23 ` Marek Vasut 0 siblings, 1 reply; 20+ messages in thread From: Simon Glass @ 2023-08-16 14:39 UTC (permalink / raw) To: Marek Vasut; +Cc: Abdellatif El Khlifi, marek.vasut+renesas, nd, trini, u-boot Hi Marek, On Wed, 16 Aug 2023 at 05:13, Marek Vasut <marek.vasut@mailbox.org> wrote: > > On 8/16/23 13:05, Abdellatif El Khlifi wrote: > > sets the log formatting according to the platform (64-bit vs 32-bit) > > Use imperative mood please, see > https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes > > > Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> > > Cc: Simon Glass <sjg@chromium.org> > > --- > > cmd/armffa.c | 8 -------- > > include/log.h | 9 +++++++++ > > 2 files changed, 9 insertions(+), 8 deletions(-) > > > > diff --git a/cmd/armffa.c b/cmd/armffa.c > > index 7e6eafc03a..ab0fd54d97 100644 > > --- a/cmd/armffa.c > > +++ b/cmd/armffa.c > > @@ -13,14 +13,6 @@ > > #include <stdlib.h> > > #include <asm/io.h> > > > > -/* Select the right physical address formatting according to the platform */ > > -#ifdef CONFIG_PHYS_64BIT > > -#define PhysAddrLength "ll" > > -#else > > -#define PhysAddrLength "" > > -#endif > > -#define PHYS_ADDR_LN "%" PhysAddrLength "x" > > Would it make sense to implement printf '%pa' formatting string instead ? The problem is that it is not a pointer. Also we want the compiler to check the size. Regards, Simon ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 1/2] log: select physical address formatting in a generic way 2023-08-16 14:39 ` Simon Glass @ 2023-08-16 15:23 ` Marek Vasut 0 siblings, 0 replies; 20+ messages in thread From: Marek Vasut @ 2023-08-16 15:23 UTC (permalink / raw) To: Simon Glass; +Cc: Abdellatif El Khlifi, marek.vasut+renesas, nd, trini, u-boot On 8/16/23 16:39, Simon Glass wrote: > Hi Marek, > > On Wed, 16 Aug 2023 at 05:13, Marek Vasut <marek.vasut@mailbox.org> wrote: >> >> On 8/16/23 13:05, Abdellatif El Khlifi wrote: >>> sets the log formatting according to the platform (64-bit vs 32-bit) >> >> Use imperative mood please, see >> https://www.kernel.org/doc/html/latest/process/submitting-patches.html#describe-your-changes >> >>> Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> >>> Cc: Simon Glass <sjg@chromium.org> >>> --- >>> cmd/armffa.c | 8 -------- >>> include/log.h | 9 +++++++++ >>> 2 files changed, 9 insertions(+), 8 deletions(-) >>> >>> diff --git a/cmd/armffa.c b/cmd/armffa.c >>> index 7e6eafc03a..ab0fd54d97 100644 >>> --- a/cmd/armffa.c >>> +++ b/cmd/armffa.c >>> @@ -13,14 +13,6 @@ >>> #include <stdlib.h> >>> #include <asm/io.h> >>> >>> -/* Select the right physical address formatting according to the platform */ >>> -#ifdef CONFIG_PHYS_64BIT >>> -#define PhysAddrLength "ll" >>> -#else >>> -#define PhysAddrLength "" >>> -#endif >>> -#define PHYS_ADDR_LN "%" PhysAddrLength "x" >> >> Would it make sense to implement printf '%pa' formatting string instead ? > > The problem is that it is not a pointer. Also we want the compiler to > check the size. What does Linux use ? ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 1/2] log: select physical address formatting in a generic way 2023-08-16 11:05 ` [PATCH v2 1/2] log: select physical address formatting in a generic way Abdellatif El Khlifi 2023-08-16 11:05 ` [PATCH v2 2/2] nvmxip: add sandbox support Abdellatif El Khlifi 2023-08-16 11:13 ` [PATCH v2 1/2] log: select physical address formatting in a generic way Marek Vasut @ 2023-10-20 12:12 ` Abdellatif El Khlifi 2 siblings, 0 replies; 20+ messages in thread From: Abdellatif El Khlifi @ 2023-10-20 12:12 UTC (permalink / raw) To: sjg; +Cc: nd, trini, u-boot, xueliang.zhong Hi Simon, > sets the log formatting according to the platform (64-bit vs 32-bit) > > Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> > Cc: Simon Glass <sjg@chromium.org> > --- > cmd/armffa.c | 8 -------- > include/log.h | 9 +++++++++ > 2 files changed, 9 insertions(+), 8 deletions(-) > > diff --git a/cmd/armffa.c b/cmd/armffa.c > index 7e6eafc03a..ab0fd54d97 100644 > --- a/cmd/armffa.c > +++ b/cmd/armffa.c > @@ -13,14 +13,6 @@ > #include <stdlib.h> > #include <asm/io.h> > > -/* Select the right physical address formatting according to the platform */ > -#ifdef CONFIG_PHYS_64BIT > -#define PhysAddrLength "ll" > -#else > -#define PhysAddrLength "" > -#endif > -#define PHYS_ADDR_LN "%" PhysAddrLength "x" > - > /** > * ffa_get_dev() - Return the FF-A device > * @devp: pointer to the FF-A device > diff --git a/include/log.h b/include/log.h > index 6e84f080ef..3f631d6816 100644 > --- a/include/log.h > +++ b/include/log.h > @@ -370,6 +370,15 @@ void __assert_fail(const char *assertion, const char *file, unsigned int line, > #define log_msg_retz(_msg, _ret) ((void)(_msg), _ret) > #endif > > +/* Select the right physical address formatting according to the platform */ > +#ifdef CONFIG_PHYS_64BIT > +#define PhysAddrLength "ll" > +#else > +#define PhysAddrLength "" > +#endif > +#define PHYS_ADDR_LN "%" PhysAddrLength "x" > +#define PHYS_ADDR_LNU "%" PhysAddrLength "u" > + > /** * enum log_rec_flags - Flags for a log record */ > enum log_rec_flags { > /** @LOGRECF_FORCE_DEBUG: Force output of debug record */ > -- > 2.25.1 > Any feedback about this specific commit please ? A gentle reminder about the context: While I was working on the FF-A support, you suggested that I move PHYS_ADDR_LN macros to a common location so it can be used in a generic way. Cheers, Abdellatif ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH] nvmxip: add sandbox support 2023-08-15 16:43 ` [PATCH] nvmxip: add sandbox support Abdellatif El Khlifi 2023-08-15 18:39 ` Simon Glass @ 2023-08-15 20:44 ` Marek Vasut 1 sibling, 0 replies; 20+ messages in thread From: Marek Vasut @ 2023-08-15 20:44 UTC (permalink / raw) To: Abdellatif El Khlifi; +Cc: marek.vasut+renesas, sjg, u-boot, nd, Tom Rini On 8/15/23 18:43, Abdellatif El Khlifi wrote: > enable the 32-bit version of sandbox > > Initially NVMXIP came with sandbox64 support. > Let's enable sandbox support as well. > > Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> > Cc: Tom Rini <trini@konsulko.com> > Cc: Simon Glass <sjg@chromium.org> Can you please split this into multiple patches and add proper commit message description to each one ? Thanks. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test 2023-08-14 22:45 ` Marek Vasut 2023-08-15 16:43 ` [PATCH] nvmxip: add sandbox support Abdellatif El Khlifi @ 2023-08-15 17:08 ` Abdellatif El Khlifi 1 sibling, 0 replies; 20+ messages in thread From: Abdellatif El Khlifi @ 2023-08-15 17:08 UTC (permalink / raw) To: Marek Vasut; +Cc: nd, u-boot, sjg Hi, On Tue, Aug 15, 2023 at 12:45:57AM +0200, Marek Vasut wrote: > On 8/15/23 00:42, Simon Glass wrote: > > On Sun, 13 Aug 2023 at 15:47, Marek Vasut > > <marek.vasut+renesas@mailbox.org> wrote: > > > > > > Enable NVMXIP QSPI driver on sandbox, since it is already enabled > > > on sandbox64. Update blk tests to match. > > > > > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> > > > --- > > > Cc: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> > > > Cc: Simon Glass <sjg@chromium.org> > > > --- > > > configs/sandbox_defconfig | 1 + > > > test/dm/blk.c | 63 +++++++++++++++++++++++++++++++-------- > > > 2 files changed, 52 insertions(+), 12 deletions(-) > > > > > > > Reviewed-by: Simon Glass <sjg@chromium.org> > > NAK, this one has to wait. All of this NVMXIP stuff needs closer look, I > think it is really weirdly broken and doesn't even pass sandbox and > sandbox64 tests. Can Abdellatif try and check whether ALL sandbox and > sandbox64 tests pass with this enabled ? Initially the NVMXIP feature has been introduced with sandbox64 support. The test case runs fine on sandbox64. I've just sent a commit enabling NVMXIP for sandbox [1]. Tested on both sandbox and sandbox64. I hope this helps. [1]: https://lore.kernel.org/all/20230815164300.444701-1-abdellatif.elkhlifi@arm.com/ Cheers Abdellatif ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems 2023-08-13 21:46 [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems Marek Vasut 2023-08-13 21:46 ` [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test Marek Vasut @ 2023-08-13 23:55 ` Marek Vasut 2023-08-19 0:23 ` Marek Vasut 2 siblings, 0 replies; 20+ messages in thread From: Marek Vasut @ 2023-08-13 23:55 UTC (permalink / raw) To: Marek Vasut, u-boot; +Cc: Abdellatif El Khlifi, Simon Glass On 8/13/23 23:46, Marek Vasut wrote: > Get rid of nvmxip_mmio_rawread() and just implement the readl()/readq() > reader loop within nvmxip_blk_read(). Cast the destination buffer as > needed and increment the read by either 4 or 8 bytes depending on if > this is systemd with 32bit or 64bit physical address. > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> These two patches need a bit more work, skip for now. ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems 2023-08-13 21:46 [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems Marek Vasut 2023-08-13 21:46 ` [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test Marek Vasut 2023-08-13 23:55 ` [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems Marek Vasut @ 2023-08-19 0:23 ` Marek Vasut 2023-08-21 11:34 ` Abdellatif El Khlifi 2 siblings, 1 reply; 20+ messages in thread From: Marek Vasut @ 2023-08-19 0:23 UTC (permalink / raw) To: u-boot, Abdellatif El Khlifi; +Cc: Simon Glass On 8/13/23 23:46, Marek Vasut wrote: > Get rid of nvmxip_mmio_rawread() and just implement the readl()/readq() > reader loop within nvmxip_blk_read(). Cast the destination buffer as > needed and increment the read by either 4 or 8 bytes depending on if > this is systemd with 32bit or 64bit physical address. > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> > --- > Cc: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> > Cc: Simon Glass <sjg@chromium.org> Sandbox CI test fails with this series: https://source.denx.de/u-boot/custodians/u-boot-sh/-/pipelines/17427 https://u-boot.source-pages.denx.de/-/custodians/u-boot-sh/-/jobs/679256/artifacts/test-log.html ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems 2023-08-19 0:23 ` Marek Vasut @ 2023-08-21 11:34 ` Abdellatif El Khlifi 0 siblings, 0 replies; 20+ messages in thread From: Abdellatif El Khlifi @ 2023-08-21 11:34 UTC (permalink / raw) To: Marek Vasut; +Cc: sjg, u-boot, nd, trini Hi, On Sat, Aug 19, 2023 at 02:23:02AM +0200, Marek Vasut wrote: > On 8/13/23 23:46, Marek Vasut wrote: > > Get rid of nvmxip_mmio_rawread() and just implement the readl()/readq() > > reader loop within nvmxip_blk_read(). Cast the destination buffer as > > needed and increment the read by either 4 or 8 bytes depending on if > > this is systemd with 32bit or 64bit physical address. > > > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> > > --- > > Cc: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> > > Cc: Simon Glass <sjg@chromium.org> > > Sandbox CI test fails with this series: > > https://source.denx.de/u-boot/custodians/u-boot-sh/-/pipelines/17427 > > https://u-boot.source-pages.denx.de/-/custodians/u-boot-sh/-/jobs/679256/artifacts/test-log.html > I run the {host , blk_usb, blk_iter, blk_foreach, blk_flags} tests using the commit [1] preceding the NVMXIP patchset. The tests fail as shown below [3]. I think these issues are not related to NVMXIP. Regarding your comments for [2], I'll address them as soon as I can. [1]: b197f1f05dee730e173a0756cb1a5f2be5d3ba5b [2]: https://lore.kernel.org/all/20230816110551.86930-2-abdellatif.elkhlifi@arm.com/ [3]: tests results: host: test/dm/host.c:44, dm_test_host(): 0 == host_attach_file(dev, filename): Expected 0x0 (0), got 0xfffffffe (-2) Segmentation fault (core dumped) blk_usb: test/dm/blk.c:88, dm_test_blk_usb(): 6 == count_blk_devices(): Expected 0x6 (6), got 0x1 (1) Bus usb@1: scanning bus usb@1 for devices... 2 USB Device(s) found test/dm/blk.c:93, dm_test_blk_usb(): 6 == count_blk_devices(): Expected 0x6 (6), got 0x1 (1) Test blk_usb failed 4 times blk_iter: test/dm/blk.c:188, dm_test_blk_iter(): 0 == blk_first_device_err(BLKF_FIXED, &dev): Expected 0x0 (0), got 0xffffffed (-19) Segmentation fault (core dumped) blk_foreach: test/dm/blk.c:305, dm_test_blk_foreach(): 7 == found: Expected 0x7 (7), got 0x0 (0) test/dm/blk.c:316, dm_test_blk_foreach(): 7 == found: Expected 0x7 (7), got 0x0 (0) test/dm/blk.c:322, dm_test_blk_foreach(): 7 == found: Expected 0x7 (7), got 0x0 (0) test/dm/blk.c:323, dm_test_blk_foreach(): 3 == blk_count_devices(BLKF_BOTH): Expected 0x3 (3), got 0x0 (0) test/dm/blk.c:328, dm_test_blk_foreach(): 4 == found: Expected 0x4 (4), got 0x0 (0) test/dm/blk.c:329, dm_test_blk_foreach(): 1 == blk_count_devices(BLKF_FIXED): Expected 0x1 (1), got 0x0 (0) test/dm/blk.c:334, dm_test_blk_foreach(): 3 == found: Expected 0x3 (3), got 0x0 (0) test/dm/blk.c:335, dm_test_blk_foreach(): 2 == blk_count_devices(BLKF_REMOVABLE): Expected 0x2 (2), got 0x0 (0) ... blk_flags: test/dm/blk.c:236, dm_test_blk_flags(): 0 == blk_find_first(BLKF_BOTH, &dev): Expected 0x0 (0), got 0xffffffed (-19) test/dm/blk.c:237, dm_test_blk_flags(): dev = NULL: Expected non-null, got NULL Segmentation fault (core dumped) Cheers, Abdellatif ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2023-10-20 12:12 UTC | newest] Thread overview: 20+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-08-13 21:46 [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems Marek Vasut 2023-08-13 21:46 ` [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test Marek Vasut 2023-08-14 22:42 ` Simon Glass 2023-08-14 22:45 ` Marek Vasut 2023-08-15 16:43 ` [PATCH] nvmxip: add sandbox support Abdellatif El Khlifi 2023-08-15 18:39 ` Simon Glass 2023-08-16 11:05 ` [PATCH v2 1/2] log: select physical address formatting in a generic way Abdellatif El Khlifi 2023-08-16 11:05 ` [PATCH v2 2/2] nvmxip: add sandbox support Abdellatif El Khlifi 2023-08-16 11:18 ` Marek Vasut 2023-08-16 16:39 ` Abdellatif El Khlifi 2023-08-16 21:47 ` Marek Vasut 2023-08-16 11:13 ` [PATCH v2 1/2] log: select physical address formatting in a generic way Marek Vasut 2023-08-16 14:39 ` Simon Glass 2023-08-16 15:23 ` Marek Vasut 2023-10-20 12:12 ` Abdellatif El Khlifi 2023-08-15 20:44 ` [PATCH] nvmxip: add sandbox support Marek Vasut 2023-08-15 17:08 ` [PATCH 2/2] configs: sandbox: test: dm: blk: Enable NVMXIP QSPI and update test Abdellatif El Khlifi 2023-08-13 23:55 ` [PATCH 1/2] drivers/mtd/nvmxip: Rework the read accessor to support 32bit systems Marek Vasut 2023-08-19 0:23 ` Marek Vasut 2023-08-21 11:34 ` Abdellatif El Khlifi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox