diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 6abdd20b89..68d17db4ad 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -1170,7 +1170,7 @@ get_page_from_l4e( } #endif /* CONFIG_PV */ -static int _put_page_type(struct page_info *page, bool preemptible, +static int _put_page_type(struct page_info *page, unsigned int flags, struct page_info *ptpg); void put_page_from_l1e(l1_pgentry_t l1e, struct domain *l1e_owner) @@ -1290,7 +1290,7 @@ static int put_page_from_l2e(l2_pgentry_t l2e, unsigned long pfn, PTF_partial_set ) { ASSERT(!(flags & PTF_defer)); - rc = _put_page_type(pg, true, ptpg); + rc = _put_page_type(pg, PTF_preemptible, ptpg); } else if ( flags & PTF_defer ) { @@ -1299,7 +1299,7 @@ static int put_page_from_l2e(l2_pgentry_t l2e, unsigned long pfn, } else { - rc = _put_page_type(pg, true, ptpg); + rc = _put_page_type(pg, PTF_preemptible, ptpg); if ( likely(!rc) ) put_page(pg); } @@ -1336,7 +1336,7 @@ static int put_page_from_l3e(l3_pgentry_t l3e, unsigned long pfn, PTF_partial_set ) { ASSERT(!(flags & PTF_defer)); - return _put_page_type(pg, true, mfn_to_page(_mfn(pfn))); + return _put_page_type(pg, PTF_preemptible, mfn_to_page(_mfn(pfn))); } if ( flags & PTF_defer ) @@ -1346,7 +1346,7 @@ static int put_page_from_l3e(l3_pgentry_t l3e, unsigned long pfn, return 0; } - rc = _put_page_type(pg, true, mfn_to_page(_mfn(pfn))); + rc = _put_page_type(pg, PTF_preemptible, mfn_to_page(_mfn(pfn))); if ( likely(!rc) ) put_page(pg); @@ -1367,7 +1367,7 @@ static int put_page_from_l4e(l4_pgentry_t l4e, unsigned long pfn, PTF_partial_set ) { ASSERT(!(flags & PTF_defer)); - return _put_page_type(pg, true, mfn_to_page(_mfn(pfn))); + return _put_page_type(pg, PTF_preemptible, mfn_to_page(_mfn(pfn))); } if ( flags & PTF_defer ) @@ -1377,7 +1377,7 @@ static int put_page_from_l4e(l4_pgentry_t l4e, unsigned long pfn, return 0; } - rc = _put_page_type(pg, true, mfn_to_page(_mfn(pfn))); + rc = _put_page_type(pg, PTF_preemptible, mfn_to_page(_mfn(pfn))); if ( likely(!rc) ) put_page(pg); } @@ -2727,10 +2727,11 @@ static int _put_final_page_type(struct page_info *page, unsigned long type, } -static int _put_page_type(struct page_info *page, bool preemptible, +static int _put_page_type(struct page_info *page, unsigned int flags, struct page_info *ptpg) { unsigned long nx, x, y = page->u.inuse.type_info; + bool preemptible = flags & PTF_preemptible; ASSERT(current_locked_page_ne_check(page)); @@ -2936,7 +2937,7 @@ static int _get_page_type(struct page_info *page, unsigned long type, if ( unlikely(rc) ) { - _put_page_type(page, false, NULL); + _put_page_type(page, 0, NULL); goto out; } } @@ -2962,7 +2963,7 @@ static int _get_page_type(struct page_info *page, unsigned long type, void put_page_type(struct page_info *page) { - int rc = _put_page_type(page, false, NULL); + int rc = _put_page_type(page, 0, NULL); ASSERT(rc == 0); (void)rc; } @@ -2979,7 +2980,7 @@ int get_page_type(struct page_info *page, unsigned long type) int put_page_type_preemptible(struct page_info *page) { - return _put_page_type(page, true, NULL); + return _put_page_type(page, PTF_preemptible, NULL); } int get_page_type_preemptible(struct page_info *page, unsigned long type) @@ -2996,7 +2997,7 @@ int put_old_guest_table(struct vcpu *v) if ( !v->arch.old_guest_table ) return 0; - switch ( rc = _put_page_type(v->arch.old_guest_table, true, + switch ( rc = _put_page_type(v->arch.old_guest_table, PTF_preemptible, v->arch.old_guest_ptpg) ) { case -EINTR: