This series makes the hypervisor build with clang/LLVM again, after a certain amount of bit-rot. Since v1: - Changed an xmalloc+memset pair to xzalloc in the memset patch - Reworked the spinlock patch not to touch gcc builds - Added a patch to indirect all __section__ directives through a macro. - Commented up the ugly __attribute__((used)) change and moved it into the definition of __section().
Tim Deegan
2012-Apr-05 15:51 UTC
[PATCH 1 of 7 v2] xen: Add -Wno-unused-value to the clang CFLAGS
# HG changeset patch # User Tim Deegan <tim@xen.org> # Date 1333640955 -3600 # Node ID 7922a921d2034930780e41f1bc71d2c4ddb3b782 # Parent d690c7e896a26c54a5ab85458824059de72d5cba xen: Add -Wno-unused-value to the clang CFLAGS clang complains about a lot of functions and macros whose return value is unused. I started on patches to drop some functions'' return values and scatter (void)s around callers, but it was getting too messy. Just turn off the warning instead. Signed-off-by: Tim Deegan <tim@xen.org> diff -r d690c7e896a2 -r 7922a921d203 Config.mk --- a/Config.mk Thu Apr 05 11:06:03 2012 +0100 +++ b/Config.mk Thu Apr 05 16:49:15 2012 +0100 @@ -159,7 +159,8 @@ CFLAGS += -Wall -Wstrict-prototypes # Clang complains about macros that expand to ''if ( ( foo == bar ) ) ...'' # and is over-zealous with the printf format lint -CFLAGS-$(clang) += -Wno-parentheses -Wno-format +# and is a bit too fierce about unused return values +CFLAGS-$(clang) += -Wno-parentheses -Wno-format -Wno-unused-value $(call cc-option-add,HOSTCFLAGS,HOSTCC,-Wdeclaration-after-statement) $(call cc-option-add,CFLAGS,CC,-Wdeclaration-after-statement)
Tim Deegan
2012-Apr-05 15:51 UTC
[PATCH 2 of 7 v2] x86/mm: Another couple of comparisons of unsigned vars with < 0
# HG changeset patch # User Tim Deegan <tim@xen.org> # Date 1333640955 -3600 # Node ID 08612e81926857363618746fd01f9b08b7c3ac73 # Parent 7922a921d2034930780e41f1bc71d2c4ddb3b782 x86/mm: Another couple of comparisons of unsigned vars with < 0. Adding the explicit (unsigned) casts in case enums ever end up signed. Signed-off-by: Tim Deegan <tim@xen.org> diff -r 7922a921d203 -r 08612e819268 xen/arch/x86/mm/p2m.c --- a/xen/arch/x86/mm/p2m.c Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/arch/x86/mm/p2m.c Thu Apr 05 16:49:15 2012 +0100 @@ -1305,7 +1305,7 @@ int p2m_set_mem_access(struct domain *d, p2m->default_access, }; - if ( access >= HVMMEM_access_default || access < 0 ) + if ( (unsigned) access >= HVMMEM_access_default ) return -EINVAL; a = memaccess[access]; @@ -1367,7 +1367,7 @@ int p2m_get_mem_access(struct domain *d, if ( mfn_x(mfn) == INVALID_MFN ) return -ESRCH; - if ( a >= ARRAY_SIZE(memaccess) || a < 0 ) + if ( (unsigned) a >= ARRAY_SIZE(memaccess) ) return -ERANGE; *access = memaccess[a];
Tim Deegan
2012-Apr-05 15:51 UTC
[PATCH 3 of 7 v2] x86: fix logical ANDs used to mask bitfields
# HG changeset patch # User Tim Deegan <tim@xen.org> # Date 1333640955 -3600 # Node ID 4674ce03c62a3e916954fd445b4510ffe72e64f4 # Parent 08612e81926857363618746fd01f9b08b7c3ac73 x86: fix logical ANDs used to mask bitfields. Signed-off-by: Tim Deegan <tim@xen.org> Acked-by: Jan Beulich <jbeulich@suse.com> diff -r 08612e819268 -r 4674ce03c62a xen/arch/x86/hvm/svm/svm.c --- a/xen/arch/x86/hvm/svm/svm.c Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/arch/x86/hvm/svm/svm.c Thu Apr 05 16:49:15 2012 +0100 @@ -752,7 +752,7 @@ static void svm_lwp_interrupt(struct cpu ack_APIC_irq(); vlapic_set_irq( vcpu_vlapic(curr), - (curr->arch.hvm_svm.guest_lwp_cfg >> 40) && 0xff, + (curr->arch.hvm_svm.guest_lwp_cfg >> 40) & 0xff, 0); } diff -r 08612e819268 -r 4674ce03c62a xen/arch/x86/hvm/vmx/vmx.c --- a/xen/arch/x86/hvm/vmx/vmx.c Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/arch/x86/hvm/vmx/vmx.c Thu Apr 05 16:49:15 2012 +0100 @@ -1382,7 +1382,7 @@ void vmx_inject_extint(int trap) if ( nestedhvm_vcpu_in_guestmode(v) ) { pin_based_cntrl = __get_vvmcs(vcpu_nestedhvm(v).nv_vvmcx, PIN_BASED_VM_EXEC_CONTROL); - if ( pin_based_cntrl && PIN_BASED_EXT_INTR_MASK ) { + if ( pin_based_cntrl & PIN_BASED_EXT_INTR_MASK ) { nvmx_enqueue_n2_exceptions (v, INTR_INFO_VALID_MASK | (X86_EVENTTYPE_EXT_INTR<<8) | trap, HVM_DELIVER_NO_ERROR_CODE); @@ -1401,7 +1401,7 @@ void vmx_inject_nmi(void) if ( nestedhvm_vcpu_in_guestmode(v) ) { pin_based_cntrl = __get_vvmcs(vcpu_nestedhvm(v).nv_vvmcx, PIN_BASED_VM_EXEC_CONTROL); - if ( pin_based_cntrl && PIN_BASED_NMI_EXITING ) { + if ( pin_based_cntrl & PIN_BASED_NMI_EXITING ) { nvmx_enqueue_n2_exceptions (v, INTR_INFO_VALID_MASK | (X86_EVENTTYPE_NMI<<8) | TRAP_nmi, HVM_DELIVER_NO_ERROR_CODE);
# HG changeset patch # User Tim Deegan <tim@xen.org> # Date 1333640955 -3600 # Node ID a93381049790e4f8a02f2322851f78175c254c5b # Parent 4674ce03c62a3e916954fd445b4510ffe72e64f4 x86: fix memset(ptr, 0, sizeof ptr). Signed-off-by: Tim Deegan <tim@xen.org> diff -r 4674ce03c62a -r a93381049790 xen/arch/x86/cpu/mcheck/amd_f10.c --- a/xen/arch/x86/cpu/mcheck/amd_f10.c Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/arch/x86/cpu/mcheck/amd_f10.c Thu Apr 05 16:49:15 2012 +0100 @@ -73,9 +73,9 @@ amd_f10_handler(struct mc_info *mi, uint return NULL; } - memset(mc_ext, 0, sizeof(mc_ext)); + memset(mc_ext, 0, sizeof(*mc_ext)); mc_ext->common.type = MC_TYPE_EXTENDED; - mc_ext->common.size = sizeof(mc_ext); + mc_ext->common.size = sizeof(*mc_ext); mc_ext->mc_msrs = 3; mc_ext->mc_msr[0].reg = MSR_F10_MC4_MISC1; diff -r 4674ce03c62a -r a93381049790 xen/arch/x86/mm/p2m.c --- a/xen/arch/x86/mm/p2m.c Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/arch/x86/mm/p2m.c Thu Apr 05 16:49:15 2012 +0100 @@ -1232,11 +1232,10 @@ bool_t p2m_mem_access_check(unsigned lon } *req_ptr = NULL; - req = xmalloc(mem_event_request_t); + req = xzalloc(mem_event_request_t); if ( req ) { *req_ptr = req; - memset(req, 0, sizeof(req)); req->reason = MEM_EVENT_REASON_VIOLATION; /* Pause the current VCPU */
Tim Deegan
2012-Apr-05 15:51 UTC
[PATCH 5 of 7 v2] x86: don''t use .subsection when compiling with clang
# HG changeset patch # User Tim Deegan <tim@xen.org> # Date 1333640955 -3600 # Node ID 0908535327a5b01e49b69cd96db464be21ff3ee6 # Parent a93381049790e4f8a02f2322851f78175c254c5b x86: don''t use .subsection when compiling with clang LLVM''s assembler doesn''t support the .subsection directive, so put the out-of-line failure path in .fixup instead. Signed-off-by: Tim Deegan <tim@xen.org> diff -r a93381049790 -r 0908535327a5 xen/include/asm-x86/spinlock.h --- a/xen/include/asm-x86/spinlock.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/asm-x86/spinlock.h Thu Apr 05 16:49:15 2012 +0100 @@ -45,11 +45,19 @@ static always_inline int _raw_read_trylo asm volatile ( " lock; decl %0 \n" " jns 2f \n" +#ifdef __clang__ /* clang''s builtin assember can''t do .subsection */ + "1: .pushsection .fixup,\"ax\"\n" +#else "1: .subsection 1 \n" +#endif "2: lock; incl %0 \n" " decl %1 \n" " jmp 1b \n" +#ifdef __clang__ + " .popsection \n" +#else " .subsection 0 \n" +#endif : "=m" (rw->lock), "=r" (acquired) : "1" (1) : "memory" ); return acquired;
Tim Deegan
2012-Apr-05 15:51 UTC
[PATCH 6 of 7 v2] xen: define __section() and friends and use them for section annotations
# HG changeset patch # User Tim Deegan <tim@xen.org> # Date 1333640955 -3600 # Node ID fba1917c638768c0a4e45c507c29f1020e08dfc1 # Parent 0908535327a5b01e49b69cd96db464be21ff3ee6 xen: define __section() and friends and use them for section annotations. By itself this is just code-tidying, but it''s also useful for the following patch, which will adjust __section() for clang compiles. Signed-off-by: Tim Deegan <tim@xen.org> diff -r 0908535327a5 -r fba1917c6387 xen/include/asm-arm/cache.h --- a/xen/include/asm-arm/cache.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/asm-arm/cache.h Thu Apr 05 16:49:15 2012 +0100 @@ -7,7 +7,7 @@ #define L1_CACHE_SHIFT (CONFIG_ARM_L1_CACHE_SHIFT) #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) -#define __read_mostly __attribute__((__section__(".data.read_mostly"))) +#define __read_mostly __section(".data.read_mostly") #endif /* diff -r 0908535327a5 -r fba1917c6387 xen/include/asm-arm/percpu.h --- a/xen/include/asm-arm/percpu.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/asm-arm/percpu.h Thu Apr 05 16:49:15 2012 +0100 @@ -8,7 +8,7 @@ void percpu_init_areas(void); /* Separate out the type, so (int[3], foo) works. */ #define __DEFINE_PER_CPU(type, name, suffix) \ - __attribute__((__section__(".bss.percpu" #suffix))) \ + __section(".bss.percpu" #suffix) \ __typeof__(type) per_cpu_##name diff -r 0908535327a5 -r fba1917c6387 xen/include/asm-x86/cache.h --- a/xen/include/asm-x86/cache.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/asm-x86/cache.h Thu Apr 05 16:49:15 2012 +0100 @@ -10,6 +10,6 @@ #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT) #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) -#define __read_mostly __attribute__((__section__(".data.read_mostly"))) +#define __read_mostly __section(".data.read_mostly") #endif diff -r 0908535327a5 -r fba1917c6387 xen/include/asm-x86/percpu.h --- a/xen/include/asm-x86/percpu.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/asm-x86/percpu.h Thu Apr 05 16:49:15 2012 +0100 @@ -9,7 +9,7 @@ void percpu_init_areas(void); /* Separate out the type, so (int[3], foo) works. */ #define __DEFINE_PER_CPU(type, name, suffix) \ - __attribute__((__section__(".bss.percpu" #suffix))) \ + __section(".bss.percpu" #suffix) \ __typeof__(type) per_cpu_##name /* var is in discarded region: offset to particular copy we want */ diff -r 0908535327a5 -r fba1917c6387 xen/include/xen/compiler.h --- a/xen/include/xen/compiler.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/xen/compiler.h Thu Apr 05 16:49:15 2012 +0100 @@ -14,6 +14,10 @@ #define always_inline __inline__ __attribute__ ((always_inline)) #define noinline __attribute__((noinline)) +#define __section(s) __attribute__((__section__(s))) +#define __used_section(s) __attribute_used__ __attribute__((__section__(s))) +#define __text_section(s) __attribute__((__section__(s))) + #ifdef INIT_SECTIONS_ONLY /* * For sources indicated to have only init code, make sure even diff -r 0908535327a5 -r fba1917c6387 xen/include/xen/init.h --- a/xen/include/xen/init.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/xen/init.h Thu Apr 05 16:49:15 2012 +0100 @@ -7,20 +7,13 @@ * Mark functions and data as being only used at initialization * or exit time. */ -#define __init \ - __attribute__ ((__section__ (".init.text"))) -#define __exit \ - __attribute_used__ __attribute__ ((__section__(".exit.text"))) -#define __initdata \ - __attribute__ ((__section__ (".init.data"))) -#define __exitdata \ - __attribute_used__ __attribute__ ((__section__ (".exit.data"))) -#define __initsetup \ - __attribute_used__ __attribute__ ((__section__ (".init.setup"))) -#define __init_call(lvl) \ - __attribute_used__ __attribute__ ((__section__ (".initcall" lvl ".init"))) -#define __exit_call \ - __attribute_used__ __attribute__ ((__section__ (".exitcall.exit"))) +#define __init __text_section(".init.text") +#define __exit __text_section(".exit.text") +#define __initdata __section(".init.data") +#define __exitdata __used_section(".exit.data") +#define __initsetup __used_section(".init.setup") +#define __init_call(lvl) __used_section(".initcall" lvl ".init") +#define __exit_call __used_section(".exitcall.exit") /* These macros are used to mark some functions or * initialized data (doesn''t apply to uninitialized data) @@ -95,7 +88,7 @@ struct kernel_param { extern struct kernel_param __setup_start, __setup_end; #define __setup_str static __initdata __attribute__((__aligned__(1))) char -#define __kparam static __attribute_used__ __initsetup struct kernel_param +#define __kparam static __initsetup struct kernel_param #define custom_param(_name, _var) \ __setup_str __setup_str_##_var[] = _name; \ diff -r 0908535327a5 -r fba1917c6387 xen/include/xen/spinlock.h --- a/xen/include/xen/spinlock.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/xen/spinlock.h Thu Apr 05 16:49:15 2012 +0100 @@ -77,8 +77,8 @@ struct lock_profile_qhead { #define _LOCK_PROFILE(name) { 0, #name, &name, 0, 0, 0, 0, 0 } #define _LOCK_PROFILE_PTR(name) \ - static struct lock_profile *__lock_profile_##name __attribute_used__ \ - __attribute__ ((__section__(".lockprofile.data"))) = \ + static struct lock_profile *__lock_profile_##name \ + __used_section(".lockprofile.data") = \ &__lock_profile_data_##name #define _SPIN_LOCK_UNLOCKED(x) { _RAW_SPIN_LOCK_UNLOCKED, 0xfffu, 0, \ _LOCK_DEBUG, x } diff -r 0908535327a5 -r fba1917c6387 xen/include/xsm/xsm.h --- a/xen/include/xsm/xsm.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/xsm/xsm.h Thu Apr 05 16:49:15 2012 +0100 @@ -44,7 +44,7 @@ extern xsm_initcall_t __xsm_initcall_sta #define xsm_initcall(fn) \ static xsm_initcall_t __initcall_##fn \ - __attribute_used__ __attribute__((__section__(".xsm_initcall.init"))) = fn + __used_section(".xsm_initcall.init") = fn struct xsm_operations { void (*security_domaininfo) (struct domain *d,
Tim Deegan
2012-Apr-05 15:51 UTC
[PATCH 7 of 7 v2] x86: explicitly mark __initdata variables as used when building with clang
# HG changeset patch # User Tim Deegan <tim@xen.org> # Date 1333640955 -3600 # Node ID 51174f350092962ad36e406adf7ae1f173330a37 # Parent fba1917c638768c0a4e45c507c29f1020e08dfc1 x86: explicitly mark __initdata variables as used when building with clang. This stops LLVM from replacing it with a different, auto-generated variable as part of an optimization. (The auto-generated variable ends up in the normal data section.) Remove stray __read_mostly annotations on declarations that this unmasked. Signed-off-by: Tim Deegan <tim@xen.org> diff -r fba1917c6387 -r 51174f350092 xen/arch/x86/oprofile/op_x86_model.h --- a/xen/arch/x86/oprofile/op_x86_model.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/arch/x86/oprofile/op_x86_model.h Thu Apr 05 16:49:15 2012 +0100 @@ -53,6 +53,6 @@ extern struct op_x86_model_spec const op void arch_perfmon_setup_counters(void); extern int ppro_has_global_ctrl; -extern struct op_x86_model_spec const *__read_mostly model; +extern struct op_x86_model_spec const *model; #endif /* OP_X86_MODEL_H */ diff -r fba1917c6387 -r 51174f350092 xen/include/acpi/cpufreq/cpufreq.h --- a/xen/include/acpi/cpufreq/cpufreq.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/acpi/cpufreq/cpufreq.h Thu Apr 05 16:49:15 2012 +0100 @@ -22,7 +22,7 @@ DECLARE_PER_CPU(spinlock_t, cpufreq_statistic_lock); -extern bool_t __read_mostly cpufreq_verbose; +extern bool_t cpufreq_verbose; struct cpufreq_governor; diff -r fba1917c6387 -r 51174f350092 xen/include/xen/compiler.h --- a/xen/include/xen/compiler.h Thu Apr 05 16:49:15 2012 +0100 +++ b/xen/include/xen/compiler.h Thu Apr 05 16:49:15 2012 +0100 @@ -14,7 +14,13 @@ #define always_inline __inline__ __attribute__ ((always_inline)) #define noinline __attribute__((noinline)) +#ifdef __clang__ +/* Clang can replace some vars with new automatic ones that go in .data; + * mark all explicit-segment vars ''used'' to prevent that. */ +#define __section(s) __attribute_used__ __attribute__((__section__(s))) +#else #define __section(s) __attribute__((__section__(s))) +#endif #define __used_section(s) __attribute_used__ __attribute__((__section__(s))) #define __text_section(s) __attribute__((__section__(s)))
Jan Beulich
2012-Apr-10 07:41 UTC
Re: [PATCH 4 of 7 v2] x86: fix memset(ptr, 0, sizeof ptr)
>>> On 05.04.12 at 17:51, Tim Deegan <tim@xen.org> wrote: > # HG changeset patch > # User Tim Deegan <tim@xen.org> > # Date 1333640955 -3600 > # Node ID a93381049790e4f8a02f2322851f78175c254c5b > # Parent 4674ce03c62a3e916954fd445b4510ffe72e64f4 > x86: fix memset(ptr, 0, sizeof ptr). > > Signed-off-by: Tim Deegan <tim@xen.org>Acked-by: Jan Beulich <jbeulich@suse.com>> diff -r 4674ce03c62a -r a93381049790 xen/arch/x86/cpu/mcheck/amd_f10.c > --- a/xen/arch/x86/cpu/mcheck/amd_f10.c Thu Apr 05 16:49:15 2012 +0100 > +++ b/xen/arch/x86/cpu/mcheck/amd_f10.c Thu Apr 05 16:49:15 2012 +0100 > @@ -73,9 +73,9 @@ amd_f10_handler(struct mc_info *mi, uint > return NULL; > } > > - memset(mc_ext, 0, sizeof(mc_ext)); > + memset(mc_ext, 0, sizeof(*mc_ext)); > mc_ext->common.type = MC_TYPE_EXTENDED; > - mc_ext->common.size = sizeof(mc_ext); > + mc_ext->common.size = sizeof(*mc_ext); > mc_ext->mc_msrs = 3; > > mc_ext->mc_msr[0].reg = MSR_F10_MC4_MISC1; > diff -r 4674ce03c62a -r a93381049790 xen/arch/x86/mm/p2m.c > --- a/xen/arch/x86/mm/p2m.c Thu Apr 05 16:49:15 2012 +0100 > +++ b/xen/arch/x86/mm/p2m.c Thu Apr 05 16:49:15 2012 +0100 > @@ -1232,11 +1232,10 @@ bool_t p2m_mem_access_check(unsigned lon > } > > *req_ptr = NULL; > - req = xmalloc(mem_event_request_t); > + req = xzalloc(mem_event_request_t); > if ( req ) > { > *req_ptr = req; > - memset(req, 0, sizeof(req)); > req->reason = MEM_EVENT_REASON_VIOLATION; > > /* Pause the current VCPU */ > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel
Jan Beulich
2012-Apr-10 07:43 UTC
Re: [PATCH 5 of 7 v2] x86: don''t use .subsection when compiling with clang
>>> On 05.04.12 at 17:51, Tim Deegan <tim@xen.org> wrote: > # HG changeset patch > # User Tim Deegan <tim@xen.org> > # Date 1333640955 -3600 > # Node ID 0908535327a5b01e49b69cd96db464be21ff3ee6 > # Parent a93381049790e4f8a02f2322851f78175c254c5b > x86: don''t use .subsection when compiling with clang > > LLVM''s assembler doesn''t support the .subsection directive, so put > the out-of-line failure path in .fixup instead.Given that it''s a single place only, addressing this inline rather than creating a proper abstraction is probably fine, so ...> Signed-off-by: Tim Deegan <tim@xen.org>Acked-by: Jan Beulich <jbeulich@suse.com>> diff -r a93381049790 -r 0908535327a5 xen/include/asm-x86/spinlock.h > --- a/xen/include/asm-x86/spinlock.h Thu Apr 05 16:49:15 2012 +0100 > +++ b/xen/include/asm-x86/spinlock.h Thu Apr 05 16:49:15 2012 +0100 > @@ -45,11 +45,19 @@ static always_inline int _raw_read_trylo > asm volatile ( > " lock; decl %0 \n" > " jns 2f \n" > +#ifdef __clang__ /* clang''s builtin assember can''t do .subsection */ > + "1: .pushsection .fixup,\"ax\"\n" > +#else > "1: .subsection 1 \n" > +#endif > "2: lock; incl %0 \n" > " decl %1 \n" > " jmp 1b \n" > +#ifdef __clang__ > + " .popsection \n" > +#else > " .subsection 0 \n" > +#endif > : "=m" (rw->lock), "=r" (acquired) : "1" (1) : "memory" ); > > return acquired; > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel
Jan Beulich
2012-Apr-10 07:46 UTC
Re: [PATCH 0 of 7 v2] Make xen build with clang/LLVM again
>>> On 05.04.12 at 17:51, Tim Deegan <tim@xen.org> wrote: > This series makes the hypervisor build with clang/LLVM again, > after a certain amount of bit-rot.I ack-ed the ones I uesfully can; the rest looks good to me too but may need an ack from Keir. Jan> Since v1: > - Changed an xmalloc+memset pair to xzalloc in the memset patch > - Reworked the spinlock patch not to touch gcc builds > - Added a patch to indirect all __section__ directives through a macro. > - Commented up the ugly __attribute__((used)) change and moved it > into the definition of __section(). > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel
Keir Fraser
2012-Apr-10 09:08 UTC
Re: [PATCH 0 of 7 v2] Make xen build with clang/LLVM again
On 10/04/2012 08:46, "Jan Beulich" <JBeulich@suse.com> wrote:>>>> On 05.04.12 at 17:51, Tim Deegan <tim@xen.org> wrote: >> This series makes the hypervisor build with clang/LLVM again, >> after a certain amount of bit-rot. > > I ack-ed the ones I uesfully can; the rest looks good to me too but > may need an ack from Keir.I acked already, I think, but just in case Acked-by: Keir Fraser <keir@xen.org>> Jan > >> Since v1: >> - Changed an xmalloc+memset pair to xzalloc in the memset patch >> - Reworked the spinlock patch not to touch gcc builds >> - Added a patch to indirect all __section__ directives through a macro. >> - Commented up the ugly __attribute__((used)) change and moved it >> into the definition of __section(). >> >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@lists.xen.org >> http://lists.xen.org/xen-devel > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel
Christoph Egger
2012-Apr-10 10:08 UTC
Re: [PATCH 4 of 7 v2] x86: fix memset(ptr, 0, sizeof ptr)
On 04/05/12 17:51, Tim Deegan wrote:> # HG changeset patch > # User Tim Deegan<tim@xen.org> > # Date 1333640955 -3600 > # Node ID a93381049790e4f8a02f2322851f78175c254c5b > # Parent 4674ce03c62a3e916954fd445b4510ffe72e64f4 > x86: fix memset(ptr, 0, sizeof ptr). > > Signed-off-by: Tim Deegan<tim@xen.org>Acked-by: Christoph Egger <Christoph.Egger@amd.com>> > diff -r 4674ce03c62a -r a93381049790 xen/arch/x86/cpu/mcheck/amd_f10.c > --- a/xen/arch/x86/cpu/mcheck/amd_f10.c Thu Apr 05 16:49:15 2012 +0100 > +++ b/xen/arch/x86/cpu/mcheck/amd_f10.c Thu Apr 05 16:49:15 2012 +0100 > @@ -73,9 +73,9 @@ amd_f10_handler(struct mc_info *mi, uint > return NULL; > } > > - memset(mc_ext, 0, sizeof(mc_ext)); > + memset(mc_ext, 0, sizeof(*mc_ext)); > mc_ext->common.type = MC_TYPE_EXTENDED; > - mc_ext->common.size = sizeof(mc_ext); > + mc_ext->common.size = sizeof(*mc_ext); > mc_ext->mc_msrs = 3; > > mc_ext->mc_msr[0].reg = MSR_F10_MC4_MISC1; > diff -r 4674ce03c62a -r a93381049790 xen/arch/x86/mm/p2m.c > --- a/xen/arch/x86/mm/p2m.c Thu Apr 05 16:49:15 2012 +0100 > +++ b/xen/arch/x86/mm/p2m.c Thu Apr 05 16:49:15 2012 +0100 > @@ -1232,11 +1232,10 @@ bool_t p2m_mem_access_check(unsigned lon > } > > *req_ptr = NULL; > - req = xmalloc(mem_event_request_t); > + req = xzalloc(mem_event_request_t); > if ( req ) > { > *req_ptr = req; > - memset(req, 0, sizeof(req)); > req->reason = MEM_EVENT_REASON_VIOLATION; > > /* Pause the current VCPU */ > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel >-- ---to satisfy European Law for business letters: Advanced Micro Devices GmbH Einsteinring 24, 85689 Dornach b. Muenchen Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen Registergericht Muenchen, HRB Nr. 43632