From: Jan Beulich Date: Wed, 8 Jan 2020 14:03:58 +0000 (+0100) Subject: x86/mm: re-order a few conditionals X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~924 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=fe4df51ff776c8e543879ed552ace34d217e048d;p=xen.git x86/mm: re-order a few conditionals is_{hvm,pv}_*() can be expensive now, so where possible evaluate cheaper conditions first. Signed-off-by: Jan Beulich Acked-by: Andrew Cooper --- diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 0a0ca07c7c..654190e9e9 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -1588,7 +1588,7 @@ static int promote_l3_table(struct page_info *page) if ( i > page->nr_validated_ptes && hypercall_preempt_check() ) rc = -EINTR; - else if ( is_pv_32bit_domain(d) && (i == 3) ) + else if ( i == 3 && is_pv_32bit_domain(d) ) { if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) || (l3e_get_flags(l3e) & l3_disallow_mask(d)) ) @@ -2310,7 +2310,7 @@ static int mod_l3_entry(l3_pgentry_t *pl3e, * Disallow updates to final L3 slot. It contains Xen mappings, and it * would be a pain to ensure they remain continuously valid throughout. */ - if ( is_pv_32bit_domain(d) && (pgentry_ptr_to_slot(pl3e) >= 3) ) + if ( pgentry_ptr_to_slot(pl3e) >= 3 && is_pv_32bit_domain(d) ) return -EINVAL; ol3e = l3e_read_atomic(pl3e); @@ -2470,7 +2470,7 @@ static int cleanup_page_mappings(struct page_info *page) { struct domain *d = page_get_owner(page); - if ( d && is_pv_domain(d) && unlikely(need_iommu_pt_sync(d)) ) + if ( d && unlikely(need_iommu_pt_sync(d)) && is_pv_domain(d) ) { int rc2 = iommu_legacy_unmap(d, _dfn(mfn), PAGE_ORDER_4K); @@ -2984,7 +2984,7 @@ static int _get_page_type(struct page_info *page, unsigned long type, /* Special pages should not be accessible from devices. */ struct domain *d = page_get_owner(page); - if ( d && is_pv_domain(d) && unlikely(need_iommu_pt_sync(d)) ) + if ( d && unlikely(need_iommu_pt_sync(d)) && is_pv_domain(d) ) { mfn_t mfn = page_to_mfn(page);