On 3/23/20 8:11 AM, Sughosh Ganu wrote: > Add a efidebug subcommand to initiate a firmware update using the efi > firmware management protocol(fmp) set_image routine. > > The firmware update can be initiated through > > 'efidebug capsule disk-update' > > This would locate the efi capsule file on the efi system partition, > and call the platform's set_image fmp routine to initiate the firmware > update.
Hello Sughosh, why do we need this command? Shouldn't a simple reset do the job? See chapter 8.5.5 "Delivery of Capsules via file on Mass Storage device" of UEFI spec 2.8. What might be of interest is a command to start a capsule from a memory location. This would allow to load capsules from other locations than directory \EFI\UpdateCapsule. Best regards Heinrich > > Signed-off-by: Sughosh Ganu <sughosh.g...@linaro.org> > --- > cmd/efidebug.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/cmd/efidebug.c b/cmd/efidebug.c > index 4a7661d0ac..fd8366dc90 100644 > --- a/cmd/efidebug.c > +++ b/cmd/efidebug.c > @@ -77,6 +77,16 @@ static int do_efi_capsule_update(cmd_tbl_t *cmdtp, int > flag, > return CMD_RET_SUCCESS; > } > > +static int do_efi_capsule_on_disk_update(cmd_tbl_t *cmdtp, int flag, > + int argc, char * const argv[]) > +{ > + efi_status_t ret; > + > + ret = efi_launch_capsules(); > + > + return ret == EFI_SUCCESS ? CMD_RET_SUCCESS : CMD_RET_FAILURE; > +} > + > /** > * do_efi_capsule_show() - show capsule information > * > @@ -205,6 +215,8 @@ static cmd_tbl_t cmd_efidebug_capsule_sub[] = { > "", ""), > U_BOOT_CMD_MKENT(show, CONFIG_SYS_MAXARGS, 1, do_efi_capsule_show, > "", ""), > + U_BOOT_CMD_MKENT(disk-update, 0, 0, do_efi_capsule_on_disk_update, > + "", ""), > U_BOOT_CMD_MKENT(result, CONFIG_SYS_MAXARGS, 1, do_efi_capsule_res, > "", ""), > }; > @@ -1387,6 +1399,8 @@ static char efidebug_help_text[] = > #ifdef CONFIG_EFI_CAPSULE_UPDATE > "efidebug capsule update [-v] <capsule address>\n" > " - process a capsule\n" > + "efidebug capsule disk-update\n" > + " - update a capsule from disk\n" > "efidebug capsule show <capsule address>\n" > " - show capsule information\n" > "efidebug capsule result [<capsule result var>]\n" >