diff --git a/docs/misc/efi.pandoc b/docs/misc/efi.pandoc index abafb34527..71fdc316b6 100644 --- a/docs/misc/efi.pandoc +++ b/docs/misc/efi.pandoc @@ -249,6 +249,10 @@ UEFI stub for module loading. When adding DomU modules to device tree, also add the property xen,uefi-cfg-load under chosen for Xen to load the Xen config file. Otherwise, Xen will skip the config file and rely on device tree alone. +When using the Xen configuration file in conjunction with the device tree, you +can specify the Xen boot arguments in the configuration file with the "options=" +keyword or in the device tree with the "xen,xen-bootargs" property, but be +aware that the Xen configuration file value has a precedence over the DT value. Example 1 of how to boot a true dom0less configuration: diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h index 4fb345f225..ae8627134e 100644 --- a/xen/arch/arm/efi/efi-boot.h +++ b/xen/arch/arm/efi/efi-boot.h @@ -503,11 +503,26 @@ static void __init efi_arch_handle_cmdline(CHAR16 *image_name, if ( cfgfile_options ) { + PrintMessage(L"Using bootargs from Xen configuration file."); prop_len += snprintf(buf + prop_len, EFI_PAGE_SIZE - prop_len, " %s", cfgfile_options); if ( prop_len >= EFI_PAGE_SIZE ) blexit(L"FDT string overflow"); } + else + { + /* Get xen,xen-bootargs in /chosen if it is specified */ + const char *dt_bootargs_prop = fdt_getprop(fdt, chosen, + "xen,xen-bootargs", NULL); + if ( dt_bootargs_prop ) + { + PrintMessage(L"Using bootargs from device tree."); + prop_len += snprintf(buf + prop_len, EFI_PAGE_SIZE - prop_len, + " %s", dt_bootargs_prop); + if ( prop_len >= EFI_PAGE_SIZE ) + blexit(L"FDT string overflow"); + } + } if ( cmdline_options ) {