From: Paul Mackerras Date: Thu, 13 Oct 2011 18:01:12 +0000 (+0000) Subject: Save arguments as well as image name for CAS reboot X-Git-Tag: yaboot-1.3.17~11 X-Git-Url: http://git.ozlabs.org/?p=yaboot.git;a=commitdiff_plain;h=52ad93077e5334581d05ade8e55575573b98087e;hp=7822500e80ce7b25925974b63fa525197c68a434 Save arguments as well as image name for CAS reboot We were saving the image name that the user had typed (or had been selected by default) in the "boot-last-label" property, but we were losing any extra arguments that the user had typed after the image name. On a pSeries machine, if the firmware decides to do a reboot at the client-architecture-support call, we were then rebooting to the right image but without any extra arguments that the user typed. This fixes the problem by saving the arguments in boot-last-label, separated from the image name by a space. When we use the value of boot-last-label, we now call word_split to separate it into the image name and arguments again. Signed-off-by: Paul Mackerras Signed-off-by: Tony Breeds --- diff --git a/second/yaboot.c b/second/yaboot.c index b7b9280..1f3f151 100644 --- a/second/yaboot.c +++ b/second/yaboot.c @@ -709,9 +709,10 @@ int get_params(struct boot_param_t* params) if (!imagename) { if (bootoncelabel[0] != 0) imagename = bootoncelabel; - else if (bootlastlabel[0] != 0) - imagename = bootlastlabel; - else + else if (bootlastlabel[0] != 0) { + imagename = bootlastlabel; + word_split(&imagename, ¶ms->args); + } else imagename = cfg_get_default(); } if (imagename) @@ -773,7 +774,13 @@ int get_params(struct boot_param_t* params) imagename = cfg_get_default(); /* write the imagename out so it can be reused on reboot if necessary */ - prom_set_options("boot-last-label", imagename, strlen(imagename)); + strcpy(bootlastlabel, imagename); + if (params->args && params->args[0]) { + strcat(bootlastlabel, " "); + strcat(bootlastlabel, params->args); + } + prom_set_options("boot-last-label", bootlastlabel, + strlen(bootlastlabel) + 1); label = 0; defdevice = boot.dev;