11 Dec, 2012

1 commit


10 Dec, 2012

1 commit

  • * 'for-upstream' of https://github.com/agraf/linux-2.6: (28 commits)
    KVM: PPC: booke: Get/set guest EPCR register using ONE_REG interface
    KVM: PPC: bookehv: Add EPCR support in mtspr/mfspr emulation
    KVM: PPC: bookehv: Add guest computation mode for irq delivery
    KVM: PPC: Make EPCR a valid field for booke64 and bookehv
    KVM: PPC: booke: Extend MAS2 EPN mask for 64-bit
    KVM: PPC: e500: Mask MAS2 EPN high 32-bits in 32/64 tlbwe emulation
    KVM: PPC: Mask ea's high 32-bits in 32/64 instr emulation
    KVM: PPC: e500: Add emulation helper for getting instruction ea
    KVM: PPC: bookehv64: Add support for interrupt handling
    KVM: PPC: bookehv: Remove GET_VCPU macro from exception handler
    KVM: PPC: booke: Fix get_tb() compile error on 64-bit
    KVM: PPC: e500: Silence bogus GCC warning in tlb code
    KVM: PPC: Book3S HV: Handle guest-caused machine checks on POWER7 without panicking
    KVM: PPC: Book3S HV: Improve handling of local vs. global TLB invalidations
    MAINTAINERS: Add git tree link for PPC KVM
    KVM: PPC: Book3S PR: MSR_DE doesn't exist on Book 3S
    KVM: PPC: Book3S PR: Fix VSX handling
    KVM: PPC: Book3S PR: Emulate PURR, SPURR and DSCR registers
    KVM: PPC: Book3S HV: Don't give the guest RW access to RO pages
    KVM: PPC: Book3S HV: Report correct HPT entry index when reading HPT
    ...

    Marcelo Tosatti
     

06 Dec, 2012

1 commit

  • The current eventfd code assumes that when we have eventfd, we also have
    irqfd for in-kernel interrupt delivery. This is not necessarily true. On
    PPC we don't have an in-kernel irqchip yet, but we can still support easily
    support eventfd.

    Signed-off-by: Alexander Graf

    Alexander Graf
     

05 Dec, 2012

2 commits


30 Nov, 2012

1 commit

  • Prior to memory slot sorting this loop compared all of the user memory
    slots for overlap with new entries. With memory slot sorting, we're
    just checking some number of entries in the array that may or may not
    be user slots. Instead, walk all the slots with kvm_for_each_memslot,
    which has the added benefit of terminating early when we hit the first
    empty slot, and skip comparison to private slots.

    Cc: stable@vger.kernel.org
    Signed-off-by: Alex Williamson
    Signed-off-by: Marcelo Tosatti

    Alex Williamson
     

28 Nov, 2012

2 commits

  • TSC initialization will soon make use of online_vcpus.

    Signed-off-by: Marcelo Tosatti

    Marcelo Tosatti
     
  • KVM added a global variable to guarantee monotonicity in the guest.
    One of the reasons for that is that the time between

    1. ktime_get_ts(×pec);
    2. rdtscll(tsc);

    Is variable. That is, given a host with stable TSC, suppose that
    two VCPUs read the same time via ktime_get_ts() above.

    The time required to execute 2. is not the same on those two instances
    executing in different VCPUS (cache misses, interrupts...).

    If the TSC value that is used by the host to interpolate when
    calculating the monotonic time is the same value used to calculate
    the tsc_timestamp value stored in the pvclock data structure, and
    a single tuple is visible to all
    vcpus simultaneously, this problem disappears. See comment on top
    of pvclock_update_vm_gtod_copy for details.

    Monotonicity is then guaranteed by synchronicity of the host TSCs
    and guest TSCs.

    Set TSC stable pvclock flag in that case, allowing the guest to read
    clock from userspace.

    Signed-off-by: Marcelo Tosatti

    Marcelo Tosatti
     

14 Nov, 2012

2 commits


30 Oct, 2012

2 commits

  • This patch filters noslot pfn out from error pfns based on Marcelo comment:
    noslot pfn is not a error pfn

    After this patch,
    - is_noslot_pfn indicates that the gfn is not in slot
    - is_error_pfn indicates that the gfn is in slot but the error is occurred
    when translate the gfn to pfn
    - is_error_noslot_pfn indicates that the pfn either it is error pfns or it
    is noslot pfn
    And is_invalid_pfn can be removed, it makes the code more clean

    Signed-off-by: Xiao Guangrong
    Signed-off-by: Marcelo Tosatti

    Xiao Guangrong
     
  • Merge reason: development work has dependency on kvm patches merged
    upstream.

    Conflicts:
    arch/powerpc/include/asm/Kbuild
    arch/powerpc/include/asm/kvm_para.h

    Signed-off-by: Marcelo Tosatti

    Marcelo Tosatti
     

24 Oct, 2012

1 commit


23 Oct, 2012

