All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrei Vagin <avagin@virtuozzo.com>
To: tip-bot for Jacob Shin <tipbot@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Cyrill Gorcunov <gorcunov@openvz.org>
Cc: linux-tip-commits@vger.kernel.org, luto@kernel.org,
	tglx@linutronix.de, mingo@kernel.org, peterz@infradead.org,
	rostedt@goodmis.org, linux-kernel@vger.kernel.org, hpa@zytor.com,
	brgerst@gmail.com, jpoimboe@redhat.com, bp@alien8.de,
	torvalds@linux-foundation.org, dvlasenk@redhat.com
Subject: Re: [tip:x86/apic] x86/idt: Move IST stack based traps to table init
Date: Thu, 31 Aug 2017 23:28:16 -0700	[thread overview]
Message-ID: <20170901062815.GA349@outlook.office365.com> (raw)
In-Reply-To: <tip-90f6225fba0c732f3f5f9f5e265bdefa021ff12d@git.kernel.org>

Hi Thomas,

We run CRIU tests for linux-next and today they detected an issue. I've
bisected this problem and it looks like a problem is in this patch.

[root@fc24 criu]# python ./test/zdtm.py run -t zdtm/static/env00
=== Run 1/1 ================ zdtm/static/env00

========================== Run zdtm/static/env00 in h ==========================
Start test
./env00 --pidfile=env00.pid --outfile=env00.out --envname=ENV_00_TEST
Run criu dump
=[log]=> dump/zdtm/static/env00/36/1/dump.log
------------------------ grep Error ------------------------
(00.004013) Dump private signals of 36
(00.004022) Dump shared signals of 36
(00.004036) Parasite syscall_ip at 0x400000
(00.004097) ** delivering signal 11 si_code=128
(00.004103) Error (compel/src/lib/infect.c:528): Unexpected 36 task interruption, aborting
(00.004118) Error (criu/cr-dump.c:1371): Can't infect (pid: 36) with parasite
(00.004208) Unlock network
(00.004218) Unfreezing tasks into 1
(00.004223) 	Unseizing 36 into 1
(00.004244) Error (criu/cr-dump.c:1807): Dumping FAILED.
------------------------ ERROR OVER ------------------------
################### Test zdtm/static/env00 FAIL at CRIU dump ###################
Send the 9 signal to  36
Wait for zdtm/static/env00(36) to die for 0.100000
##################################### FAIL #####################################

Here is a line in a code where we get this unexpected error:
https://github.com/xemul/criu/blob/criu-dev/compel/src/lib/infect.c#L735

At this moment criu tries to execute the memfd_create syscall in a
context of another task with help of ptrace.

Here is a link to a test job:
https://travis-ci.org/avagin/linux/builds/270623449

Thanks,
Andrei

