]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
manual merge of x86/asm
authorIngo Molnar <mingo@kernel.org>
Tue, 7 Apr 2015 14:07:08 +0000 (16:07 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 7 Apr 2015 14:07:08 +0000 (16:07 +0200)
Signed-off-by: Ingo Molnar <mingo@kernel.org>
13 files changed:
1  2 
arch/x86/include/asm/apic.h
arch/x86/include/asm/cpufeature.h
arch/x86/include/asm/processor.h
arch/x86/include/asm/smp.h
arch/x86/kernel/cpu/common.c
arch/x86/kernel/cpu/perf_event.c
arch/x86/kernel/entry_64.S
arch/x86/kernel/kgdb.c
arch/x86/kernel/kprobes/core.c
arch/x86/kernel/process.c
arch/x86/kernel/smpboot.c
arch/x86/kernel/traps.c
arch/x86/xen/smp.c

Simple merge
Simple merge
Simple merge
index a5cb4f6e9492513124aea273d4527a79a6b6a755,81d02fc7dafa521e665adf7dce8f657d0036d391..17a8dced12daef5c9fcc5351c165994225295372
@@@ -153,9 -153,10 +153,10 @@@ void cpu_disable_common(void)
  void native_smp_prepare_boot_cpu(void);
  void native_smp_prepare_cpus(unsigned int max_cpus);
  void native_smp_cpus_done(unsigned int max_cpus);
+ void common_cpu_up(unsigned int cpunum, struct task_struct *tidle);
  int native_cpu_up(unsigned int cpunum, struct task_struct *tidle);
  int native_cpu_disable(void);
 +int common_cpu_die(unsigned int cpu);
  void native_cpu_die(unsigned int cpu);
  void native_play_dead(void);
  void play_dead_common(void);
Simple merge
Simple merge
index f0095a76c18211813d711bfa52b82c916190f42d,f4270ff73f2ab748e0c3dfd14c5f8d76dd830ca2..65485b3baa5983cede890b33678f5d2574fdc48f
@@@ -792,28 -699,14 +699,28 @@@ retint_swapgs:          /* return to user-spac
        shr $__VIRTUAL_MASK_SHIFT, %rcx
        jnz opportunistic_sysret_failed
  
-       cmpq $__USER_CS,(CS-R11)(%rsp)          /* CS must match SYSRET */
+       cmpq $__USER_CS,CS(%rsp)        /* CS must match SYSRET */
        jne opportunistic_sysret_failed
  
-       movq (R11-ARGOFFSET)(%rsp), %r11
-       cmpq %r11,(EFLAGS-ARGOFFSET)(%rsp)      /* R11 == RFLAGS */
+       movq R11(%rsp),%r11
+       cmpq %r11,EFLAGS(%rsp)          /* R11 == RFLAGS */
        jne opportunistic_sysret_failed
  
 -      testq $X86_EFLAGS_RF,%r11       /* sysret can't restore RF */
 +      /*
 +       * SYSRET can't restore RF.  SYSRET can restore TF, but unlike IRET,
 +       * restoring TF results in a trap from userspace immediately after
 +       * SYSRET.  This would cause an infinite loop whenever #DB happens
 +       * with register state that satisfies the opportunistic SYSRET
 +       * conditions.  For example, single-stepping this user code:
 +       *
 +       *           movq $stuck_here,%rcx
 +       *           pushfq
 +       *           popq %r11
 +       *   stuck_here:
 +       *
 +       * would never get past 'stuck_here'.
 +       */
 +      testq $(X86_EFLAGS_RF|X86_EFLAGS_TF), %r11
        jnz opportunistic_sysret_failed
  
        /* nothing to check for RSP */
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge