
On Mon, 05 Jan 2015 12:55:46 -0700 Stephen Warren swarren@wwwdotorg.org wrote:
On 12/28/2014 03:09 AM, Ian Campbell wrote:
On Mon, 2014-12-22 at 13:46 -0700, Stephen Warren wrote:
[...]
+The U-Boot "syslinux" and "pxe boot" commands require a number of environment +variables be set. Default values for these variables are often hard-coded into +CONFIG_EXTRA_ENV_SETTINGS in the board's U-Boot configuration file, so that +the user doesn't have to configure them. + +fdt_addr:
- Optional. If specified a dtb to boot the system must be
available at the
- given address.
+fdt_addr_r:
- Mandatory.
Isn't this one only mandatory if ${fdt_addr} is not given?
Yes. I guess it's mandatory for at least one of fdt_addr or fdt_addr_r to be set, according to common/cmd_pxe.c:
fdt_addr_r is actually mandatory unless you do not support device tree at all, which is not expected at all anymore. The reason being that the user/distro can override the vendor supplied dtb for whatever reason, by supplying a fdt/dtb fdtdir/dtbdir entry in extlinux.conf in the past at times on calxeda hardware we had to override the dtb to work with newer kernels until we could update the systems firmware.
* fdt usage is optional: * It handles the following scenarios. All scenarios are
exclusive * * Scenario 1: If fdt_addr_r specified and "fdt" label is defined in * pxe file, retrieve fdt blob from server. Pass fdt_addr_r to bootm, * and adjust argc appropriately. * * Scenario 2: If there is an fdt_addr specified, pass it along to * bootm, and adjust argc appropriately. * * Scenario 3: fdt blob is not available.
So, I'll need to reword that a little to make that clear.
going forward Scenario 3 is not a supportable option. board files are being removed from the kernel and dtb files are needed to boot machines. at least for Fedora we do not support any systems that do not support devicetree. so while the code in cmd_pxe.c is written for it to be optional it is not. having fdt_addr_r does not force the use of a dtb as it requires the config to specify it, so you could boot a legacy kernel just fine by omitting the definition in the config file.
Dennis