From mboxrd@z Thu Jan 1 00:00:00 1970 From: Razvan Cojocaru Subject: Re: [PATCH RFC 5/9] xen: Support for VMCALL mem_events Date: Wed, 02 Jul 2014 19:23:56 +0300 Message-ID: <53B4321C.1080407@bitdefender.com> References: <1404308041-15461-1-git-send-email-rcojocaru@bitdefender.com> <1404308041-15461-5-git-send-email-rcojocaru@bitdefender.com> <53B445CF020000780001FB25@mail.emea.novell.com> <53B42B4D.3090503@bitdefender.com> <53B44B4C020000780001FBA7@mail.emea.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <53B44B4C020000780001FBA7@mail.emea.novell.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: Jan Beulich Cc: tim@xen.org, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 07/02/2014 07:11 PM, Jan Beulich wrote: >>>> On 02.07.14 at 17:54, wrote: >>>> --- a/xen/arch/x86/hvm/vmx/vmx.c >>>> +++ b/xen/arch/x86/hvm/vmx/vmx.c >>>> @@ -2880,8 +2880,21 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs) >>>> case EXIT_REASON_VMCALL: >>>> { >>>> int rc; >>>> + unsigned long eax = regs->eax; >>>> + >>>> HVMTRACE_1D(VMMCALL, regs->eax); >>>> - rc = hvm_do_hypercall(regs); >>>> + >>>> + if ( regs->eax != 0x494e5452 ) /* Introcore magic */ >>> >>> Urgh?! >> >> The magic constant is INTR, and it's used to differentiate between >> "regular" and induced VMCALLs. Our application sets EAX up like that to >> tell the situations apart. > > But that needs (a) a #define and (b) an explanation. > > Plus - what keeps code outside of your app to invoke this? Unfortunately, nothing. It can be set outside our application. > >>>> --- a/xen/include/public/hvm/params.h >>>> +++ b/xen/include/public/hvm/params.h >>>> @@ -148,6 +148,8 @@ >>>> #define HVM_PARAM_IOREQ_SERVER_PFN 32 >>>> #define HVM_PARAM_NR_IOREQ_SERVER_PAGES 33 >>>> >>>> -#define HVM_NR_PARAMS 34 >>>> +#define HVM_PARAM_MEMORY_EVENT_VMCALL 34 >>> >>> So why does this (used only as an argument to >>> hvm_memory_event_traps()) need to be settable? I guess the patch >>> description is just too brief. >> >> Settable? > > You must have a reason to make this a HVM param. That reason is > what I'm asking for. I see. I want to be able to enable / disable this type of events. I.e.: if (flags & ENABLE_VMCALL) xc_set_hvm_param(xci, domain, HVM_PARAM_MEMORY_EVENT_VMCALL, HVMPME_mode_sync); from the application, via libxc. Thanks, Razvan Cojocaru