1 commit

  • We can not directly call kvm_release_pfn_clean to release the pfn
    since we can meet noslot pfn which is used to cache mmio info into
    spte

    Signed-off-by: Xiao Guangrong
    Cc: stable@vger.kernel.org
    Signed-off-by: Avi Kivity

    Xiao Guangrong
     

11 Oct, 2012

1 commit


06 Oct, 2012

1 commit


05 Oct, 2012

1 commit

  • Pull KVM updates from Avi Kivity:
    "Highlights of the changes for this release include support for vfio
    level triggered interrupts, improved big real mode support on older
    Intels, a streamlines guest page table walker, guest APIC speedups,
    PIO optimizations, better overcommit handling, and read-only memory."

    * tag 'kvm-3.7-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (138 commits)
    KVM: s390: Fix vcpu_load handling in interrupt code
    KVM: x86: Fix guest debug across vcpu INIT reset
    KVM: Add resampling irqfds for level triggered interrupts
    KVM: optimize apic interrupt delivery
    KVM: MMU: Eliminate pointless temporary 'ac'
    KVM: MMU: Avoid access/dirty update loop if all is well
    KVM: MMU: Eliminate eperm temporary
    KVM: MMU: Optimize is_last_gpte()
    KVM: MMU: Simplify walk_addr_generic() loop
    KVM: MMU: Optimize pte permission checks
    KVM: MMU: Update accessed and dirty bits after guest pagetable walk
    KVM: MMU: Move gpte_access() out of paging_tmpl.h
    KVM: MMU: Optimize gpte_access() slightly
    KVM: MMU: Push clean gpte write protection out of gpte_access()
    KVM: clarify kvmclock documentation
    KVM: make processes waiting on vcpu mutex killable
    KVM: SVM: Make use of asm.h
    KVM: VMX: Make use of asm.h
    KVM: VMX: Make lto-friendly
    KVM: x86: lapic: Clean up find_highest_vector() and count_vectors()
    ...

    Conflicts:
    arch/s390/include/asm/processor.h
    arch/x86/kvm/i8259.c

    Linus Torvalds
     

03 Oct, 2012

1 commit

  • Pull workqueue changes from Tejun Heo:
    "This is workqueue updates for v3.7-rc1. A lot of activities this
    round including considerable API and behavior cleanups.

    * delayed_work combines a timer and a work item. The handling of the
    timer part has always been a bit clunky leading to confusing
    cancelation API with weird corner-case behaviors. delayed_work is
    updated to use new IRQ safe timer and cancelation now works as
    expected.

    * Another deficiency of delayed_work was lack of the counterpart of
    mod_timer() which led to cancel+queue combinations or open-coded
    timer+work usages. mod_delayed_work[_on]() are added.

    These two delayed_work changes make delayed_work provide interface
    and behave like timer which is executed with process context.

    * A work item could be executed concurrently on multiple CPUs, which
    is rather unintuitive and made flush_work() behavior confusing and
    half-broken under certain circumstances. This problem doesn't
    exist for non-reentrant workqueues. While non-reentrancy check
    isn't free, the overhead is incurred only when a work item bounces
    across different CPUs and even in simulated pathological scenario
    the overhead isn't too high.

    All workqueues are made non-reentrant. This removes the
    distinction between flush_[delayed_]work() and
    flush_[delayed_]_work_sync(). The former is now as strong as the
    latter and the specified work item is guaranteed to have finished
    execution of any previous queueing on return.

    * In addition to the various bug fixes, Lai redid and simplified CPU
    hotplug handling significantly.

    * Joonsoo introduced system_highpri_wq and used it during CPU
    hotplug.

    There are two merge commits - one to pull in IRQ safe timer from
    tip/timers/core and the other to pull in CPU hotplug fixes from
    wq/for-3.6-fixes as Lai's hotplug restructuring depended on them."

    Fixed a number of trivial conflicts, but the more interesting conflicts
    were silent ones where the deprecated interfaces had been used by new
    code in the merge window, and thus didn't cause any real data conflicts.

    Tejun pointed out a few of them, I fixed a couple more.

    * 'for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (46 commits)
    workqueue: remove spurious WARN_ON_ONCE(in_irq()) from try_to_grab_pending()
    workqueue: use cwq_set_max_active() helper for workqueue_set_max_active()
    workqueue: introduce cwq_set_max_active() helper for thaw_workqueues()
    workqueue: remove @delayed from cwq_dec_nr_in_flight()
    workqueue: fix possible stall on try_to_grab_pending() of a delayed work item
    workqueue: use hotcpu_notifier() for workqueue_cpu_down_callback()
    workqueue: use __cpuinit instead of __devinit for cpu callbacks
    workqueue: rename manager_mutex to assoc_mutex
    workqueue: WORKER_REBIND is no longer necessary for idle rebinding
    workqueue: WORKER_REBIND is no longer necessary for busy rebinding
    workqueue: reimplement idle worker rebinding
    workqueue: deprecate __cancel_delayed_work()
    workqueue: reimplement cancel_delayed_work() using try_to_grab_pending()
    workqueue: use mod_delayed_work() instead of __cancel + queue
    workqueue: use irqsafe timer for delayed_work
    workqueue: clean up delayed_work initializers and add missing one
    workqueue: make deferrable delayed_work initializer names consistent
    workqueue: cosmetic whitespace updates for macro definitions
    workqueue: deprecate system_nrt[_freezable]_wq
    workqueue: deprecate flush[_delayed]_work_sync()
    ...

    Linus Torvalds
     

