Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 80770
b: refs/heads/master
c: b238f7b
h: refs/heads/master
v: v3
  • Loading branch information
Izik Eidus authored and Avi Kivity committed Jan 30, 2008
1 parent 6659624 commit a4d9a61
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d835dfecd00fd770288dcd9a46c0e0966d526fdf
refs/heads/master: b238f7bc2dd5e0e8ecbd28863d6d03e490c652ce
20 changes: 10 additions & 10 deletions trunk/drivers/kvm/paging_tmpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@ static void FNAME(set_pte_common)(struct kvm_vcpu *vcpu,
int dirty = gpte & PT_DIRTY_MASK;
u64 spte;
int was_rmapped = is_rmap_pte(*shadow_pte);
struct page *page;

pgprintk("%s: spte %llx gpte %llx access %llx write_fault %d"
" user_fault %d gfn %lx\n",
Expand All @@ -205,15 +206,20 @@ static void FNAME(set_pte_common)(struct kvm_vcpu *vcpu,

paddr = gpa_to_hpa(vcpu->kvm, gaddr & PT64_BASE_ADDR_MASK);

/*
* the reason paddr get mask even that it isnt pte is beacuse the
* HPA_ERR_MASK bit might be used to signal error
*/
page = pfn_to_page((paddr & PT64_BASE_ADDR_MASK) >> PAGE_SHIFT);

spte |= PT_PRESENT_MASK;
if (access_bits & PT_USER_MASK)
spte |= PT_USER_MASK;

if (is_error_hpa(paddr)) {
set_shadow_pte(shadow_pte,
shadow_trap_nonpresent_pte | PT_SHADOW_IO_MARK);
kvm_release_page_clean(pfn_to_page((paddr & PT64_BASE_ADDR_MASK)
>> PAGE_SHIFT));
kvm_release_page_clean(page);
return;
}

Expand Down Expand Up @@ -254,17 +260,11 @@ static void FNAME(set_pte_common)(struct kvm_vcpu *vcpu,
if (!was_rmapped) {
rmap_add(vcpu, shadow_pte, (gaddr & PT64_BASE_ADDR_MASK)
>> PAGE_SHIFT);
if (!is_rmap_pte(*shadow_pte)) {
struct page *page;

page = pfn_to_page((paddr & PT64_BASE_ADDR_MASK)
>> PAGE_SHIFT);
if (!is_rmap_pte(*shadow_pte))
kvm_release_page_clean(page);
}
}
else
kvm_release_page_clean(pfn_to_page((paddr & PT64_BASE_ADDR_MASK)
>> PAGE_SHIFT));
kvm_release_page_clean(page);
if (!ptwrite || !*ptwrite)
vcpu->last_pte_updated = shadow_pte;
}
Expand Down

0 comments on commit a4d9a61

Please sign in to comment.