>And how does that handle the case where we're halfway through a pstore >access when the NMI arrives? ERST, at least, has a complex state >machine. You can't guarantee what starting one transaction without >completing one that was in process will do. As for ERST, write access is protected by raw_spin_trylock_irqsave(&erst_lock). Are there anything I'm missing? Seiji >-----Original Message----- >From: Matthew Garrett [mailto:mjg at redhat.com] >Sent: Tuesday, July 19, 2011 2:52 PM >To: Seiji Aguchi >Cc: kexec at lists.infradead.org; linux-kernel at vger.kernel.org; linux-mtd at lists.infradead.org; Eric W. Biederman; Vivek >Goyal; KOSAKI Motohiro; Americo Wang; tony.luck at intel.com; Andrew Morton; Jarod Wilson; hpa at zytor.com; dzickus at redhat.com; >dle-develop at lists.sourceforge.net; Satoru Moriya >Subject: Re: [RFC][PATCH -mmotm 1/4] Add static function calls of pstore to kexec path > >On Tue, Jul 19, 2011 at 02:48:22PM -0400, Seiji Aguchi wrote: >> >How is this safe? What happens if there's a pstore access in process >> >when you hit this codepath? >> >> This will never happen because pstore_kmsg_dump_in_interrupt() is called after machine_crash_shutdown(). >> >> Panicked cpu sends NMI to all other cpus in machine_crash_shutdown() and they stop. > >And how does that handle the case where we're halfway through a pstore >access when the NMI arrives? ERST, at least, has a complex state >machine. You can't guarantee what starting one transaction without >completing one that was in process will do. > >-- >Matthew Garrett | mjg59 at srcf.ucam.org