23 Sep, 2012

1 commit

  • To emulate level triggered interrupts, add a resample option to
    KVM_IRQFD. When specified, a new resamplefd is provided that notifies
    the user when the irqchip has been resampled by the VM. This may, for
    instance, indicate an EOI. Also in this mode, posting of an interrupt
    through an irqfd only asserts the interrupt. On resampling, the
    interrupt is automatically de-asserted prior to user notification.
    This enables level triggered interrupts to be posted and re-enabled
    from vfio with no userspace intervention.

    All resampling irqfds can make use of a single irq source ID, so we
    reserve a new one for this interface.

    Signed-off-by: Alex Williamson
    Signed-off-by: Avi Kivity

    Alex Williamson
     

20 Sep, 2012

1 commit

  • Most interrupt are delivered to only one vcpu. Use pre-build tables to
    find interrupt destination instead of looping through all vcpus. In case
    of logical mode loop only through vcpus in a logical cluster irq is sent
    to.

    Signed-off-by: Gleb Natapov
    Acked-by: Michael S. Tsirkin
    Signed-off-by: Avi Kivity

    Gleb Natapov
     

18 Sep, 2012

1 commit

  • vcpu mutex can be held for unlimited time so
    taking it with mutex_lock on an ioctl is wrong:
    one process could be passed a vcpu fd and
    call this ioctl on the vcpu used by another process,
    it will then be unkillable until the owner exits.

    Call mutex_lock_killable instead and return status.
    Note: mutex_lock_interruptible would be even nicer,
    but I am not sure all users are prepared to handle EINTR
    from these ioctls. They might misinterpret it as an error.

    Cleanup paths expect a vcpu that can't be used by
    any userspace so this will always succeed - catch bugs
    by calling BUG_ON.

    Catch callers that don't check return state by adding
    __must_check.

    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Marcelo Tosatti

    Michael S. Tsirkin
     

06 Sep, 2012

3 commits


28 Aug, 2012

1 commit

  • The build error was caused by that builtin functions are calling
    the functions implemented in modules. This error was introduced by
    commit 4d8b81abc4 ("KVM: introduce readonly memslot").

    The patch fixes the build error by moving function __gfn_to_hva_memslot()
    from kvm_main.c to kvm_host.h and making that "inline" so that the
    builtin function (kvmppc_h_enter) can use that.

    Acked-by: Paul Mackerras
    Signed-off-by: Gavin Shan
    Signed-off-by: Marcelo Tosatti

    Gavin Shan
     

27 Aug, 2012

1 commit

  • KVM_SET_SIGNAL_MASK passed a NULL argument leaves the on stack signal
    sets uninitialized. It then passes them through to
    kvm_vcpu_ioctl_set_sigmask.

    We should be passing a NULL in this case not translated garbage.

    Signed-off-by: Alan Cox
    Signed-off-by: Marcelo Tosatti

    Alan Cox
     

22 Aug, 2012

7 commits


21 Aug, 2012

1 commit

  • flush[_delayed]_work_sync() are now spurious. Mark them deprecated
    and convert all users to flush[_delayed]_work().

    If you're cc'd and wondering what's going on: Now all workqueues are
    non-reentrant and the regular flushes guarantee that the work item is
    not pending or running on any CPU on return, so there's no reason to
    use the sync flushes at all and they're going away.

    This patch doesn't make any functional difference.

    Signed-off-by: Tejun Heo
    Cc: Russell King
    Cc: Paul Mundt
    Cc: Ian Campbell
    Cc: Jens Axboe
    Cc: Mattia Dongili
    Cc: Kent Yoder
    Cc: David Airlie
    Cc: Jiri Kosina
    Cc: Karsten Keil
    Cc: Bryan Wu
    Cc: Benjamin Herrenschmidt
    Cc: Alasdair Kergon
    Cc: Mauro Carvalho Chehab
    Cc: Florian Tobias Schandinat
    Cc: David Woodhouse
    Cc: "David S. Miller"
    Cc: linux-wireless@vger.kernel.org
    Cc: Anton Vorontsov
    Cc: Sangbeom Kim
    Cc: "James E.J. Bottomley"
    Cc: Greg Kroah-Hartman
    Cc: Eric Van Hensbergen
    Cc: Takashi Iwai
    Cc: Steven Whitehouse
    Cc: Petr Vandrovec
    Cc: Mark Fasheh
    Cc: Christoph Hellwig
    Cc: Avi Kivity

    Tejun Heo
     

15 Aug, 2012

1 commit


06 Aug, 2012

5 commits