- Correct my mistake with defaulting to not setting LMB_USE_MAX_REGIONS,
and fix the lmb test to scale with more than 8 regions before setting
the new default to 16 regions. This doesn't strictly fix all issues,
but puts us ahead of where we were.
Sjoerd Simons [Thu, 19 Jan 2023 08:38:17 +0000 (09:38 +0100)]
Bump LMB_MAX_REGIONS default to 16
Since commit 06d514d77c37 ("lmb: consider EFI memory map") the EFI regions
are also pushed into the lmb if EFI_LOADER is enabled (which is by
default on most system). Which can cause the number of entries to go
over the maximum as it's default is only 8.
Specifically i ran into this case on an TI am62 which has an fdt with
4 reserved regions (in practice 3 lmb entries due to adjecent ranges).
As this is likely to impact more devices bump the default max
regions to 16 so there is a bit more slack.
Fixes: 06d514d77c ("lmb: consider EFI memory map") Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1207562 Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com> Signed-off-by: Sjoerd Simons <sjoerd@collabora.com> Signed-off-by: Michal Suchanek <msuchanek@suse.de>
[trini: collect tags from the other equivalent patch]
Tom Rini [Wed, 8 Feb 2023 18:39:18 +0000 (13:39 -0500)]
test: lmb: Rework lib_test_lmb_max_regions test to scale
First, this test depends on CONFIG_LMB_USE_MAX_REGIONS, so add that as a
test before building. Second, instead of using a hard-coded value of 8,
which is the default of CONFIG_LMB_USE_MAX_REGIONS previously, use that
directly and update the comments. The only trick here is that one part
of the test itself also was written with the value of 8 itself in mind.
Rework the size of the lmb region we allocate to scale with the value of
CONFIG_LMB_USE_MAX_REGIONS.
Cc: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Tom Rini [Wed, 8 Feb 2023 15:18:26 +0000 (10:18 -0500)]
Revert "lmb: Default to not-LMB_USE_MAX_REGIONS"
As explained by Philippe Schenker, I was misinterpreting what happened
in the case where we do not set LMB_USE_MAX_REGIONS and so had
re-introduced the problem I was attempting to more widely resolve.
To quote the author:
This series adds source scanning to moveconfig.py so that it can look
for Kconfig options mentioned in the source which do not appear in
Kconfig, and vice versa.
This tool is then used to clean up the unused or obsolete options
mentioned in Makefiles, along with any attached source code.
Simon Glass [Wed, 1 Feb 2023 20:19:12 +0000 (13:19 -0700)]
moveconfig: Add an option to compare Kconfig against source
Sometimes the Makefile rules or source code refers to Kconfig options
which don't exist. Update the moveconfig tool to check this and produce
a series of reports about inconsistencies.
This can then be used to generate patches to correct the problems.
Tom Rini [Tue, 7 Feb 2023 16:42:26 +0000 (11:42 -0500)]
Merge branch '2023-02-07-assorted-updates'
- Default to dynamic LMB allocation, and fix an issue with the EFI one,
assorted TI platform updates, socrates platform updates, switch
qemu-arm to using bootstd, imagetool fixes, macOS host build fixes,
keymile platform upates, spl FPGA load fix, MMC env bugfix, add seama
command, usb bootdev test bugfix.
Linus Walleij [Tue, 31 Jan 2023 23:16:13 +0000 (00:16 +0100)]
cmd: Add a SEAMA image load command
Add a command to load SEAMA (Seattle Image), a NAND flash
on-flash storage format.
This type of flash image is found in some D-Link routers such
as DIR-645, DIR-842, DIR-859, DIR-860L, DIR-885L, DIR890L and
DCH-M225, as well as in WD and NEC routers on the ath79
(MIPS), Broadcom BCM53xx, and RAMIPS platforms.
This U-Boot command will read and decode a SEAMA image from
raw NAND flash on any platform. As it is always using big endian
format for the data decoding is always necessary on platforms
such as ARM.
The command is needed to read a SEAMA-encoded boot image on the
D-Link DIR-890L router for boot from NAND flash in an upcoming
port of U-Boot to the Broadcom Northstar (BCM4709, BCM53xx)
architecture.
A basic test and documentation is added as well. The test must
be run on a target with NAND flash support and at least one
resident SEAMA image in flash.
Ye Li [Tue, 31 Jan 2023 06:41:58 +0000 (14:41 +0800)]
env: mmc: Fix offset issue for env save
Fix the issue in commit 46c9016 ("env: mcc: Drop unnecessary #ifdefs")
If CONFIG_SYS_REDUNDAND_ENVIRONMENT is not defined, the offset value
becomes undetermined, so write env to unexpected offset.
Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Pali Rohár [Sun, 29 Jan 2023 16:44:11 +0000 (17:44 +0100)]
tools: default_image: Accept images with padding
If image file is stored on flash partition then it contains padding, which
is not part of the image itself. Image data size is stored in the image
header. So use image size from the header instead of expecting that total
image file size is size of the header plus size of the image data. This
allows dumpimage to parse image files with padding (e.g. dumped from flash
partition).
Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Simon Glass <sjg@chromium.org>
Pali Rohár [Sun, 29 Jan 2023 16:45:55 +0000 (17:45 +0100)]
tools: imagetool: Skip autodetection of gpimage type
gpimage type requires only that two first 32-bit words of data file are
non-zero. So basically every random data file can be guessed and verified
as gpimage. So completely skip gpimage type from image autodetection code
to prevent lot of false positive results. Data file with gpimage type can
be still verified and parsed by explicitly specifying -T gpimage.
Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Simon Glass <sjg@chromium.org>
Simon Glass [Sat, 28 Jan 2023 22:00:25 +0000 (15:00 -0700)]
qemu: Add a bootmeth for qfw
This supports reading a kernel and ramdisk from qfw, then loading it with
either the booti or bootz commands.
For now this uses the existing booti and bootz commands, rather than
trying to call that functionality directly (e.g. do_bootm_states()). It
does not require the HUSH parser though, which helps a little with size.
Simon Glass [Sat, 28 Jan 2023 22:00:24 +0000 (15:00 -0700)]
qemu: Add a bootdev for qfw
Add a bootdev device for qfw so that it can be used with standard boot.
This simply checks for the correct method and then does the read. Most of
the other logic is handed in a new bootmeth driver.
Simon Glass [Sat, 28 Jan 2023 22:00:22 +0000 (15:00 -0700)]
qemu: Update qfw command to use addresses
This uses casts all over the place. Use the correct type so that these
can be avoided, as is done with other commands. Also simplify a few
conditionals.
Simon Glass [Sat, 28 Jan 2023 22:00:21 +0000 (15:00 -0700)]
bootstd: Add some default filesystems and commands
We need to support a basic set of filesystems for booting to work in most
cases. Add these in via a new option, letting the board disable them
individually (for space reasons) if desired.
This enables the filesystem commands as well as the actual functionality,
even though bootstd is quite happy to use ext4 without the ext4 command.
Further work would be needed to disintangle this and reduce code size.
Add several other options as well, providing sensible defaults.
We cannot enable this by default, since it expands the size of many
boards quite a lot.
Simon Glass [Sat, 28 Jan 2023 22:00:20 +0000 (15:00 -0700)]
bootstd: Correct virtio block-device handling
At present virtio tries to attach QEMU services to a bootdev device, which
cannot work. Add a check for this.
Also use bootdev_setup_sibling_blk() to create the bootdev device, since
it allows the correct name to be used and bootdev_get_sibling_blk() to
work as expected.
The bootdev is not created on sandbox since it does have a real virtio
device and it is not possible to read blocks.
Signed-off-by: Simon Glass <sjg@chromium.org> Fixes: a60f7a3e35b ("bootstd: Add a virtio bootdev") Reported-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Simon Glass [Sat, 28 Jan 2023 22:00:19 +0000 (15:00 -0700)]
bootstd: Probe the block device before use
In some cases the block device is obtained but is not probed, since it
is a sibling of the bootdev. Make sure it is probed, so it can be used
without any trouble.
This fixes a bug with virtio, where the device is accessed before it has
been set up by the virtio uclass.
Signed-off-by: Simon Glass <sjg@chromium.org> Fixes: 201417d700a ("bootstd: Add the bootdev uclass") Reported-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Simon Glass [Sat, 28 Jan 2023 22:00:18 +0000 (15:00 -0700)]
bootstd: Allow enabling BOOTSTD_FULL without needing EXPO
It is sometimes useful to have one without the other, e.g. on a device
without a display, since at present the expo feature requires CONFIG_VIDEO
to be enabled.
Update the Makefile and bootflow command to support this, as well as the
EXPO dependency.