提交 a0ecfa56 编写于 作者: T Tom Rini

Merge branch '2021-05-26-assorted-bugfixes'

......@@ -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"
......
......@@ -4,6 +4,7 @@
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*/
#include <common.h>
#include <init.h>
#include <asm/global_data.h>
......
......@@ -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
......
......@@ -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;
......
......@@ -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);
......
......@@ -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;
......
......@@ -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;
......
......@@ -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); \
......
......@@ -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);
......@@ -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)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册