[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.5 v9 06/19] xen: Relocate mem_event_op domctl and access_op memop into common.
>>> On 24.09.14 at 11:09, <tklengyel@xxxxxxxxxxxxx> wrote: > Signed-off-by: Tamas K Lengyel <tklengyel@xxxxxxxxxxxxx> for the non-ARM, non-x86/mm parts Acked-by: Jan Beulich <jbeulich@xxxxxxxx> But you failed to Cc relevant people for those other parts (and you Cc-ed too few for the common code changes). Jan > --- > v9: Rename abstracted function to p2m_setup_introspection. > v8: Move the new enable_msr_exit_interception test into the p2m layer. > v6: Grouping style fix of #includes in common/memory.c. > v5: Move memop compat into common as well. > Position domctl in switch relative to the domctl #. > v4: Don't remove memop handling from x86_64/compat and style fixes. > --- > xen/arch/x86/domctl.c | 8 -------- > xen/arch/x86/mm/p2m.c | 9 +++++++++ > xen/arch/x86/x86_64/compat/mm.c | 4 ---- > xen/arch/x86/x86_64/mm.c | 4 ---- > xen/common/compat/memory.c | 5 +++++ > xen/common/domctl.c | 7 +++++++ > xen/common/mem_event.c | 10 ++++------ > xen/common/memory.c | 9 +++++++-- > xen/include/asm-arm/p2m.h | 6 ++++++ > xen/include/asm-x86/p2m.h | 3 +++ > 10 files changed, 41 insertions(+), 24 deletions(-) > > diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c > index 8731e7f..ec77555 100644 > --- a/xen/arch/x86/domctl.c > +++ b/xen/arch/x86/domctl.c > @@ -1131,14 +1131,6 @@ long arch_do_domctl( > } > break; > > - case XEN_DOMCTL_mem_event_op: > - { > - ret = mem_event_domctl(d, &domctl->u.mem_event_op, > - guest_handle_cast(u_domctl, void)); > - copyback = 1; > - } > - break; > - > case XEN_DOMCTL_mem_sharing_op: > { > ret = mem_sharing_domctl(d, &domctl->u.mem_sharing_op); > diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c > index 08adaac..728e4eb 100644 > --- a/xen/arch/x86/mm/p2m.c > +++ b/xen/arch/x86/mm/p2m.c > @@ -1436,6 +1436,15 @@ void p2m_mem_event_emulate_check(struct vcpu *v, const > mem_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, > mem_event_request_t **req_ptr) > diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c > index c079702..54f25b7 100644 > --- a/xen/arch/x86/x86_64/compat/mm.c > +++ b/xen/arch/x86/x86_64/compat/mm.c > @@ -198,10 +198,6 @@ int compat_arch_memory_op(unsigned long cmd, > XEN_GUEST_HANDLE_PARAM(void) arg) > break; > } > > - case XENMEM_access_op: > - rc = mem_access_memop(cmd, guest_handle_cast(arg, > xen_mem_access_op_t)); > - break; > - > case XENMEM_sharing_op: > { > xen_mem_sharing_op_t mso; > diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c > index cce1406..8e5a1a1 100644 > --- a/xen/arch/x86/x86_64/mm.c > +++ b/xen/arch/x86/x86_64/mm.c > @@ -995,10 +995,6 @@ long subarch_memory_op(unsigned long cmd, > XEN_GUEST_HANDLE_PARAM(void) arg) > break; > } > > - case XENMEM_access_op: > - rc = mem_access_memop(cmd, guest_handle_cast(arg, > xen_mem_access_op_t)); > - break; > - > case XENMEM_sharing_op: > { > xen_mem_sharing_op_t mso; > diff --git a/xen/common/compat/memory.c b/xen/common/compat/memory.c > index 25dc016..43d02bc 100644 > --- a/xen/common/compat/memory.c > +++ b/xen/common/compat/memory.c > @@ -4,6 +4,7 @@ > #include <xen/guest_access.h> > #include <xen/sched.h> > #include <xen/event.h> > +#include <xen/mem_access.h> > #include <asm/current.h> > #include <compat/memory.h> > > @@ -381,6 +382,10 @@ int compat_memory_op(unsigned int cmd, > XEN_GUEST_HANDLE_PARAM(void) compat) > break; > } > > + case XENMEM_access_op: > + rc = mem_access_memop(cmd, guest_handle_cast(compat, > xen_mem_access_op_t)); > + break; > + > case XENMEM_add_to_physmap_batch: > start_extent = end_extent; > break; > diff --git a/xen/common/domctl.c b/xen/common/domctl.c > index 329e535..fd8dd44 100644 > --- a/xen/common/domctl.c > +++ b/xen/common/domctl.c > @@ -24,6 +24,7 @@ > #include <xen/bitmap.h> > #include <xen/paging.h> > #include <xen/hypercall.h> > +#include <xen/mem_event.h> > #include <asm/current.h> > #include <asm/irq.h> > #include <asm/page.h> > @@ -1111,6 +1112,12 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) > u_domctl) > } > break; > > + case XEN_DOMCTL_mem_event_op: > + ret = mem_event_domctl(d, &op->u.mem_event_op, > + guest_handle_cast(u_domctl, void)); > + copyback = 1; > + break; > + > case XEN_DOMCTL_disable_migrate: > { > d->disable_migrate = op->u.disable_migrate.disable; > diff --git a/xen/common/mem_event.c b/xen/common/mem_event.c > index 9f1a1b0..4338826 100644 > --- a/xen/common/mem_event.c > +++ b/xen/common/mem_event.c > @@ -623,12 +623,10 @@ int mem_event_domctl(struct domain *d, > xen_domctl_mem_event_op_t *mec, > HVM_PARAM_ACCESS_RING_PFN, > mem_access_notification); > > - if ( mec->op != XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE && > - rc == 0 && hvm_funcs.enable_msr_exit_interception ) > - { > - d->arch.hvm_domain.introspection_enabled = 1; > - hvm_funcs.enable_msr_exit_interception(d); > - } > + if ( mec->op == > XEN_DOMCTL_MEM_EVENT_OP_ACCESS_ENABLE_INTROSPECTION > + && !rc ) > + p2m_setup_introspection(d); > + > } > break; > > diff --git a/xen/common/memory.c b/xen/common/memory.c > index bad50cb..cc36e39 100644 > --- a/xen/common/memory.c > +++ b/xen/common/memory.c > @@ -21,13 +21,14 @@ > #include <xen/errno.h> > #include <xen/tmem.h> > #include <xen/tmem_xen.h> > +#include <xen/numa.h> > +#include <xen/mem_access.h> > +#include <xen/trace.h> > #include <asm/current.h> > #include <asm/hardirq.h> > #include <asm/p2m.h> > -#include <xen/numa.h> > #include <public/memory.h> > #include <xsm/xsm.h> > -#include <xen/trace.h> > > struct memop_args { > /* INPUT */ > @@ -939,6 +940,10 @@ long do_memory_op(unsigned long cmd, > XEN_GUEST_HANDLE_PARAM(void) arg) > break; > } > > + case XENMEM_access_op: > + rc = mem_access_memop(cmd, guest_handle_cast(arg, > xen_mem_access_op_t)); > + break; > + > case XENMEM_claim_pages: > if ( copy_from_guest(&reservation, arg, 1) ) > return -EFAULT; > diff --git a/xen/include/asm-arm/p2m.h b/xen/include/asm-arm/p2m.h > index 4d5570a..10bf111 100644 > --- a/xen/include/asm-arm/p2m.h > +++ b/xen/include/asm-arm/p2m.h > @@ -77,6 +77,12 @@ void p2m_mem_event_emulate_check(struct vcpu *v, > /* Not supported on ARM. */ > }; > > +static inline > +void p2m_setup_introspection(struct domain *d) > +{ > + /* No special setup on ARM. */ > +} > + > #define p2m_is_foreign(_t) ((_t) == p2m_map_foreign) > #define p2m_is_ram(_t) ((_t) == p2m_ram_rw || (_t) == p2m_ram_ro) > > diff --git a/xen/include/asm-x86/p2m.h b/xen/include/asm-x86/p2m.h > index 1de493e..a0e1704 100644 > --- a/xen/include/asm-x86/p2m.h > +++ b/xen/include/asm-x86/p2m.h > @@ -589,6 +589,9 @@ int p2m_get_mem_access(struct domain *d, unsigned long > pfn, > void p2m_mem_event_emulate_check(struct vcpu *v, > const mem_event_response_t *rsp); > > +/* Enable arch specific introspection options (such as MSR interception). > */ > +void p2m_setup_introspection(struct domain *d); > + > /* > * Internal functions, only called by other p2m code > */ > -- > 2.1.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |