From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: [PATCH] x86: Allow PV guest set X86_CR4_PCE flag Date: Mon, 10 Aug 2015 15:37:37 +0100 Message-ID: <55C8B731.2020301@citrix.com> References: <1439216842-9651-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1439216842-9651-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Boris Ostrovsky , jbeulich@suse.com Cc: dietmar.hahn@ts.fujitsu.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 10/08/15 15:27, Boris Ostrovsky wrote: > With added PV support for VPMU, guests may legitimately decide to set > CR4's PCE flag. We should allow this when VPMU is enabled. > > Signed-off-by: Boris Ostrovsky Why? Even a PV guest using VPMU should know that it doesn't actually control CR4.PCE All this (appears to) end up doing is putting PCE into the "allow but ignore" mask. How about this (not even compile tested) which is a rather shorter way of doing the same thing: diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 045f6ff..834ce0f 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -721,10 +721,12 @@ static int __init init_pv_cr4_masks(void) unsigned long common_mask = ~X86_CR4_TSD; /* - * All PV guests may attempt to modify TSD, DE and OSXSAVE. + * All PV guests may attempt to modify TSD, DE, PCE and OSXSAVE. */ if ( cpu_has_de ) common_mask &= ~X86_CR4_DE; + if ( cpu_has_pce ) + common_mask &= ~X86_CR4_PCE; if ( cpu_has_xsave ) common_mask &= ~X86_CR4_OSXSAVE; ~Andrew