1. 25 Jun, 2008 6 commits
    • Jeremy Fitzhardinge's avatar
      mm: add a ptep_modify_prot transaction abstraction · 1ea0704e
      Jeremy Fitzhardinge authored
      This patch adds an API for doing read-modify-write updates to a pte's
      protection bits which may race against hardware updates to the pte.
      After reading the pte, the hardware may asynchonously set the accessed
      or dirty bits on a pte, which would be lost when writing back the
      modified pte value.
      
      The existing technique to handle this race is to use
      ptep_get_and_clear() atomically fetch the old pte value and clear it
      in memory.  This has the effect of marking the pte as non-present,
      which will prevent the hardware from updating its state.  When the new
      value is written back, the pte will be present again, and the hardware
      can resume updating the access/dirty flags.
      
      When running in a virtualized environment, pagetable updates are
      relatively expensive, since they generally involve some trap into the
      hypervisor.  To mitigate the cost of these updates, we tend to batch
      them.
      
      However, because of the atomic nature of ptep_get_and_clear(), it is
      inherently non-batchable.  This new interface allows batching by
      giving the underlying implementation enough information to open a
      transaction between the read and write phases:
      
      ptep_modify_prot_start() returns the current pte value, and puts the
        pte entry into a state where either the hardware will not update the
        pte, or if it does, the updates will be preserved on commit.
      
      ptep_modify_prot_commit() writes back the updated pte, makes sure that
        any hardware updates made since ptep_modify_prot_start() are
        preserved.
      
      ptep_modify_prot_start() and _commit() must be exactly paired, and
      used while holding the appropriate pte lock.  They do not protect
      against other software updates of the pte in any way.
      
      The current implementations of ptep_modify_prot_start and _commit are
      functionally unchanged from before: _start() uses ptep_get_and_clear()
      fetch the pte and zero the entry, preventing any hardware updates.
      _commit() simply writes the new pte value back knowing that the
      hardware has not updated the pte in the meantime.
      
      The only current user of this interface is mprotect
      Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
      Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Acked-by: default avatarHugh Dickins <hugh@veritas.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      1ea0704e
    • Ingo Molnar's avatar
      Merge commit 'v2.6.26-rc8' into x86/xen · d02859ec
      Ingo Molnar authored
      Conflicts:
      
      	arch/x86/xen/enlighten.c
      	arch/x86/xen/mmu.c
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      d02859ec
    • Linus Torvalds's avatar
      Linux 2.6.26-rc8 · 543cf4cb
      Linus Torvalds authored
      543cf4cb
    • Linus Torvalds's avatar
      Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 · bd8c540f
      Linus Torvalds authored
      * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
        [IA64] Eliminate NULL test after alloc_bootmem in iosapic_alloc_rte()
        [IA64] Handle count==0 in sn2_ptc_proc_write()
        [IA64] Fix boot failure on ia64/sn2
      bd8c540f
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes · 035cfc61
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes:
        [GFS2] fix gfs2 block allocation (cleaned up)
        [GFS2] BUG: unable to handle kernel paging request at ffff81002690e000
      035cfc61
    • Linus Torvalds's avatar
      Merge branch 'kvm-updates-2.6.26' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm · 919c0d14
      Linus Torvalds authored
      * 'kvm-updates-2.6.26' of git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm:
        KVM: Remove now unused structs from kvm_para.h
        x86: KVM guest: Use the paravirt clocksource structs and functions
        KVM: Make kvm host use the paravirt clocksource structs
        x86: Make xen use the paravirt clocksource structs and functions
        x86: Add structs and functions for paravirt clocksource
        KVM: VMX: Fix host msr corruption with preemption enabled
        KVM: ioapic: fix lost interrupt when changing a device's irq
        KVM: MMU: Fix oops on guest userspace access to guest pagetable
        KVM: MMU: large page update_pte issue with non-PAE 32-bit guests (resend)
        KVM: MMU: Fix rmap_write_protect() hugepage iteration bug
        KVM: close timer injection race window in __vcpu_run
        KVM: Fix race between timer migration and vcpu migration
      919c0d14
  2. 24 Jun, 2008 26 commits
  3. 23 Jun, 2008 8 commits