[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v3 08/22] x86: use xvmalloc() for extended context buffer allocations
This is in preparation for the buffer sizes exceeding a page's worth of space, as will happen with AMX as well as Architectural LBR. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- v2: New. --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -30,6 +30,7 @@ #include <xsm/xsm.h> #include <xen/iommu.h> #include <xen/vm_event.h> +#include <xen/xvmalloc.h> #include <public/vm_event.h> #include <asm/mem_sharing.h> #include <asm/xstate.h> @@ -380,7 +381,7 @@ long arch_do_domctl( goto sethvmcontext_out; ret = -ENOMEM; - if ( (c.data = xmalloc_bytes(c.size)) == NULL ) + if ( (c.data = xvmalloc_bytes(c.size)) == NULL ) goto sethvmcontext_out; ret = -EFAULT; @@ -392,7 +393,7 @@ long arch_do_domctl( domain_unpause(d); sethvmcontext_out: - xfree(c.data); + xvfree(c.data); break; } @@ -422,7 +423,7 @@ long arch_do_domctl( /* Allocate our own marshalling buffer */ ret = -ENOMEM; - if ( (c.data = xmalloc_bytes(c.size)) == NULL ) + if ( (c.data = xvmalloc_bytes(c.size)) == NULL ) goto gethvmcontext_out; domain_pause(d); @@ -435,7 +436,7 @@ long arch_do_domctl( gethvmcontext_out: copyback = true; - xfree(c.data); + xvfree(c.data); break; } @@ -953,7 +954,7 @@ long arch_do_domctl( if ( !ret && size > PV_XSAVE_HDR_SIZE ) { unsigned int xsave_size = size - PV_XSAVE_HDR_SIZE; - void *xsave_area = xmalloc_bytes(xsave_size); + void *xsave_area = xvmalloc_bytes(xsave_size); if ( !xsave_area ) { @@ -967,7 +968,7 @@ long arch_do_domctl( if ( copy_to_guest_offset(evc->buffer, offset, xsave_area, xsave_size) ) ret = -EFAULT; - xfree(xsave_area); + xvfree(xsave_area); } vcpu_unpause(v); @@ -987,7 +988,7 @@ long arch_do_domctl( evc->size > PV_XSAVE_SIZE(xfeature_mask) ) goto vcpuextstate_out; - receive_buf = xmalloc_bytes(evc->size); + receive_buf = xvmalloc_bytes(evc->size); if ( !receive_buf ) { ret = -ENOMEM; @@ -997,7 +998,7 @@ long arch_do_domctl( offset, evc->size) ) { ret = -EFAULT; - xfree(receive_buf); + xvfree(receive_buf); goto vcpuextstate_out; } @@ -1015,7 +1016,7 @@ long arch_do_domctl( ret = 0; if ( ret ) { - xfree(receive_buf); + xvfree(receive_buf); goto vcpuextstate_out; } @@ -1043,7 +1044,7 @@ long arch_do_domctl( vcpu_unpause(v); } - xfree(receive_buf); + xvfree(receive_buf); } #undef PV_XSAVE_HDR_SIZE --- a/xen/arch/x86/hvm/save.c +++ b/xen/arch/x86/hvm/save.c @@ -23,6 +23,7 @@ #include <xen/guest_access.h> #include <xen/softirq.h> #include <xen/version.h> +#include <xen/xvmalloc.h> #include <asm/hvm/support.h> @@ -154,7 +155,7 @@ int hvm_save_one(struct domain *d, unsig else v = d->vcpu[instance]; ctxt.size = hvm_sr_handlers[typecode].size; - ctxt.data = xmalloc_bytes(ctxt.size); + ctxt.data = xvmalloc_bytes(ctxt.size); if ( !ctxt.data ) return -ENOMEM; @@ -200,7 +201,7 @@ int hvm_save_one(struct domain *d, unsig else domain_unpause(d); - xfree(ctxt.data); + xvfree(ctxt.data); return rv; }
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |