diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-04 09:30:33 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-04 09:30:33 -0700 | 
| commit | ecefbd94b834fa32559d854646d777c56749ef1c (patch) | |
| tree | ca8958900ad9e208a8e5fb7704f1b66dc76131b4 /virt/kvm/async_pf.c | |
| parent | ce57e981f2b996aaca2031003b3f866368307766 (diff) | |
| parent | 3d11df7abbff013b811d5615320580cd5d9d7d31 (diff) | |
| download | olio-linux-3.10-ecefbd94b834fa32559d854646d777c56749ef1c.tar.xz olio-linux-3.10-ecefbd94b834fa32559d854646d777c56749ef1c.zip  | |
Merge tag 'kvm-3.7-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
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
Diffstat (limited to 'virt/kvm/async_pf.c')
| -rw-r--r-- | virt/kvm/async_pf.c | 11 | 
1 files changed, 5 insertions, 6 deletions
diff --git a/virt/kvm/async_pf.c b/virt/kvm/async_pf.c index 74268b4c2ee..ea475cd0351 100644 --- a/virt/kvm/async_pf.c +++ b/virt/kvm/async_pf.c @@ -111,8 +111,8 @@ void kvm_clear_async_pf_completion_queue(struct kvm_vcpu *vcpu)  			list_entry(vcpu->async_pf.done.next,  				   typeof(*work), link);  		list_del(&work->link); -		if (work->page) -			put_page(work->page); +		if (!is_error_page(work->page)) +			kvm_release_page_clean(work->page);  		kmem_cache_free(async_pf_cache, work);  	}  	spin_unlock(&vcpu->async_pf.lock); @@ -138,8 +138,8 @@ void kvm_check_async_pf_completion(struct kvm_vcpu *vcpu)  		list_del(&work->queue);  		vcpu->async_pf.queued--; -		if (work->page) -			put_page(work->page); +		if (!is_error_page(work->page)) +			kvm_release_page_clean(work->page);  		kmem_cache_free(async_pf_cache, work);  	}  } @@ -203,8 +203,7 @@ int kvm_async_pf_wakeup_all(struct kvm_vcpu *vcpu)  	if (!work)  		return -ENOMEM; -	work->page = bad_page; -	get_page(bad_page); +	work->page = KVM_ERR_PTR_BAD_PAGE;  	INIT_LIST_HEAD(&work->queue); /* for list_del to work */  	spin_lock(&vcpu->async_pf.lock);  |