From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Ravi K Nittala <ravi.nittala@in.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] PSeries: Cancel RTAS event scan before firmware flash
Date: Fri, 23 Sep 2011 10:38:12 +1000 [thread overview]
Message-ID: <1316738292.7975.196.camel@pasglop> (raw)
In-Reply-To: <20110921102825.16444.75131.stgit@localhost6.localdomain6>
On Wed, 2011-09-21 at 15:59 +0530, Ravi K Nittala wrote:
> The RTAS firmware flash update is conducted using an RTAS call that is
> serialized by lock_rtas() which uses spin_lock. While the flash is in
> progress, rtasd performs scan for any RTAS events that are generated by
> the system. rtasd keeps scanning for the RTAS events generated on the
> machine. This is performed via workqueue mechanism. The rtas_event_scan()
> also uses an RTAS call to scan the events, eventually trying to acquire
> the spin_lock before issuing therequest.
Better. However:
> diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h
> index 58625d1..b5cbd9f 100644
> --- a/arch/powerpc/include/asm/rtas.h
> +++ b/arch/powerpc/include/asm/rtas.h
> @@ -245,6 +245,10 @@ extern int early_init_dt_scan_rtas(unsigned long node,
>
> extern void pSeries_log_error(char *buf, unsigned int err_type, int fatal);
>
> +#ifdef CONFIG_PPC_RTAS_DAEMON
> +extern bool rtas_cancel_event_scan(void);
> +#endif
The extern as such doesn't need an ifdef... however, you could avoid
this one:
.../...
>
> +#ifdef CONFIG_PPC_RTAS_DAEMON
> + /*
> + * Just before starting the firmware flash, cancel the event scan work
> + * to avoid any soft lockup issues.
> + */
> + rtas_cancel_event_scan();
> +#endif
> +
Here, by having the header contain instead:
#ifdef CONFIG_PPC_RTAS_DAEMON
extern void rtas_cancel_event_scan(void);
#else
static inline void rtas_cancel_event_scan(void) { }
#endif
Also note that I removed the bool, it's not useful since you don't
test it anyway.
> * NOTE: the "first" block must be under 4GB, so we create
> * an entry with no data blocks in the reserved buffer in
> diff --git a/arch/powerpc/kernel/rtasd.c b/arch/powerpc/kernel/rtasd.c
> index 481ef06..e8f03fa 100644
> --- a/arch/powerpc/kernel/rtasd.c
> +++ b/arch/powerpc/kernel/rtasd.c
> @@ -472,6 +472,12 @@ static void start_event_scan(void)
> &event_scan_work, event_scan_delay);
> }
>
> +/* Cancel the rtas event scan work */
> +bool rtas_cancel_event_scan(void)
> +{
> + return cancel_delayed_work_sync(&event_scan_work);
> +}
Finally, the above is missing an EXPORT_SYMBOL_GPL() since rtas
flash can be a module.
Cheers,
Ben.
> static int __init rtas_init(void)
> {
> struct proc_dir_entry *entry;
next prev parent reply other threads:[~2011-09-23 0:39 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-21 10:29 [PATCH] PSeries: Cancel RTAS event scan before firmware flash Ravi K Nittala
2011-09-23 0:38 ` Benjamin Herrenschmidt [this message]
-- strict thread matches above, loose matches on Subject: below --
2011-10-04 7:49 Ravi K Nittala
2011-10-04 7:54 ` Subrata Modak
2011-07-27 12:09 Ravi K. Nittala
2011-08-08 6:46 ` Suzuki Poulose
2011-08-30 6:03 ` Benjamin Herrenschmidt
2011-08-30 6:17 ` Suzuki Poulose
2011-08-30 6:19 ` Benjamin Herrenschmidt
2011-08-30 6:21 ` Benjamin Herrenschmidt
2011-08-30 6:57 ` Suzuki Poulose
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1316738292.7975.196.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=ravi.nittala@in.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.