From mboxrd@z Thu Jan 1 00:00:00 1970 From: Razvan Cojocaru Subject: Re: [PATCH V4] xen/vm_event: Clean up control-register-write vm_events Date: Thu, 21 May 2015 16:18:57 +0300 Message-ID: <555DDB41.602@bitdefender.com> References: <1432213223-5211-1-git-send-email-rcojocaru@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1432213223-5211-1-git-send-email-rcojocaru@bitdefender.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: xen-devel@lists.xen.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, ian.campbell@citrix.com, stefano.stabellini@eu.citrix.com, jun.nakajima@intel.com, ian.jackson@eu.citrix.com, tim@xen.org, eddie.dong@intel.com, jbeulich@suse.com, andrew.cooper3@citrix.com, keir@xen.org List-Id: xen-devel@lists.xenproject.org > diff --git a/xen/arch/x86/hvm/event.c b/xen/arch/x86/hvm/event.c > index 9d5f9f3..310f0e8 100644 > --- a/xen/arch/x86/hvm/event.c > +++ b/xen/arch/x86/hvm/event.c > @@ -88,55 +88,29 @@ static int hvm_event_traps(uint8_t sync, vm_event_request_t *req) > return 1; > } > > -static inline > -void hvm_event_cr(uint32_t reason, unsigned long value, > - unsigned long old, bool_t onchangeonly, bool_t sync) > +void hvm_event_cr(unsigned int index, unsigned long value, unsigned long old) > { > - if ( onchangeonly && value == old ) > + struct arch_domain *currad = ¤t->domain->arch; > + unsigned int ctrlreg_bitmask = monitor_ctrlreg_bitmask(index); > + > + if ( !(currad->monitor.write_ctrlreg_enabled & ctrlreg_bitmask) ) > return; > - else > + > + if ( !(currad->monitor.write_ctrlreg_onchangeonly & ctrlreg_bitmask) || > + value != old ) > { > vm_event_request_t req = { > - .reason = reason, > + .reason = VM_EVENT_REASON_WRITE_CTRLREG, > .vcpu_id = current->vcpu_id, > - .u.mov_to_cr.new_value = value, > - .u.mov_to_cr.old_value = old > + .u.write_ctrlreg.index = index, > + .u.write_ctrlreg.new_value = value, > + .u.write_ctrlreg.old_value = old > }; > > - hvm_event_traps(sync, &req); > + hvm_event_traps(currad->monitor.write_ctrlreg_sync & index, &req); Sorry, I've missed a required change here, the last line should now read "currad->monitor.write_ctrlreg_sync & ctrlreg_bitmask", of course. I'll fix this in V5, as well as address other remarks made on this patch. Thanks, Razvan