mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
x86/pagewalk: Use pointer syntax for pfec parameter
It is a pointer, not an array. No functional change. Requested-by: Jan Beulich <jbeulich@suse.com> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: George Dunlap <george.dunlap@citrix.com> Acked-by: Tim Deegan <tim@xen.org>
This commit is contained in:
1 parent
954b98ed5c
commit
747ddf0dda
3 files changed
+22
-21
No files matched your search
@@ -65,7 +65,7 @@ unsigned long hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)(
|
||||
if ( p2m_is_paging(p2mt) )
|
||||
{
|
||||
ASSERT(p2m_is_hostp2m(p2m));
|
||||
pfec[0] = PFEC_page_paged;
|
||||
*pfec = PFEC_page_paged;
|
||||
if ( top_page )
|
||||
put_page(top_page);
|
||||
p2m_mem_paging_populate(p2m->domain, cr3 >> PAGE_SHIFT);
|
||||
@@ -73,14 +73,14 @@ unsigned long hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)(
|
||||
}
|
||||
if ( p2m_is_shared(p2mt) )
|
||||
{
|
||||
pfec[0] = PFEC_page_shared;
|
||||
*pfec = PFEC_page_shared;
|
||||
if ( top_page )
|
||||
put_page(top_page);
|
||||
return gfn_x(INVALID_GFN);
|
||||
}
|
||||
if ( !top_page )
|
||||
{
|
||||
pfec[0] &= ~PFEC_page_present;
|
||||
*pfec &= ~PFEC_page_present;
|
||||
goto out_tweak_pfec;
|
||||
}
|
||||
top_mfn = _mfn(page_to_mfn(top_page));
|
||||
@@ -91,7 +91,7 @@ unsigned long hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)(
|
||||
#if GUEST_PAGING_LEVELS == 3
|
||||
top_map += (cr3 & ~(PAGE_MASK | 31));
|
||||
#endif
|
||||
missing = guest_walk_tables(v, p2m, ga, &gw, pfec[0], top_mfn, top_map);
|
||||
missing = guest_walk_tables(v, p2m, ga, &gw, *pfec, top_mfn, top_map);
|
||||
unmap_domain_page(top_map);
|
||||
put_page(top_page);
|
||||
|
||||
@@ -107,13 +107,13 @@ unsigned long hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)(
|
||||
if ( p2m_is_paging(p2mt) )
|
||||
{
|
||||
ASSERT(p2m_is_hostp2m(p2m));
|
||||
pfec[0] = PFEC_page_paged;
|
||||
*pfec = PFEC_page_paged;
|
||||
p2m_mem_paging_populate(p2m->domain, gfn_x(gfn));
|
||||
return gfn_x(INVALID_GFN);
|
||||
}
|
||||
if ( p2m_is_shared(p2mt) )
|
||||
{
|
||||
pfec[0] = PFEC_page_shared;
|
||||
*pfec = PFEC_page_shared;
|
||||
return gfn_x(INVALID_GFN);
|
||||
}
|
||||
|
||||
@@ -124,19 +124,19 @@ unsigned long hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)(
|
||||
}
|
||||
|
||||
if ( missing & _PAGE_PRESENT )
|
||||
pfec[0] &= ~PFEC_page_present;
|
||||
*pfec &= ~PFEC_page_present;
|
||||
|
||||
if ( missing & _PAGE_INVALID_BITS )
|
||||
pfec[0] |= PFEC_reserved_bit;
|
||||
*pfec |= PFEC_reserved_bit;
|
||||
|
||||
if ( missing & _PAGE_PKEY_BITS )
|
||||
pfec[0] |= PFEC_prot_key;
|
||||
*pfec |= PFEC_prot_key;
|
||||
|
||||
if ( missing & _PAGE_PAGED )
|
||||
pfec[0] = PFEC_page_paged;
|
||||
*pfec = PFEC_page_paged;
|
||||
|
||||
if ( missing & _PAGE_SHARED )
|
||||
pfec[0] = PFEC_page_shared;
|
||||
*pfec = PFEC_page_shared;
|
||||
|
||||
out_tweak_pfec:
|
||||
/*
|
||||
@@ -144,7 +144,7 @@ unsigned long hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)(
|
||||
* The PFEC_insn_fetch flag is set only when NX or SMEP are enabled.
|
||||
*/
|
||||
if ( !hvm_nx_enabled(v) && !hvm_smep_enabled(v) )
|
||||
pfec[0] &= ~PFEC_insn_fetch;
|
||||
*pfec &= ~PFEC_insn_fetch;
|
||||
|
||||
return gfn_x(INVALID_GFN);
|
||||
}
|
||||
|
||||
@@ -3727,30 +3727,30 @@ sh_gva_to_gfn(struct vcpu *v, struct p2m_domain *p2m,
|
||||
|
||||
#if (SHADOW_OPTIMIZATIONS & SHOPT_VIRTUAL_TLB)
|
||||
/* Check the vTLB cache first */
|
||||
unsigned long vtlb_gfn = vtlb_lookup(v, va, pfec[0]);
|
||||
unsigned long vtlb_gfn = vtlb_lookup(v, va, *pfec);
|
||||
if ( VALID_GFN(vtlb_gfn) )
|
||||
return vtlb_gfn;
|
||||
#endif /* (SHADOW_OPTIMIZATIONS & SHOPT_VIRTUAL_TLB) */
|
||||
|
||||
if ( (missing = sh_walk_guest_tables(v, va, &gw, pfec[0])) != 0 )
|
||||
if ( (missing = sh_walk_guest_tables(v, va, &gw, *pfec)) != 0 )
|
||||
{
|
||||
if ( (missing & _PAGE_PRESENT) )
|
||||
pfec[0] &= ~PFEC_page_present;
|
||||
*pfec &= ~PFEC_page_present;
|
||||
if ( missing & _PAGE_INVALID_BITS )
|
||||
pfec[0] |= PFEC_reserved_bit;
|
||||
*pfec |= PFEC_reserved_bit;
|
||||
/*
|
||||
* SDM Intel 64 Volume 3, Chapter Paging, PAGE-FAULT EXCEPTIONS:
|
||||
* The PFEC_insn_fetch flag is set only when NX or SMEP are enabled.
|
||||
*/
|
||||
if ( is_hvm_vcpu(v) && !hvm_nx_enabled(v) && !hvm_smep_enabled(v) )
|
||||
pfec[0] &= ~PFEC_insn_fetch;
|
||||
*pfec &= ~PFEC_insn_fetch;
|
||||
return gfn_x(INVALID_GFN);
|
||||
}
|
||||
gfn = guest_walk_to_gfn(&gw);
|
||||
|
||||
#if (SHADOW_OPTIMIZATIONS & SHOPT_VIRTUAL_TLB)
|
||||
/* Remember this successful VA->GFN translation for later. */
|
||||
vtlb_insert(v, va >> PAGE_SHIFT, gfn_x(gfn), pfec[0]);
|
||||
vtlb_insert(v, va >> PAGE_SHIFT, gfn_x(gfn), *pfec);
|
||||
#endif /* (SHADOW_OPTIMIZATIONS & SHOPT_VIRTUAL_TLB) */
|
||||
|
||||
return gfn_x(gfn);
|
||||
|
||||
@@ -242,12 +242,13 @@ paging_fault(unsigned long va, struct cpu_user_regs *regs)
|
||||
/* Handle invlpg requests on vcpus. */
|
||||
void paging_invlpg(struct vcpu *v, unsigned long va);
|
||||
|
||||
/* Translate a guest virtual address to the frame number that the
|
||||
/*
|
||||
* Translate a guest virtual address to the frame number that the
|
||||
* *guest* pagetables would map it to. Returns INVALID_GFN if the guest
|
||||
* tables don't map this address for this kind of access.
|
||||
* pfec[0] is used to determine which kind of access this is when
|
||||
* *pfec is used to determine which kind of access this is when
|
||||
* walking the tables. The caller should set the PFEC_page_present bit
|
||||
* in pfec[0]; in the failure case, that bit will be cleared if appropriate.
|
||||
* in *pfec; in the failure case, that bit will be cleared if appropriate.
|
||||
*
|
||||
* SDM Intel 64 Volume 3, Chapter Paging, PAGE-FAULT EXCEPTIONS:
|
||||
* The PFEC_insn_fetch flag is set only when NX or SMEP are enabled.
|
||||
|
||||