Merge branch 'linus' into x86/xen
authorIngo Molnar <mingo@elte.hu>
Sun, 12 Oct 2008 10:35:23 +0000 (12:35 +0200)
committerIngo Molnar <mingo@elte.hu>
Sun, 12 Oct 2008 10:37:32 +0000 (12:37 +0200)
Conflicts:
arch/x86/kernel/cpu/common.c
arch/x86/kernel/process_64.c
arch/x86/xen/enlighten.c

17 files changed:
1  2 
arch/x86/kernel/Makefile
arch/x86/kernel/cpu/common.c
arch/x86/kernel/ldt.c
arch/x86/kernel/paravirt.c
arch/x86/kernel/process_32.c
arch/x86/kernel/process_64.c
arch/x86/kernel/smpboot.c
arch/x86/mm/fault.c
arch/x86/xen/enlighten.c
drivers/block/xen-blkfront.c
include/asm-x86/desc.h
include/asm-x86/paravirt.h
include/asm-x86/smp.h
include/asm-x86/spinlock.h
include/asm-x86/tlbflush.h
include/asm-x86/xen/hypervisor.h
include/linux/sched.h

Simple merge
@@@ -723,8 -1105,32 +1105,21 @@@ void __cpuinit cpu_init(void
        /*
         * Force FPU initialization:
         */
-       current_thread_info()->status = 0;
+       if (cpu_has_xsave)
+               current_thread_info()->status = TS_XSAVE;
+       else
+               current_thread_info()->status = 0;
        clear_used_math();
        mxcsr_feature_mask_init();
+       /*
+        * Boot processor to setup the FP and extended state context info.
+        */
+       if (!smp_processor_id())
+               init_thread_xstate();
+       xsave_init();
  }
  
 -#ifdef CONFIG_HOTPLUG_CPU
 -void __cpuinit cpu_uninit(void)
 -{
 -      int cpu = raw_smp_processor_id();
 -      cpu_clear(cpu, cpu_initialized);
 -
 -      /* lazy TLB state */
 -      per_cpu(cpu_tlbstate, cpu).state = 0;
 -      per_cpu(cpu_tlbstate, cpu).active_mm = &init_mm;
 -}
 -#endif
+ #endif
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -1228,10 -1273,38 +1260,8 @@@ static const struct pv_cpu_ops xen_cpu_
        },
  };
  
 -static void __init __xen_init_IRQ(void)
 -{
 -#ifdef CONFIG_X86_64
 -      int i;
 -
 -      /* Create identity vector->irq map */
 -      for(i = 0; i < NR_VECTORS; i++) {
 -              int cpu;
 -
 -              for_each_possible_cpu(cpu)
 -                      per_cpu(vector_irq, cpu)[i] = i;
 -      }
 -#endif        /* CONFIG_X86_64 */
 -
 -      xen_init_IRQ();
 -}
 -
 -static const struct pv_irq_ops xen_irq_ops __initdata = {
 -      .init_IRQ = __xen_init_IRQ,
 -      .save_fl = xen_save_fl,
 -      .restore_fl = xen_restore_fl,
 -      .irq_disable = xen_irq_disable,
 -      .irq_enable = xen_irq_enable,
 -      .safe_halt = xen_safe_halt,
 -      .halt = xen_halt,
 -#ifdef CONFIG_X86_64
 -      .adjust_exception_frame = xen_adjust_exception_frame,
 -#endif
 -};
 -
  static const struct pv_apic_ops xen_apic_ops __initdata = {
  #ifdef CONFIG_X86_LOCAL_APIC
-       .apic_write = xen_apic_write,
-       .apic_read = xen_apic_read,
        .setup_boot_clock = paravirt_nop,
        .setup_secondary_clock = paravirt_nop,
        .startup_ipi_hook = paravirt_nop,
@@@ -1598,8 -1706,14 +1628,15 @@@ asmlinkage void __init xen_start_kernel
        pv_apic_ops = xen_apic_ops;
        pv_mmu_ops = xen_mmu_ops;
  
 +      xen_init_irq_ops();
 +
+ #ifdef CONFIG_X86_LOCAL_APIC
+       /*
+        * set up the basic apic ops.
+        */
+       apic_ops = &xen_basic_apic_ops;
+ #endif
        if (xen_feature(XENFEAT_mmu_pt_update_preserve_ad)) {
                pv_mmu_ops.ptep_modify_prot_start = xen_ptep_modify_prot_start;
                pv_mmu_ops.ptep_modify_prot_commit = xen_ptep_modify_prot_commit;
Simple merge
Simple merge
Simple merge
@@@ -222,5 -205,9 +227,5 @@@ static inline int hard_smp_processor_id
  
  #endif /* CONFIG_X86_LOCAL_APIC */
  
 -#ifdef CONFIG_HOTPLUG_CPU
 -extern void cpu_uninit(void);
 -#endif
 -
  #endif /* __ASSEMBLY__ */
- #endif
+ #endif /* ASM_X86__SMP_H */
Simple merge
Simple merge
@@@ -66,17 -67,6 +66,17 @@@ u64 jiffies_to_st(unsigned long jiffies
  #define MULTI_UVMFLAGS_INDEX 3
  #define MULTI_UVMDOMID_INDEX 4
  
 -#define is_running_on_xen()   (xen_start_info ? 1 : 0)
 +enum xen_domain_type {
 +      XEN_NATIVE,
 +      XEN_PV_DOMAIN,
 +      XEN_HVM_DOMAIN,
 +};
 +
 +extern enum xen_domain_type xen_domain_type;
 +
 +#define xen_domain()          (xen_domain_type != XEN_NATIVE)
 +#define xen_pv_domain()               (xen_domain_type == XEN_PV_DOMAIN)
 +#define xen_initial_domain()  (xen_pv_domain() && xen_start_info->flags & SIF_INITDOMAIN)
 +#define xen_hvm_domain()      (xen_domain_type == XEN_HVM_DOMAIN)
  
- #endif /* __HYPERVISOR_H__ */
+ #endif /* ASM_X86__XEN__HYPERVISOR_H */
Simple merge