On Tue, Aug 29, 2017 at 04:18:51AM -0700, tip-bot for Jacob Shin wrote:
> Commit-ID:  90f6225fba0c732f3f5f9f5e265bdefa021ff12d
> Gitweb:     http://git.kernel.org/tip/90f6225fba0c732f3f5f9f5e265bdefa021ff12d
> Author:     Thomas Gleixner <tglx@linutronix.de>
> AuthorDate: Mon, 28 Aug 2017 08:47:52 +0200
> Committer:  Ingo Molnar <mingo@kernel.org>
> CommitDate: Tue, 29 Aug 2017 12:07:27 +0200
> 
> x86/idt: Move IST stack based traps to table init
> 
> Initialize the IST based traps via a table.
> 
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> Cc: Andy Lutomirski <luto@kernel.org>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Brian Gerst <brgerst@gmail.com>
> Cc: Denys Vlasenko <dvlasenk@redhat.com>
> Cc: H. Peter Anvin <hpa@zytor.com>
> Cc: Josh Poimboeuf <jpoimboe@redhat.com>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Link: http://lkml.kernel.org/r/20170828064959.091328949@linutronix.de
> Signed-off-by: Ingo Molnar <mingo@kernel.org>
> ---
>  arch/x86/include/asm/desc.h |  2 ++
>  arch/x86/kernel/idt.c       | 22 ++++++++++++++++++++++
>  arch/x86/kernel/traps.c     |  9 +--------
>  3 files changed, 25 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h
> index 930acd5..e624527 100644
> --- a/arch/x86/include/asm/desc.h
> +++ b/arch/x86/include/asm/desc.h
> @@ -509,9 +509,11 @@ extern void idt_setup_early_traps(void);
>  
>  #ifdef CONFIG_X86_64
>  extern void idt_setup_early_pf(void);
> +extern void idt_setup_ist_traps(void);
>  extern void idt_setup_debugidt_traps(void);
>  #else
>  static inline void idt_setup_early_pf(void) { }
> +static inline void idt_setup_ist_traps(void) { }
>  static inline void idt_setup_debugidt_traps(void) { }
>  #endif
>  
> diff --git a/arch/x86/kernel/idt.c b/arch/x86/kernel/idt.c
> index f5281b8..a6326fd 100644
> --- a/arch/x86/kernel/idt.c
> +++ b/arch/x86/kernel/idt.c
> @@ -92,6 +92,20 @@ struct desc_ptr idt_descr __ro_after_init = {
>  gate_desc debug_idt_table[IDT_ENTRIES] __page_aligned_bss;
>  
>  /*
> + * The exceptions which use Interrupt stacks. They are setup after
> + * cpu_init() when the TSS has been initialized.
> + */
> +static const __initdata struct idt_data ist_idts[] = {
> +	ISTG(X86_TRAP_DB,	debug,		DEBUG_STACK),
> +	ISTG(X86_TRAP_NMI,	nmi,		NMI_STACK),
> +	ISTG(X86_TRAP_BP,	int3,		DEBUG_STACK),
> +	ISTG(X86_TRAP_DF,	double_fault,	DOUBLEFAULT_STACK),
> +#ifdef CONFIG_X86_MCE
> +	ISTG(X86_TRAP_MC,	&machine_check,	MCE_STACK),
> +#endif
> +};
> +
> +/*
>   * Override for the debug_idt. Same as the default, but with interrupt
>   * stack set to DEFAULT_STACK (0). Required for NMI trap handling.
>   */
> @@ -158,6 +172,14 @@ void __init idt_setup_early_pf(void)
>  }
>  
>  /**
> + * idt_setup_ist_traps - Initialize the idt table with traps using IST
> + */
> +void __init idt_setup_ist_traps(void)
> +{
> +	idt_setup_from_table(idt_table, ist_idts, ARRAY_SIZE(ist_idts));
> +}
> +
> +/**
>   * idt_setup_debugidt_traps - Initialize the debug idt table with debug traps
>   */
>  void __init idt_setup_debugidt_traps(void)
> diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
> index 1492bf5..293f5bd 100644
> --- a/arch/x86/kernel/traps.c
> +++ b/arch/x86/kernel/traps.c
> @@ -979,14 +979,7 @@ void __init trap_init(void)
>  	 */
>  	cpu_init();
>  
> -	/*
> -	 * X86_TRAP_DB and X86_TRAP_BP have been set
> -	 * in early_trap_init(). However, ITS works only after
> -	 * cpu_init() loads 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);
> +	idt_setup_ist_traps();
>  
>  	x86_init.irqs.trap_init();
>  

  reply	other threads:[~2017-09-01  6:28 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-28  6:47 [patch V3 00/44] x86: Cleanup IDT code Thomas Gleixner
2017-08-28  6:47 ` [patch V3 01/44] x86/irq: Remove vector_used_by_percpu_irq() Thomas Gleixner
2017-08-29 11:04   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 02/44] x86/irq: Unexport used_vectors Thomas Gleixner
2017-08-29 11:04   ` [tip:x86/apic] x86/irq: Unexport used_vectors[] tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 03/44] x86/irq: Get rid of the first_system_vector bogisity Thomas Gleixner
2017-08-29 11:04   ` [tip:x86/apic] x86/irq: Get rid of the 'first_system_vector' indirection bogosity tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 04/44] x86/irq: Remove duplicated used_vectors definition Thomas Gleixner
2017-08-29 11:05   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 05/44] x86/boot: Move EISA setup to a proper place Thomas Gleixner
2017-08-29 11:05   ` [tip:x86/apic] x86/boot: Move EISA setup to a separate file tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 06/44] x86/tracing: Introduce a static key for exception tracing Thomas Gleixner
2017-08-29 11:06   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 07/44] x86/traps: Simplify pagefault tracing logic Thomas Gleixner
2017-08-29 11:06   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 08/44] x86/apic: Remove the duplicated tracing version of local_timer_interrupt Thomas Gleixner
2017-08-29 11:07   ` [tip:x86/apic] x86/apic: Remove the duplicated tracing version of local_timer_interrupt() tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 09/44] x86/apic: Use this_cpu_ptr in local_timer_interrupt Thomas Gleixner
2017-08-29 11:07   ` [tip:x86/apic] x86/apic: Use this_cpu_ptr() in local_timer_interrupt() tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 10/44] x86/irq: Get rid of duplicated trace_x86_platform_ipi() code Thomas Gleixner
2017-08-29 11:07   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 11/44] x86/apic: Remove the duplicated tracing versions of interrupts Thomas Gleixner
2017-08-29 11:08   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 12/44] x86/irqwork: Get rid of duplicated tracing interrupt code Thomas Gleixner
2017-08-29 11:08   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 13/44] x86/mce: Remove " Thomas Gleixner
2017-08-29 11:08   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 14/44] x86/smp: Remove pointless duplicated " Thomas Gleixner
2017-08-29 11:09   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 15/44] x86/smp: Use static key for reschedule interrupt tracing Thomas Gleixner
2017-08-29 11:09   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 16/44] x86/idt: Remove tracing idt completely Thomas Gleixner
2017-08-29 11:10   ` [tip:x86/apic] x86/idt: Remove the tracing IDT completely tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 17/44] x86/idt: Cleanup the i386 low level entry macros Thomas Gleixner
2017-08-29 11:10   ` [tip:x86/apic] x86/idt: Clean up " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 18/44] x86/tracing: Disentangle pagefault and resched IPI tracing key Thomas Gleixner
2017-08-29 11:10   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 19/44] x86/ipi: Make platform IPI depend on APIC Thomas Gleixner
2017-08-29 11:11   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 20/44] x86/irq_work: Make it " Thomas Gleixner
2017-08-29 11:11   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 21/44] x86/tracing: Build tracepoints only when they are used Thomas Gleixner
2017-08-29 11:12   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 22/44] x86/idt: Unify gate_struct handling for 32/64bit Thomas Gleixner
2017-08-29 11:12   ` [tip:x86/apic] x86/idt: Unify gate_struct handling for 32/64-bit kernels tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 23/44] x86/percpu: Use static initializer for GDT entry Thomas Gleixner
2017-08-29 11:13   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 24/44] x86/fpu: Use bitfield accessors for desc_struct Thomas Gleixner
2017-08-29 11:13   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 25/44] x86: Replace access to desc_struct:a/b fields Thomas Gleixner
2017-08-29 11:13   ` [tip:x86/apic] x86/asm: " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 26/44] x86/gdt: Use bitfields for initialization Thomas Gleixner
2017-08-29 11:14   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 27/44] x86/ldttss: Cleanup 32bit descriptors Thomas Gleixner
2017-08-29 11:14   ` [tip:x86/apic] x86/ldttss: Clean up 32-bit descriptors tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 28/44] x86/idt: Create file for IDT related code Thomas Gleixner
2017-08-29 11:15   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 29/44] x86/idt: Move 32bit idt_descr to C code Thomas Gleixner
2017-08-29 11:15   ` [tip:x86/apic] x86/idt: Move 32-bit " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 30/44] x86/idt: Remove unused set_trap_gate() Thomas Gleixner
2017-08-29 11:16   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 31/44] x86/idt: Consolidate IDT invalidation Thomas Gleixner
2017-08-29 11:16   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 32/44] x86/idt: Move early IDT handler setup to IDT code Thomas Gleixner
2017-08-29 11:16   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 33/44] x86/idt: Move early IDT setup out of 32bit asm Thomas Gleixner
2017-08-29 11:17   ` [tip:x86/apic] x86/idt: Move early IDT setup out of 32-bit asm tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 34/44] x86/idt: Prepare for table based init Thomas Gleixner
2017-08-29 11:17   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 35/44] x86/idt: Switch early trap init to IDT tables Thomas Gleixner
2017-08-29 11:18   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 36/44] x86/idt: Move debug stack init to table based Thomas Gleixner
2017-08-29 11:18   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 37/44] x86/idt: Move ist stack based traps to table init Thomas Gleixner
2017-08-29 11:18   ` [tip:x86/apic] x86/idt: Move IST " tip-bot for Thomas Gleixner
2017-09-01  6:28     ` Andrei Vagin [this message]
2017-09-01  8:26       ` [PATCH] x86/idt: Fix the X86_TRAP_BP gate Ingo Molnar
2017-09-01  8:59         ` Thomas Gleixner
2017-09-01  9:09         ` [tip:x86/apic] " tip-bot for Ingo Molnar
2017-09-01 14:39         ` [PATCH] " Andrei Vagin
2017-08-28  6:47 ` [patch V3 38/44] x86/idt: Move regular trap init to tables Thomas Gleixner
2017-08-29 11:19   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 39/44] x86/idt: Move APIC gate initialization " Thomas Gleixner
2017-08-29 11:19   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 40/44] x86/idt: Move interrupt gate initialization to IDT code Thomas Gleixner
2017-08-29 11:20   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 41/44] x86/idt: Remove unused functions/inlines Thomas Gleixner
2017-08-29 11:20   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 42/44] x86/idt: Deinline setup functions Thomas Gleixner
2017-08-29 11:20   ` [tip:x86/apic] " tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 43/44] x86/idt: Simplify alloc_intr_gate Thomas Gleixner
2017-08-28 14:35   ` KY Srinivasan
2017-08-29 11:21   ` [tip:x86/apic] x86/idt: Simplify alloc_intr_gate() tip-bot for Thomas Gleixner
2017-08-28  6:47 ` [patch V3 44/44] x86/idt: Hide set_intr_gate() Thomas Gleixner
2017-08-29 11:21   ` [tip:x86/apic] " tip-bot for Thomas Gleixner

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=20170901062815.GA349@outlook.office365.com \
    --to=avagin@virtuozzo.com \
    --cc=bp@alien8.de \
    --cc=brgerst@gmail.com \
    --cc=dvlasenk@redhat.com \
    --cc=gorcunov@openvz.org \
    --cc=hpa@zytor.com \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=tipbot@zytor.com \
    --cc=torvalds@linux-foundation.org \
    --subject='Re: [tip:x86/apic] x86/idt: Move IST stack based traps to table init' \
    /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

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.