[Skiboot] [PATCH] fast-reboot: disable on FSP code update or unrecoverable HMI

Stewart Smith stewart at linux.vnet.ibm.com
Tue Oct 25 19:25:17 AEDT 2016


Vasant Hegde <hegdevasant at linux.vnet.ibm.com> writes:
> On 10/24/2016 11:58 AM, Stewart Smith wrote:
>> Signed-off-by: Stewart Smith <stewart at linux.vnet.ibm.com>
>> ---
>>   core/fast-reboot.c      | 18 ++++++++++++++++++
>>   core/hmi.c              |  2 ++
>>   hw/fsp/fsp-codeupdate.c |  2 ++
>>   include/skiboot.h       |  1 +
>>   4 files changed, 23 insertions(+)
>>
>
> .../...
>
>> diff --git a/hw/fsp/fsp-codeupdate.c b/hw/fsp/fsp-codeupdate.c
>> index 2263bf36dcc8..ae1c4b6c5a42 100644
>> --- a/hw/fsp/fsp-codeupdate.c
>> +++ b/hw/fsp/fsp-codeupdate.c
>> @@ -1126,6 +1126,8 @@ static int64_t fsp_opal_update_flash(struct opal_sg_list *list)
>>   	struct opal_sg_entry *entry;
>>   	int length, num_entries, result = 0, rc = OPAL_PARAMETER;
>>
>> +	disable_fast_reboot("FSP Code Update");
>
> If kernel passes NULL then we cancel FW update request. I think we should check 
> whether its FW update request or cancel request. May be something like below (it 
> includes reordering of current code). ?
>
>
>
>
> diff --git a/hw/fsp/fsp-codeupdate.c b/hw/fsp/fsp-codeupdate.c
> index 2263bf3..3428869 100644
> --- a/hw/fsp/fsp-codeupdate.c
> +++ b/hw/fsp/fsp-codeupdate.c
> @@ -1126,14 +1126,6 @@ static int64_t fsp_opal_update_flash(struct opal_sg_list 
> *list)
>          struct opal_sg_entry *entry;
>          int length, num_entries, result = 0, rc = OPAL_PARAMETER;
>
> -       /* Ensure that the sg list honors our alignment requirements */
> -       rc = validate_sglist(list);
> -       if (rc) {
> -               log_simple_error(&e_info(OPAL_RC_CU_SG_LIST),
> -                       "CUPD: sglist fails alignment requirements\n");
> -               return rc;
> -       }
> -
>          lock(&flash_lock);
>          if (!list) {    /* Cancel update request */
>                  fsp_flash_term_hook = NULL;
> @@ -1141,6 +1133,17 @@ static int64_t fsp_opal_update_flash(struct opal_sg_list 
> *list)
>                  rc = OPAL_SUCCESS;
>                  goto out;
>          }
> +
> +       disable_fast_reboot("FSP Code Update");
> +
> +       /* Ensure that the sg list honors our alignment requirements */
> +       rc = validate_sglist(list);
> +       if (rc) {
> +               log_simple_error(&e_info(OPAL_RC_CU_SG_LIST),
> +                       "CUPD: sglist fails alignment requirements\n");
> +               goto out;
> +       }
> +
>

Yep, that makes sense.

I went with putting the disable after the check for the cancel
request. I figure that if we've set it up to go but cancelled
it.. perhaps we should be safe and do a full reset.

-- 
Stewart Smith
OPAL Architect, IBM.



More information about the Skiboot mailing list