[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v4 5/6] microcode: delete microcode pointer and size from microcode_info
Microcode pointer and size is passed to other cpu to parse microcode locally. Now, parsing microcode is done on one CPU. Others just find a suitable microcode stored in microcode_cache. Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx> --- xen/arch/x86/microcode.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/microcode.c b/xen/arch/x86/microcode.c index cca7b2c..0b435f4 100644 --- a/xen/arch/x86/microcode.c +++ b/xen/arch/x86/microcode.c @@ -190,9 +190,7 @@ DEFINE_PER_CPU(struct ucode_cpu_info, ucode_cpu_info); struct microcode_info { unsigned int cpu; - uint32_t buffer_size; int error; - char buffer[1]; }; static void __microcode_fini_cpu(unsigned int cpu) @@ -270,6 +268,7 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len) struct microcode_info *info; unsigned int cpu = smp_processor_id(); struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu); + void * buffer; if ( len != (uint32_t)len ) return -E2BIG; @@ -277,11 +276,12 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len) if ( microcode_ops == NULL ) return -EINVAL; - info = xmalloc_bytes(sizeof(*info) + len); - if ( info == NULL ) + info = xmalloc(struct microcode_info); + buffer = xmalloc_bytes(len); + if ( !info || !buffer ) return -ENOMEM; - ret = copy_from_guest(info->buffer, buf, len); + ret = copy_from_guest(buffer, buf, len); if ( ret != 0 ) { xfree(info); @@ -302,7 +302,7 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len) ret = microcode_ops->collect_cpu_info(cpu, &uci->cpu_sig); if ( likely(!ret) ) - ret = microcode_ops->cpu_request_microcode(cpu, info->buffer, len); + ret = microcode_ops->cpu_request_microcode(cpu, buffer, len); else __microcode_fini_cpu(cpu); @@ -314,7 +314,6 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len) return -EINVAL; } - info->buffer_size = len; info->error = 0; info->cpu = cpumask_first(&cpu_online_map); -- 1.8.3.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |