diff options
| author | David Woodhouse <David.Woodhouse@intel.com> | 2008-07-11 14:36:25 +0100 | 
|---|---|---|
| committer | David Woodhouse <David.Woodhouse@intel.com> | 2008-07-11 14:36:25 +0100 | 
| commit | a8931ef380c92d121ae74ecfb03b2d63f72eea6f (patch) | |
| tree | 980fb6b019e11e6cb1ece55b7faff184721a8053 /arch/powerpc/kvm/44x_tlb.c | |
| parent | 90574d0a4d4b73308ae54a2a57a4f3f1fa98e984 (diff) | |
| parent | e5a5816f7875207cb0a0a7032e39a4686c5e10a4 (diff) | |
| download | olio-linux-3.10-a8931ef380c92d121ae74ecfb03b2d63f72eea6f.tar.xz olio-linux-3.10-a8931ef380c92d121ae74ecfb03b2d63f72eea6f.zip  | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'arch/powerpc/kvm/44x_tlb.c')
| -rw-r--r-- | arch/powerpc/kvm/44x_tlb.c | 9 | 
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/powerpc/kvm/44x_tlb.c b/arch/powerpc/kvm/44x_tlb.c index f5d7a5eab96..75dff7cfa81 100644 --- a/arch/powerpc/kvm/44x_tlb.c +++ b/arch/powerpc/kvm/44x_tlb.c @@ -116,8 +116,6 @@ static void kvmppc_44x_shadow_release(struct kvm_vcpu *vcpu,  	struct tlbe *stlbe = &vcpu->arch.shadow_tlb[index];  	struct page *page = vcpu->arch.shadow_pages[index]; -	kunmap(vcpu->arch.shadow_pages[index]); -  	if (get_tlb_v(stlbe)) {  		if (kvmppc_44x_tlbe_is_writable(stlbe))  			kvm_release_page_dirty(page); @@ -144,18 +142,19 @@ void kvmppc_mmu_map(struct kvm_vcpu *vcpu, u64 gvaddr, gfn_t gfn, u64 asid,  	stlbe = &vcpu->arch.shadow_tlb[victim];  	/* Get reference to new page. */ -	down_write(¤t->mm->mmap_sem); +	down_read(¤t->mm->mmap_sem);  	new_page = gfn_to_page(vcpu->kvm, gfn);  	if (is_error_page(new_page)) { -		printk(KERN_ERR "Couldn't get guest page!\n"); +		printk(KERN_ERR "Couldn't get guest page for gfn %lx!\n", gfn);  		kvm_release_page_clean(new_page); +		up_read(¤t->mm->mmap_sem);  		return;  	}  	hpaddr = page_to_phys(new_page);  	/* Drop reference to old page. */  	kvmppc_44x_shadow_release(vcpu, victim); -	up_write(¤t->mm->mmap_sem); +	up_read(¤t->mm->mmap_sem);  	vcpu->arch.shadow_pages[victim] = new_page;  |