diff options
author | Tom Rini <trini@konsulko.com> | 2021-05-27 07:41:25 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2021-05-27 07:41:25 -0400 |
commit | a0ecfa568d3309bb21869622bfc7147665c4260d (patch) | |
tree | 977aa2f50c7cbc50ddf7dc4384e6126b38e293c1 | |
parent | f4b2786b80583c8b48245ac5f90fda47328f3a6c (diff) | |
parent | cb6c9c83e2f1cb5b96851445dbf3dea8541cb212 (diff) | |
download | u-boot-a0ecfa568d3309bb21869622bfc7147665c4260d.zip u-boot-a0ecfa568d3309bb21869622bfc7147665c4260d.tar.gz u-boot-a0ecfa568d3309bb21869622bfc7147665c4260d.tar.bz2 |
Merge branch '2021-05-26-assorted-bugfixes'
-rw-r--r-- | .gitlab-ci.yml | 1 | ||||
-rw-r--r-- | arch/powerpc/lib/traps.c | 1 | ||||
-rw-r--r-- | common/spl/Kconfig | 24 | ||||
-rw-r--r-- | disk/part.c | 6 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-single.c | 10 | ||||
-rw-r--r-- | fs/btrfs/disk-io.c | 2 | ||||
-rw-r--r-- | fs/squashfs/sqfs.c | 2 | ||||
-rw-r--r-- | include/test/ut.h | 17 | ||||
-rw-r--r-- | test/dm/part.c | 37 | ||||
-rw-r--r-- | test/py/tests/test_fs/conftest.py | 48 |
10 files changed, 88 insertions, 60 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3e250f3..d072e83 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -189,7 +189,6 @@ sandbox_spl test.py: <<: *buildman_and_testpy_dfn sandbox_noinst_test.py: - tags: [ 'all' ] variables: TEST_PY_BD: "sandbox_noinst" TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl" diff --git a/arch/powerpc/lib/traps.c b/arch/powerpc/lib/traps.c index c7bce82..ab8ca26 100644 --- a/arch/powerpc/lib/traps.c +++ b/arch/powerpc/lib/traps.c @@ -4,6 +4,7 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ +#include <common.h> #include <init.h> #include <asm/global_data.h> diff --git a/common/spl/Kconfig b/common/spl/Kconfig index df5468f..b709a05 100644 --- a/common/spl/Kconfig +++ b/common/spl/Kconfig @@ -165,7 +165,7 @@ config SPL_BOARD_INIT provided by the board. config SPL_BOOTROM_SUPPORT - bool "Support returning to the BOOTROM" + bool "Support returning to the BOOTROM" help Some platforms (e.g. the Rockchip RK3368) provide support in their ROM for loading the next boot-stage after performing basic setup @@ -707,7 +707,7 @@ config SYS_MMCSD_FS_BOOT_PARTITION default 1 help Partition on the MMC to load U-Boot from when the MMC is being - used in fs mode + used in fs mode config SPL_MMC_TINY bool "Tiny MMC framework in SPL" @@ -784,8 +784,8 @@ config SPL_NAND_SIMPLE config SPL_NAND_BASE depends on SPL_NAND_DRIVERS bool "Use Base NAND Driver" - help - Include nand_base.c in the SPL. + help + Include nand_base.c in the SPL. config SPL_NAND_IDENT depends on SPL_NAND_BASE @@ -1301,7 +1301,7 @@ config SPL_ATF_LOAD_IMAGE_V2 method, say Y. config SPL_ATF_NO_PLATFORM_PARAM - bool "Pass no platform parameter" + bool "Pass no platform parameter" depends on SPL_ATF help While we expect to call a pointer to a valid FDT (or NULL) @@ -1395,7 +1395,7 @@ config TPL_BOOTCOUNT_LIMIT For example, it may be useful to choose the device to boot. config TPL_LDSCRIPT - string "Linker script for the TPL stage" + string "Linker script for the TPL stage" depends on TPL default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64 default "arch/\$(ARCH)/cpu/u-boot-spl.lds" @@ -1409,7 +1409,7 @@ config TPL_LDSCRIPT fall back to the linker-script used for the SPL stage. config TPL_NEEDS_SEPARATE_TEXT_BASE - bool "TPL needs a separate text-base" + bool "TPL needs a separate text-base" default n depends on TPL help @@ -1418,7 +1418,7 @@ config TPL_NEEDS_SEPARATE_TEXT_BASE .text sections of the TPL stage has to be set below. config TPL_NEEDS_SEPARATE_STACK - bool "TPL needs a separate initial stack-pointer" + bool "TPL needs a separate initial stack-pointer" default n depends on TPL help @@ -1426,20 +1426,20 @@ config TPL_NEEDS_SEPARATE_STACK stack-pointer from the settings for the SPL stage. config TPL_TEXT_BASE - hex "Base address for the .text section of the TPL stage" + hex "Base address for the .text section of the TPL stage" depends on TPL_NEEDS_SEPARATE_TEXT_BASE help The base address for the .text section of the TPL stage. config TPL_MAX_SIZE - int "Maximum size (in bytes) for the TPL stage" + int "Maximum size (in bytes) for the TPL stage" default 0 depends on TPL help The maximum size (in bytes) of the TPL stage. config TPL_STACK - hex "Address of the initial stack-pointer for the TPL stage" + hex "Address of the initial stack-pointer for the TPL stage" depends on TPL_NEEDS_SEPARATE_STACK help The address of the initial stack-pointer for the TPL stage. @@ -1457,7 +1457,7 @@ config TPL_READ_ONLY device-private data. config TPL_BOOTROM_SUPPORT - bool "Support returning to the BOOTROM (from TPL)" + bool "Support returning to the BOOTROM (from TPL)" help Some platforms (e.g. the Rockchip RK3368) provide support in their ROM for loading the next boot-stage after performing basic setup diff --git a/disk/part.c b/disk/part.c index 5e7e59c..086da84 100644 --- a/disk/part.c +++ b/disk/part.c @@ -714,7 +714,11 @@ static int part_get_info_by_dev_and_name(const char *dev_iface, int ret; /* Separate device and partition name specification */ - part_str = strchr(dev_part_str, '#'); + if (dev_part_str) + part_str = strchr(dev_part_str, '#'); + else + part_str = NULL; + if (part_str) { dup_str = strdup(dev_part_str); dup_str[part_str - dev_part_str] = 0; diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c index ebb7602..7af6c5f 100644 --- a/drivers/pinctrl/pinctrl-single.c +++ b/drivers/pinctrl/pinctrl-single.c @@ -509,19 +509,13 @@ static int single_of_to_plat(struct udevice *dev) return -EINVAL; } - addr = dev_read_addr_size(dev, "reg", &size); + addr = dev_read_addr_size_index(dev, 0, &size); if (addr == FDT_ADDR_T_NONE) { - dev_err(dev, "failed to get base register size\n"); + dev_err(dev, "failed to get base register address\n"); return -EINVAL; } pdata->offset = size - pdata->width / BITS_PER_BYTE; - - addr = dev_read_addr(dev); - if (addr == FDT_ADDR_T_NONE) { - dev_dbg(dev, "no valid base register address\n"); - return -EINVAL; - } pdata->base = addr; ret = dev_read_u32(dev, "pinctrl-single,function-mask", &pdata->mask); diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index c6fdec9..349411c 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -291,7 +291,7 @@ error_out: int btrfs_read_dev_super(struct blk_desc *desc, struct disk_partition *part, struct btrfs_super_block *sb) { - char tmp[BTRFS_SUPER_INFO_SIZE]; + ALLOC_CACHE_ALIGN_BUFFER(char, tmp, BTRFS_SUPER_INFO_SIZE); struct btrfs_super_block *buf = (struct btrfs_super_block *)tmp; int ret; diff --git a/fs/squashfs/sqfs.c b/fs/squashfs/sqfs.c index 29805c3..997be2d 100644 --- a/fs/squashfs/sqfs.c +++ b/fs/squashfs/sqfs.c @@ -876,7 +876,7 @@ int sqfs_opendir(const char *filename, struct fs_dir_stream **dirsp) char **token_list = NULL, *path = NULL; u32 *pos_list = NULL; - dirs = malloc(sizeof(*dirs)); + dirs = calloc(1, sizeof(*dirs)); if (!dirs) return -EINVAL; diff --git a/include/test/ut.h b/include/test/ut.h index fbbba28..656e25f 100644 --- a/include/test/ut.h +++ b/include/test/ut.h @@ -177,23 +177,6 @@ int ut_check_console_dump(struct unit_test_state *uts, int total_bytes); } \ } -/* - * Assert that two string expressions are equal, up to length of the - * first - */ -#define ut_asserteq_strn(expr1, expr2) { \ - const char *_val1 = (expr1), *_val2 = (expr2); \ - int _len = strlen(_val1); \ - \ - if (memcmp(_val1, _val2, _len)) { \ - ut_failf(uts, __FILE__, __LINE__, __func__, \ - #expr1 " = " #expr2, \ - "Expected \"%.*s\", got \"%.*s\"", \ - _len, _val1, _len, _val2); \ - return CMD_RET_FAILURE; \ - } \ -} - /* Assert that two memory areas are equal */ #define ut_asserteq_mem(expr1, expr2, len) { \ const u8 *_val1 = (u8 *)(expr1), *_val2 = (u8 *)(expr2); \ diff --git a/test/dm/part.c b/test/dm/part.c index 051e901..78dd847 100644 --- a/test/dm/part.c +++ b/test/dm/part.c @@ -11,11 +11,25 @@ #include <dm/test.h> #include <test/ut.h> +static inline int do_test(struct unit_test_state *uts, int expected, + const char *part_str, bool whole) +{ + struct blk_desc *mmc_dev_desc; + struct disk_partition part_info; + + ut_asserteq(expected, + part_get_info_by_dev_and_name_or_num("mmc", part_str, + &mmc_dev_desc, + &part_info, whole)); + return 0; +} + static int dm_test_part(struct unit_test_state *uts) { + char *oldbootdevice; char str_disk_guid[UUID_STR_LEN + 1]; + int ret; struct blk_desc *mmc_dev_desc; - struct disk_partition part_info; struct disk_partition parts[2] = { { .start = 48, /* GPT data takes up the first 34 blocks or so */ @@ -38,16 +52,22 @@ static int dm_test_part(struct unit_test_state *uts) ut_assertok(gpt_restore(mmc_dev_desc, str_disk_guid, parts, ARRAY_SIZE(parts))); -#define test(expected, part_str, whole) \ - ut_asserteq(expected, \ - part_get_info_by_dev_and_name_or_num("mmc", part_str, \ - &mmc_dev_desc, \ - &part_info, whole)) + oldbootdevice = env_get("bootdevice"); +#define test(expected, part_str, whole) do { \ + ret = do_test(uts, expected, part_str, whole); \ + if (ret) \ + goto out; \ +} while (0) + + env_set("bootdevice", NULL); + test(-ENODEV, NULL, true); test(-ENODEV, "", true); env_set("bootdevice", "0"); + test(0, NULL, true); test(0, "", true); env_set("bootdevice", "1"); + test(1, NULL, false); test(1, "", false); test(1, "-", false); env_set("bootdevice", ""); @@ -70,7 +90,10 @@ static int dm_test_part(struct unit_test_state *uts) test(-EINVAL, "1#bogus", false); test(1, "1#test1", false); test(2, "1#test2", false); + ret = 0; - return 0; +out: + env_set("bootdevice", oldbootdevice); + return ret; } DM_TEST(dm_test_part, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT); diff --git a/test/py/tests/test_fs/conftest.py b/test/py/tests/test_fs/conftest.py index 50af9ef..410a675 100644 --- a/test/py/tests/test_fs/conftest.py +++ b/test/py/tests/test_fs/conftest.py @@ -278,14 +278,19 @@ def fs_obj_basic(request, u_boot_config): check_call('mkdir -p %s' % mount_dir, shell=True) except CalledProcessError as err: pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - finally: call('rm -f %s' % fs_img, shell=True) + return try: # Mount the image so we can populate it. mount_fs(fs_type, fs_img, mount_dir) + except CalledProcessError as err: + pytest.skip('Mounting to folder failed for filesystem: ' + fs_type + '. {}'.format(err)) + call('rmdir %s' % mount_dir, shell=True) + call('rm -f %s' % fs_img, shell=True) + return + try: # Create a subdirectory. check_call('mkdir %s/SUBDIR' % mount_dir, shell=True) @@ -348,11 +353,12 @@ def fs_obj_basic(request, u_boot_config): except CalledProcessError as err: pytest.skip('Setup failed for filesystem: ' + fs_type + '. {}'.format(err)) + umount_fs(mount_dir) return else: + umount_fs(mount_dir) yield [fs_ubtype, fs_img, md5val] finally: - umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) call('rm -f %s' % fs_img, shell=True) @@ -394,14 +400,19 @@ def fs_obj_ext(request, u_boot_config): check_call('mkdir -p %s' % mount_dir, shell=True) except CalledProcessError as err: pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - finally: call('rm -f %s' % fs_img, shell=True) + return try: # Mount the image so we can populate it. mount_fs(fs_type, fs_img, mount_dir) + except CalledProcessError as err: + pytest.skip('Mounting to folder failed for filesystem: ' + fs_type + '. {}'.format(err)) + call('rmdir %s' % mount_dir, shell=True) + call('rm -f %s' % fs_img, shell=True) + return + try: # Create a test directory check_call('mkdir %s/dir1' % mount_dir, shell=True) @@ -443,11 +454,12 @@ def fs_obj_ext(request, u_boot_config): check_call('rm %s' % tmp_file, shell=True) except CalledProcessError: pytest.skip('Setup failed for filesystem: ' + fs_type) + umount_fs(mount_dir) return else: + umount_fs(mount_dir) yield [fs_ubtype, fs_img, md5val] finally: - umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) call('rm -f %s' % fs_img, shell=True) @@ -517,14 +529,19 @@ def fs_obj_unlink(request, u_boot_config): check_call('mkdir -p %s' % mount_dir, shell=True) except CalledProcessError as err: pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - finally: call('rm -f %s' % fs_img, shell=True) + return try: # Mount the image so we can populate it. mount_fs(fs_type, fs_img, mount_dir) + except CalledProcessError as err: + pytest.skip('Mounting to folder failed for filesystem: ' + fs_type + '. {}'.format(err)) + call('rmdir %s' % mount_dir, shell=True) + call('rm -f %s' % fs_img, shell=True) + return + try: # Test Case 1 & 3 check_call('mkdir %s/dir1' % mount_dir, shell=True) check_call('dd if=/dev/urandom of=%s/dir1/file1 bs=1K count=1' @@ -548,11 +565,12 @@ def fs_obj_unlink(request, u_boot_config): except CalledProcessError: pytest.skip('Setup failed for filesystem: ' + fs_type) + umount_fs(mount_dir) return else: + umount_fs(mount_dir) yield [fs_ubtype, fs_img] finally: - umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) call('rm -f %s' % fs_img, shell=True) @@ -594,14 +612,19 @@ def fs_obj_symlink(request, u_boot_config): check_call('mkdir -p %s' % mount_dir, shell=True) except CalledProcessError as err: pytest.skip('Preparing mount folder failed for filesystem: ' + fs_type + '. {}'.format(err)) - return - finally: call('rm -f %s' % fs_img, shell=True) + return try: # Mount the image so we can populate it. mount_fs(fs_type, fs_img, mount_dir) + except CalledProcessError as err: + pytest.skip('Mounting to folder failed for filesystem: ' + fs_type + '. {}'.format(err)) + call('rmdir %s' % mount_dir, shell=True) + call('rm -f %s' % fs_img, shell=True) + return + try: # Create a subdirectory. check_call('mkdir %s/SUBDIR' % mount_dir, shell=True) @@ -625,10 +648,11 @@ def fs_obj_symlink(request, u_boot_config): except CalledProcessError: pytest.skip('Setup failed for filesystem: ' + fs_type) + umount_fs(mount_dir) return else: + umount_fs(mount_dir) yield [fs_ubtype, fs_img, md5val] finally: - umount_fs(mount_dir) call('rmdir %s' % mount_dir, shell=True) call('rm -f %s' % fs_img, shell=True) |