[Skiboot] [PATCH 2/2] FSP/ELOG: Fix elog timeout issue
Vasant Hegde
hegdevasant at linux.vnet.ibm.com
Fri Aug 5 00:19:17 AEST 2016
On 07/02/2016 09:08 PM, Vasant Hegde wrote:
> Presently we set timeout value as soon as we add elog to queue. If
> we have multiple elogs to write, it doesn't consider queue wait time.
>
> Instead set timeout value when we are actually sending elog to FSP.
Stewart,
Looks like these two patches are not yet merged. Can you look into this one ?
-Vasant
>
> Signed-off-by: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
> ---
> 0 files changed
>
> diff --git a/hw/fsp/fsp-elog-write.c b/hw/fsp/fsp-elog-write.c
> index d4edc50..175b547 100644
> --- a/hw/fsp/fsp-elog-write.c
> +++ b/hw/fsp/fsp-elog-write.c
> @@ -272,6 +272,11 @@ void opal_resend_pending_logs(void)
> opal_commit_elog_in_host();
> }
>
> +static inline u64 get_elog_timeout(void)
> +{
> + return (mftb() + secs_to_tb(ERRORLOG_TIMEOUT_INTERVAL));
> +}
> +
> static int opal_send_elog_to_fsp(void)
> {
> struct errorlog *head;
> @@ -285,6 +290,9 @@ static int opal_send_elog_to_fsp(void)
> if (!list_empty(&elog_write_to_fsp_pending)) {
> head = list_top(&elog_write_to_fsp_pending,
> struct errorlog, link);
> + /* Error needs to be committed, update the time out value */
> + head->elog_timeout = get_elog_timeout();
> +
> elog_plid_fsp_commit = head->plid;
> head->log_size = create_pel_log(head,
> (char *)elog_write_to_fsp_buffer,
> @@ -304,6 +312,10 @@ static int opal_push_logs_sync_to_fsp(struct errorlog *buf)
> int rc = OPAL_SUCCESS;
>
> lock(&elog_panic_write_lock);
> +
> + /* Error needs to be committed, update the time out value */
> + buf->elog_timeout = get_elog_timeout();
> +
> opal_elog_size = create_pel_log(buf,
> (char *)elog_panic_write_buffer,
> ELOG_PANIC_WRITE_BUFFER_SIZE);
> @@ -334,18 +346,10 @@ static int opal_push_logs_sync_to_fsp(struct errorlog *buf)
> return rc;
> }
>
> -static inline u64 get_elog_timeout(void)
> -{
> - return (mftb() + secs_to_tb(ERRORLOG_TIMEOUT_INTERVAL));
> -}
> -
> int elog_fsp_commit(struct errorlog *buf)
> {
> int rc = OPAL_SUCCESS;
>
> - /* Error needs to be committed, update the time out value */
> - buf->elog_timeout = get_elog_timeout();
> -
> if (buf->event_severity == OPAL_ERROR_PANIC) {
> rc = opal_push_logs_sync_to_fsp(buf);
> return rc;
>
> _______________________________________________
> Skiboot mailing list
> Skiboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot
>
More information about the Skiboot
mailing list