From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Wang Nan <wangnan0@huawei.com>
Cc: mingo@redhat.com, hpa@zytor.com, tglx@linutronix.de,
x86@kernel.org, luto@amacapital.net, oleg@redhat.com,
dave.hansen@linux.intel.com, rostedt@goodmis.org,
linux-kernel@vger.kernel.org, lizefan@huawei.com
Subject: Re: [PATCH] x86, traps: Enable DEBUG_STACK after cpu_init() for TRAP_DB/BP.
Date: Thu, 26 Feb 2015 13:48:40 +0900 [thread overview]
Message-ID: <54EEA5A8.1020402@hitachi.com> (raw)
In-Reply-To: <1424923076-6106-1-git-send-email-wangnan0@huawei.com>
(2015/02/26 12:57), Wang Nan wrote:
> Before this patch early_trap_init() installs DEBUG_STACK for X86_TRAP_BP
> and X86_TRAP_DB. However, DEBUG_STACK doesn't work correctly until
> cpu_init() <-- trap_init().
>
> This patch passes 0 to set_intr_gate_ist() and
> set_system_intr_gate_ist() instead of DEBUG_STACK to let it use same
> stack as kernel, and installs DEBUG_STACK for them in trap_init().
>
> As core runs at ring 0 between early_trap_init() and trap_init(), there
> is no chance to get a bad stack before trap_init().
Thanks for finding the problem on it! :)
Agreed, until initializing DEBUG_STACK, it should not be used.
>
> As NMI is also enabled in trap_init(), we don't need to care about
> is_debug_stack() and related things used in arch/x86/kernel/nmi.c.
Looks good to me, at least its code side. Please fix the comment according
to Steven's suggestion.
And feel free to add my reviewed-by for this.
Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Thank you,
>
> Signed-off-by: Wang Nan <wangnan0@huawei.com>
> ---
> arch/x86/kernel/traps.c | 20 ++++++++++++++++++--
> 1 file changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
> index 9d2073e..a9b8640 100644
> --- a/arch/x86/kernel/traps.c
> +++ b/arch/x86/kernel/traps.c
> @@ -925,9 +925,16 @@ dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
> /* Set of traps needed for early debugging. */
> void __init early_trap_init(void)
> {
> - set_intr_gate_ist(X86_TRAP_DB, &debug, DEBUG_STACK);
> + /*
> + * Don't set ist to DEBUG_STACK as it doesn't work until TSS is
> + * ready in cpu_init() <-- trap_init(). Before trap_init(), CPU
> + * runs at ring 0 so there should be impossible to hit a invalid
> + * stack. Use original stack is enough. DEBUG_STACK will be
> + * equipped after cpu_init() in trap_init().
> + */
> + set_intr_gate_ist(X86_TRAP_DB, &debug, 0);
> /* int3 can be called from all */
> - set_system_intr_gate_ist(X86_TRAP_BP, &int3, DEBUG_STACK);
> + set_system_intr_gate_ist(X86_TRAP_BP, &int3, 0);
> #ifdef CONFIG_X86_32
> set_intr_gate(X86_TRAP_PF, page_fault);
> #endif
> @@ -1005,6 +1012,15 @@ void __init trap_init(void)
> */
> cpu_init();
>
> + /*
> + * X86_TRAP_DB and X86_TRAP_BP have been setup
> + * in early_trap_init(). However, DEBUG_STACK works only after
> + * cpu_init() load TSS. See comments in early_trap_init().
> + */
> + set_intr_gate_ist(X86_TRAP_DB, &debug, DEBUG_STACK);
> + /* int3 can be called from all */
> + set_system_intr_gate_ist(X86_TRAP_BP, &int3, DEBUG_STACK);
> +
> x86_init.irqs.trap_init();
>
> #ifdef CONFIG_X86_64
>
--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Research Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com
prev parent reply other threads:[~2015-02-26 4:48 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-26 3:57 [PATCH] x86, traps: Enable DEBUG_STACK after cpu_init() for TRAP_DB/BP Wang Nan
2015-02-26 4:10 ` Steven Rostedt
2015-02-26 4:48 ` Masami Hiramatsu [this message]
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=54EEA5A8.1020402@hitachi.com \
--to=masami.hiramatsu.pt@hitachi.com \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--cc=luto@amacapital.net \
--cc=mingo@redhat.com \
--cc=oleg@redhat.com \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=wangnan0@huawei.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.