Merge commit 'origin/master' into for-linus/xen/master
Jeremy Fitzhardinge [Tue, 7 Apr 2009 20:34:16 +0000 (13:34 -0700)]
* commit 'origin/master': (4825 commits)
  Fix build errors due to CONFIG_BRANCH_TRACER=y
  parport: Use the PCI IRQ if offered
  tty: jsm cleanups
  Adjust path to gpio headers
  KGDB_SERIAL_CONSOLE check for module
  Change KCONFIG name
  tty: Blackin CTS/RTS
  Change hardware flow control from poll to interrupt driven
  Add support for the MAX3100 SPI UART.
  lanana: assign a device name and numbering for MAX3100
  serqt: initial clean up pass for tty side
  tty: Use the generic RS485 ioctl on CRIS
  tty: Correct inline types for tty_driver_kref_get()
  splice: fix deadlock in splicing to file
  nilfs2: support nanosecond timestamp
  nilfs2: introduce secondary super block
  nilfs2: simplify handling of active state of segments
  nilfs2: mark minor flag for checkpoint created by internal operation
  nilfs2: clean up sketch file
  nilfs2: super block operations fix endian bug
  ...

Conflicts:
arch/x86/include/asm/thread_info.h
arch/x86/lguest/boot.c
drivers/xen/manage.c

18 files changed:
1  2 
arch/x86/include/asm/paravirt.h
arch/x86/include/asm/pgtable.h
arch/x86/include/asm/thread_info.h
arch/x86/kernel/kvm.c
arch/x86/kernel/paravirt.c
arch/x86/kernel/process_32.c
arch/x86/kernel/process_64.c
arch/x86/kernel/vmi_32.c
arch/x86/lguest/boot.c
arch/x86/mm/highmem_32.c
arch/x86/mm/iomap_32.c
arch/x86/mm/pageattr.c
arch/x86/xen/mmu.c
arch/x86/xen/smp.c
drivers/xen/Kconfig
drivers/xen/cpu_hotplug.c
drivers/xen/manage.c
kernel/sched.c

Simple merge
Simple merge
@@@ -94,7 -94,7 +94,8 @@@ struct thread_info 
  #define TIF_FORCED_TF         24      /* true if TF in eflags artificially */
  #define TIF_DEBUGCTLMSR               25      /* uses thread_struct.debugctlmsr */
  #define TIF_DS_AREA_MSR               26      /* uses thread_struct.ds_area_msr */
 -#define TIF_SYSCALL_FTRACE    27      /* for ftrace syscall instrumentation */
 +#define TIF_LAZY_MMU_UPDATES  27      /* task is updating the mmu lazily */
++#define TIF_SYSCALL_FTRACE    28      /* for ftrace syscall instrumentation */
  
  #define _TIF_SYSCALL_TRACE    (1 << TIF_SYSCALL_TRACE)
  #define _TIF_NOTIFY_RESUME    (1 << TIF_NOTIFY_RESUME)
  #define _TIF_FORCED_TF                (1 << TIF_FORCED_TF)
  #define _TIF_DEBUGCTLMSR      (1 << TIF_DEBUGCTLMSR)
  #define _TIF_DS_AREA_MSR      (1 << TIF_DS_AREA_MSR)
 +#define _TIF_LAZY_MMU_UPDATES (1 << TIF_LAZY_MMU_UPDATES)
+ #define _TIF_SYSCALL_FTRACE   (1 << TIF_SYSCALL_FTRACE)
  
  /* work to do in syscall_trace_enter() */
  #define _TIF_WORK_SYSCALL_ENTRY       \
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -147,16 -166,10 +166,16 @@@ static void lazy_hcall3(unsigned long c
  
  /* When lazy mode is turned off reset the per-cpu lazy mode variable and then
   * issue the do-nothing hypercall to flush any stored calls. */
 -static void lguest_leave_lazy_mode(void)
 +static void lguest_leave_lazy_mmu_mode(void)
 +{
 +      hcall(LHCALL_FLUSH_ASYNC, 0, 0, 0);
 +      paravirt_leave_lazy_mmu();
 +}
 +
 +static void lguest_end_context_switch(struct task_struct *next)
  {
-       hcall(LHCALL_FLUSH_ASYNC, 0, 0, 0);
 -      paravirt_leave_lazy(paravirt_get_lazy_mode());
+       kvm_hypercall0(LHCALL_FLUSH_ASYNC);
 +      paravirt_end_context_switch(next);
  }
  
  /*G:033
@@@ -1045,7 -1065,9 +1071,9 @@@ __init void lguest_init(void
        pv_mmu_ops.read_cr2 = lguest_read_cr2;
        pv_mmu_ops.read_cr3 = lguest_read_cr3;
        pv_mmu_ops.lazy_mode.enter = paravirt_enter_lazy_mmu;
 -      pv_mmu_ops.lazy_mode.leave = lguest_leave_lazy_mode;
 +      pv_mmu_ops.lazy_mode.leave = lguest_leave_lazy_mmu_mode;
+       pv_mmu_ops.pte_update = lguest_pte_update;
+       pv_mmu_ops.pte_update_defer = lguest_pte_update;
  
  #ifdef CONFIG_X86_LOCAL_APIC
        /* apic read/write intercepts */
Simple merge
Simple merge
@@@ -824,7 -844,15 +844,8 @@@ static int change_page_attr_set_clr(uns
  
        vm_unmap_aliases();
  
 -      /*
 -       * If we're called with lazy mmu updates enabled, the
 -       * in-memory pte state may be stale.  Flush pending updates to
 -       * bring them up to date.
 -       */
 -      arch_flush_lazy_mmu_mode();
 -
        cpa.vaddr = addr;
+       cpa.pages = pages;
        cpa.numpages = numpages;
        cpa.mask_set = mask_set;
        cpa.mask_clr = mask_clr;
Simple merge
Simple merge
Simple merge
@@@ -18,10 -18,10 +18,10 @@@ static void disable_hotplug_cpu(int cpu
        if (cpu_present(cpu))
                arch_unregister_cpu(cpu);
  
-       cpu_clear(cpu, cpu_present_map);
+       set_cpu_present(cpu, false);
  }
  
 -static void vcpu_hotplug(unsigned int cpu)
 +static int vcpu_online(unsigned int cpu)
  {
        int err;
        char dir[32], state[32];
@@@ -104,9 -97,16 +98,15 @@@ static void do_suspend(void
                goto out;
        }
  
 -      printk("suspending xenbus...\n");
 -      /* XXX use normal device tree? */
 -      xenbus_suspend();
 +      printk(KERN_DEBUG "suspending xenstore...\n");
 +      xs_suspend();
  
+       err = device_power_down(PMSG_SUSPEND);
+       if (err) {
+               printk(KERN_ERR "device_power_down failed: %d\n", err);
+               goto resume_devices;
+       }
        err = stop_machine(xen_suspend, &cancelled, cpumask_of(0));
        if (err) {
                printk(KERN_ERR "failed to start xen_suspend: %d\n", err);
  
        if (!cancelled) {
                xen_arch_resume();
 -              xenbus_resume();
 +              xs_resume();
        } else
 -              xenbus_suspend_cancel();
 +              xs_suspend_cancel();
  
+       device_power_up(PMSG_RESUME);
+ resume_devices:
        device_resume(PMSG_RESUME);
  
        /* Make sure timer events get retriggered on all CPUs */
diff --cc kernel/sched.c
Simple merge