From: Peter Zijlstra <peterz@infradead.org>
To: "河合英宏 / KAWAI,HIDEHIRO" <hidehiro.kawai.ez@hitachi.com>
Cc: "x86@kernel.org" <x86@kernel.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Michal Hocko" <mhocko@kernel.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Eric W. Biederman" <ebiederm@xmission.com>,
"H. Peter Anvin" <hpa@zytor.com>,
"平松雅巳 / HIRAMATU,MASAMI" <masami.hiramatsu.pt@hitachi.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Ingo Molnar" <mingo@kernel.org>,
"Vivek Goyal" <vgoyal@redhat.com>
Subject: Re: [V3 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly
Date: Tue, 25 Aug 2015 16:52:58 +0200 [thread overview]
Message-ID: <20150825145258.GS16853@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <04EAB7311EE43145B2D3536183D1A8445493C868@GSjpTKYDCembx31.service.hitachi.net>
On Sat, Aug 22, 2015 at 02:35:24AM +0000, 河合英宏 / KAWAI,HIDEHIRO wrote:
> > From: Peter Zijlstra [mailto:peterz@infradead.org]
> >
> > On Thu, Aug 06, 2015 at 02:45:43PM +0900, Hidehiro Kawai wrote:
> > > void crash_kexec(struct pt_regs *regs)
> > > {
> > > + int old_cpu, this_cpu;
> > > +
> > > + /*
> > > + * `old_cpu == -1' means we are the first comer and crash_kexec()
> > > + * was called without entering panic().
> > > + * `old_cpu == this_cpu' means crash_kexec() was called from panic().
> > > + */
> > > + this_cpu = raw_smp_processor_id();
> > > + old_cpu = atomic_cmpxchg(&panic_cpu, -1, this_cpu);
> > > + if (old_cpu != -1 && old_cpu != this_cpu)
> > > + return;
> >
> > This allows recursive calling of crash_kexec(), the Changelog did not
> > mention that. Is this really required?
>
> What part are you arguing? Recursive call of crash_kexec() doesn't
> happen. In the first place, one of the purpose of this patch is
> to prevent a recursive call of crash_kexec() in the following case
> as I stated in the description:
>
> CPU 0:
> oops_end()
> crash_kexec()
> mutex_trylock() // acquired
> <NMI>
> io_check_error()
> panic()
> crash_kexec()
> mutex_trylock() // failed to acquire
> infinite loop
>
Yes, but what to we want to do there? It seems to me that is wrong, we
do not want to let a recursive crash_kexec() proceed.
Whereas the condition you created explicitly allows this recursion by
virtue of the 'old_cpu != this_cpu' check.
You changelog does not explain why you want a recursive crash_kexec().
> Also, the logic doesn't change form V1 (although the implementation
> changed), so I didn't add changelogs any more.
I cannot remember V1, nor can any prior patch be relevant.
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: "河合英宏 / KAWAI,HIDEHIRO" <hidehiro.kawai.ez@hitachi.com>
Cc: "Jonathan Corbet" <corbet@lwn.net>,
"Ingo Molnar" <mingo@kernel.org>,
"Eric W. Biederman" <ebiederm@xmission.com>,
"H. Peter Anvin" <hpa@zytor.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Vivek Goyal" <vgoyal@redhat.com>,
"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
"x86@kernel.org" <x86@kernel.org>,
"kexec@lists.infradead.org" <kexec@lists.infradead.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Michal Hocko" <mhocko@kernel.org>,
"平松雅巳 / HIRAMATU,MASAMI" <masami.hiramatsu.pt@hitachi.com>
Subject: Re: [V3 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly
Date: Tue, 25 Aug 2015 16:52:58 +0200 [thread overview]
Message-ID: <20150825145258.GS16853@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <04EAB7311EE43145B2D3536183D1A8445493C868@GSjpTKYDCembx31.service.hitachi.net>
On Sat, Aug 22, 2015 at 02:35:24AM +0000, 河合英宏 / KAWAI,HIDEHIRO wrote:
> > From: Peter Zijlstra [mailto:peterz@infradead.org]
> >
> > On Thu, Aug 06, 2015 at 02:45:43PM +0900, Hidehiro Kawai wrote:
> > > void crash_kexec(struct pt_regs *regs)
> > > {
> > > + int old_cpu, this_cpu;
> > > +
> > > + /*
> > > + * `old_cpu == -1' means we are the first comer and crash_kexec()
> > > + * was called without entering panic().
> > > + * `old_cpu == this_cpu' means crash_kexec() was called from panic().
> > > + */
> > > + this_cpu = raw_smp_processor_id();
> > > + old_cpu = atomic_cmpxchg(&panic_cpu, -1, this_cpu);
> > > + if (old_cpu != -1 && old_cpu != this_cpu)
> > > + return;
> >
> > This allows recursive calling of crash_kexec(), the Changelog did not
> > mention that. Is this really required?
>
> What part are you arguing? Recursive call of crash_kexec() doesn't
> happen. In the first place, one of the purpose of this patch is
> to prevent a recursive call of crash_kexec() in the following case
> as I stated in the description:
>
> CPU 0:
> oops_end()
> crash_kexec()
> mutex_trylock() // acquired
> <NMI>
> io_check_error()
> panic()
> crash_kexec()
> mutex_trylock() // failed to acquire
> infinite loop
>
Yes, but what to we want to do there? It seems to me that is wrong, we
do not want to let a recursive crash_kexec() proceed.
Whereas the condition you created explicitly allows this recursion by
virtue of the 'old_cpu != this_cpu' check.
You changelog does not explain why you want a recursive crash_kexec().
> Also, the logic doesn't change form V1 (although the implementation
> changed), so I didn't add changelogs any more.
I cannot remember V1, nor can any prior patch be relevant.
next prev parent reply other threads:[~2015-08-25 14:52 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-06 5:45 [V3 PATCH 0/4] Fix race issues among panic, NMI and crash_kexec Hidehiro Kawai
2015-08-06 5:45 ` Hidehiro Kawai
2015-08-06 5:45 ` [V3 PATCH 4/4] x86/apic: Introduce noextnmi boot option Hidehiro Kawai
2015-08-06 5:45 ` Hidehiro Kawai
2015-08-06 5:45 ` [V3 PATCH 1/4] panic/x86: Fix re-entrance problem due to panic on NMI Hidehiro Kawai
2015-08-06 5:45 ` Hidehiro Kawai
2015-08-20 23:45 ` Peter Zijlstra
2015-08-20 23:45 ` Peter Zijlstra
2015-08-22 0:46 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-22 0:46 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-06 5:45 ` [V3 PATCH 2/4] panic/x86: Allow cpus to save registers even if they are looping in NMI context Hidehiro Kawai
2015-08-06 5:45 ` Hidehiro Kawai
2015-08-20 23:18 ` Peter Zijlstra
2015-08-20 23:18 ` Peter Zijlstra
2015-08-22 1:43 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-22 1:43 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-06 5:45 ` [V3 PATCH 3/4] kexec: Fix race between panic() and crash_kexec() called directly Hidehiro Kawai
2015-08-06 5:45 ` Hidehiro Kawai
2015-08-20 23:08 ` Peter Zijlstra
2015-08-20 23:08 ` Peter Zijlstra
2015-08-22 2:35 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-22 2:35 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-25 14:52 ` Peter Zijlstra [this message]
2015-08-25 14:52 ` Peter Zijlstra
2015-08-26 3:11 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-26 3:11 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-31 8:53 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-31 8:53 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-31 9:07 ` Peter Zijlstra
2015-08-31 9:07 ` Peter Zijlstra
2015-08-31 9:57 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-31 9:57 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-07 14:38 ` [V3 PATCH 0/4] Fix race issues among panic, NMI and crash_kexec Michal Hocko
2015-08-07 14:38 ` Michal Hocko
2015-08-20 23:17 ` Peter Zijlstra
2015-08-20 23:17 ` Peter Zijlstra
2015-08-22 0:41 ` 河合英宏 / KAWAI,HIDEHIRO
2015-08-22 0:41 ` 河合英宏 / KAWAI,HIDEHIRO
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=20150825145258.GS16853@twins.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=akpm@linux-foundation.org \
--cc=corbet@lwn.net \
--cc=ebiederm@xmission.com \
--cc=hidehiro.kawai.ez@hitachi.com \
--cc=hpa@zytor.com \
--cc=kexec@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mhocko@kernel.org \
--cc=mingo@kernel.org \
--cc=tglx@linutronix.de \
--cc=vgoyal@redhat.com \
--cc=x86@kernel.org \
/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.