|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC PATCH V3 10/12] xen: Introduce monitor_op domctl
On Fri, Jan 30, 2015 at 8:58 AM, Razvan Cojocaru
<rcojocaru@xxxxxxxxxxxxxxx> wrote:
> On 01/29/2015 11:46 PM, Tamas K Lengyel wrote:
>> diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
>> index c7a0bde..3b58700 100644
>> --- a/xen/arch/x86/mm/p2m.c
>> +++ b/xen/arch/x86/mm/p2m.c
>> @@ -1445,15 +1445,6 @@ void p2m_vm_event_emulate_check(struct vcpu *v, const
>> vm_event_response_t *rsp)
>> }
>> }
>>
>> -void p2m_setup_introspection(struct domain *d)
>> -{
>> - if ( hvm_funcs.enable_msr_exit_interception )
>> - {
>> - d->arch.hvm_domain.introspection_enabled = 1;
>> - hvm_funcs.enable_msr_exit_interception(d);
>> - }
>> -}
>> -
>> bool_t p2m_mem_access_check(paddr_t gpa, unsigned long gla,
>> struct npfec npfec,
>> vm_event_request_t **req_ptr)
>
> I see that introspection_enabled is no longer assigned here ...
Introspection_enabled is getting deprecated in this patch and is moved
into the monitor_op domctl.
>
>> diff --git a/xen/common/vm_event.c b/xen/common/vm_event.c
>> index 0db899e..0b30750 100644
>> --- a/xen/common/vm_event.c
>> +++ b/xen/common/vm_event.c
>> @@ -617,16 +617,10 @@ int vm_event_domctl(struct domain *d,
>> xen_domctl_vm_event_op_t *vec,
>> switch( vec->op )
>> {
>> case XEN_DOMCTL_VM_EVENT_OP_MONITOR_ENABLE:
>> - case XEN_DOMCTL_VM_EVENT_OP_MONITOR_ENABLE_INTROSPECTION:
>> {
>> rc = vm_event_enable(d, vec, ved, _VPF_mem_access,
>> HVM_PARAM_MONITOR_RING_PFN,
>> mem_access_notification);
>> -
>> - if ( vec->op ==
>> XEN_DOMCTL_VM_EVENT_OP_MONITOR_ENABLE_INTROSPECTION
>> - && !rc )
>> - p2m_setup_introspection(d);
>> -
>> }
>> break;
>>
>> @@ -635,7 +629,6 @@ int vm_event_domctl(struct domain *d,
>> xen_domctl_vm_event_op_t *vec,
>> if ( ved->ring_page )
>> {
>> rc = vm_event_disable(d, ved);
>> - d->arch.hvm_domain.introspection_enabled = 0;
>> }
>> }
>> break;
>
> ... nor here. Patch 6/12 checks it but doesn't set it. Patch 5/12 sets
> it to 0 (which could account for the removal of the assignment in
> vm_event.c) but never to 1. A few important things depend on it being
> enabled: it becomes impossible to disable interception for a select set
> of MSRs, optimization for RET instructions emulation is disabled, and
> othere places in p2m.c makes use of the flag as well.
>
> Is there some place in the code, untouched by this series, where
> introspection_enabled is being set to 1?
It is moved into the monitor_op domctl when mov_to_msr trapping is
enabled. The reason of having introspection_enabled AFAIU was to
reenable trapping MSR's that were disabled shortly after boot. Thus,
an option field is present in the monitor_op when enabling mov_to_msr
trapping: extended_capture. Let me know if this still achieves the
same effect as before!
>
>> diff --git a/xen/include/public/vm_event.h b/xen/include/public/vm_event.h
>> index 8fba3d1b..a057608 100644
>> --- a/xen/include/public/vm_event.h
>> +++ b/xen/include/public/vm_event.h
>> @@ -67,7 +67,7 @@
>> #define VM_EVENT_REASON_MOV_TO_CR3 5
>> /* CR4 was updated */
>> #define VM_EVENT_REASON_MOV_TO_CR4 6
>> -/* An MSR was updated. Does NOT honour HVMPME_onchangeonly */
>> +/* An MSR was updated. */
>> #define VM_EVENT_REASON_MOV_TO_MSR 9
>> /* Debug operation executed (int3) */
>> #define VM_EVENT_REASON_SOFTWARE_BREAKPOINT 7
>>
>
> Does VM_EVENT_REASON_MOV_TO_MSR now honour HVMPME_onchangeonly?
It still doesn't but the information on what settings are available
for each event are now better described in public/domclt.h.
>
> Thanks,
> Razvan
Cheers,
Tamas
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |