pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/sysutils/xenkernel46



Module Name:    pkgsrc
Committed By:   joerg
Date:           Tue Feb 14 21:38:34 UTC 2017

Modified Files:
        pkgsrc/sysutils/xenkernel46: Makefile distinfo
Added Files:
        pkgsrc/sysutils/xenkernel46/patches: patch-tools_xentrace_xenalyze.c
            patch-xen_arch_x86_mm.c patch-xen_arch_x86_xen.lds.S
            patch-xen_include_asm-x86_spinlock.h

Log Message:
Disable a couple more warnings for the clang build and merge some
patches from Git to fix another set of issues.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 pkgsrc/sysutils/xenkernel46/Makefile
cvs rdiff -u -r1.5 -r1.6 pkgsrc/sysutils/xenkernel46/distinfo
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/sysutils/xenkernel46/patches/patch-tools_xentrace_xenalyze.c \
    pkgsrc/sysutils/xenkernel46/patches/patch-xen_arch_x86_mm.c \
    pkgsrc/sysutils/xenkernel46/patches/patch-xen_arch_x86_xen.lds.S \
    pkgsrc/sysutils/xenkernel46/patches/patch-xen_include_asm-x86_spinlock.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/sysutils/xenkernel46/Makefile
diff -u pkgsrc/sysutils/xenkernel46/Makefile:1.8 pkgsrc/sysutils/xenkernel46/Makefile:1.9
--- pkgsrc/sysutils/xenkernel46/Makefile:1.8    Sun Jan  1 14:43:59 2017
+++ pkgsrc/sysutils/xenkernel46/Makefile        Tue Feb 14 21:38:34 2017
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.8 2017/01/01 14:43:59 wiz Exp $
+# $NetBSD: Makefile,v 1.9 2017/02/14 21:38:34 joerg Exp $
 
 VERSION=       4.6.3
 DISTNAME=      xen-${VERSION}
@@ -34,7 +34,10 @@ MESSAGE_SUBST+=              XENKERNELDIR=${XENKERNE
 EXTRA_CFLAGS+= -Qunused-arguments -no-integrated-as -Wno-error=format \
                -Wno-error=parentheses-equality -Wno-error=enum-conversion \
                -Wno-error=unused-function -Wno-error=unused-const-variable \
-               -Wno-error=ignored-attributes -Wno-error=initializer-overrides
+               -Wno-error=ignored-attributes -Wno-error=constant-conversion \
+               -Wno-error=address-of-packed-member \
+               -Wno-error=initializer-overrides \
+               -Wno-error=tautological-compare
 .endif
 
 MAKE_ENV+=     EXTRA_CFLAGS=${EXTRA_CFLAGS:Q}

Index: pkgsrc/sysutils/xenkernel46/distinfo
diff -u pkgsrc/sysutils/xenkernel46/distinfo:1.5 pkgsrc/sysutils/xenkernel46/distinfo:1.6
--- pkgsrc/sysutils/xenkernel46/distinfo:1.5    Wed Dec 21 15:36:39 2016
+++ pkgsrc/sysutils/xenkernel46/distinfo        Tue Feb 14 21:38:34 2017
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.5 2016/12/21 15:36:39 bouyer Exp $
+$NetBSD: distinfo,v 1.6 2017/02/14 21:38:34 joerg Exp $
 
 SHA1 (xen-4.6.3.tar.gz) = 2aa59d0a05a6c5ac7f336f2069c66a54f95c4349
 RMD160 (xen-4.6.3.tar.gz) = 2798bd888ee001a4829165e55feb705a86af4f74
@@ -20,9 +20,13 @@ SHA1 (patch-XSA-200) = 37254653e3f9016de
 SHA1 (patch-XSA-202) = 52cb1da3bb078f6b7574f606b8c9cacdf24f6518
 SHA1 (patch-XSA-203) = 43310c4e95e0070a24e6a847502e057b9e0eefe9
 SHA1 (patch-XSA-204) = 05defb8d99976a712024d35a81f4dde5627107d9
+SHA1 (patch-tools_xentrace_xenalyze.c) = ab973cb7090dc90867dcddf9ab8965f8f2f36c46
 SHA1 (patch-xen_Makefile) = be3f4577a205b23187b91319f91c50720919f70b
 SHA1 (patch-xen_arch_x86_Rules.mk) = 7b0894ba7311edb02118a021671f304cf3872154
+SHA1 (patch-xen_arch_x86_mm.c) = 3c1435fa5db6a0f542e5efe726997f262fa04041
+SHA1 (patch-xen_arch_x86_xen.lds.S) = 58a890c404ca4f86ccfb58cf5a83b07e235034fc
 SHA1 (patch-xen_common_page__alloc.c) = c4d606de1cada8cf89b5abd16efada3d58c68a03
 SHA1 (patch-xen_drivers_passthrough_vtd_x86_ats.c) = f72fd4bb2aeeaeb0b167031dfd5498e73666aa4e
 SHA1 (patch-xen_include_asm-x86_current.h) = 8a21577be06383c0c7f53c15ba828f77fb6314ad
+SHA1 (patch-xen_include_asm-x86_spinlock.h) = a78fe84c87632f0524af255f173676732418a75e
 SHA1 (patch-xen_include_xen_lib.h) = 82a219b7d9c5deaa2b8e0adc774f60395adc4815

Added files:

Index: pkgsrc/sysutils/xenkernel46/patches/patch-tools_xentrace_xenalyze.c
diff -u /dev/null pkgsrc/sysutils/xenkernel46/patches/patch-tools_xentrace_xenalyze.c:1.1
--- /dev/null   Tue Feb 14 21:38:34 2017
+++ pkgsrc/sysutils/xenkernel46/patches/patch-tools_xentrace_xenalyze.c Tue Feb 14 21:38:34 2017
@@ -0,0 +1,264 @@
+$NetBSD: patch-tools_xentrace_xenalyze.c,v 1.1 2017/02/14 21:38:34 joerg Exp $
+
+Based on 28ab9f3d0e7cbb22f5ce77500af7873f6e2d3c59.
+
+--- tools/xentrace/xenalyze.c.orig     2016-06-20 12:08:22.000000000 +0000
++++ tools/xentrace/xenalyze.c
+@@ -509,7 +509,6 @@ struct {
+ #define HVM_VMX_EXIT_REASON_MAX (EXIT_REASON_XSETBV+1)
+ 
+ char * hvm_vmx_exit_reason_name[HVM_VMX_EXIT_REASON_MAX] = {
+-    [0] = "NONE",
+     [EXIT_REASON_EXCEPTION_NMI]="EXCEPTION_NMI",
+     [EXIT_REASON_EXTERNAL_INTERRUPT]="EXTERNAL_INTERRUPT",
+     [EXIT_REASON_TRIPLE_FAULT]="TRIPLE_FAULT",
+@@ -2262,11 +2261,6 @@ static inline void update_summary(struct
+     s->count++;
+ }
+ 
+-static inline void clear_interval_summary(struct event_cycle_summary *s) {
+-    s->interval.count = 0;
+-    s->interval.cycles = 0;
+-}
+-
+ static inline void update_cycles(struct cycle_summary *s, long long c) {
+ /* We don't know ahead of time how many samples there are, and working
+  * with dynamic stuff is a pain, and unnecessary.  This algorithm will
+@@ -2314,6 +2308,7 @@ static inline void clear_interval_cycles
+     e->instructions = 0;
+ }
+ 
++#if 0
+ static inline void update_cpi(struct weighted_cpi_summary *s,
+                               unsigned long long i,
+                               unsigned long long c) {
+@@ -2359,6 +2354,7 @@ static inline void clear_interval_cpi(st
+     s->interval.count = 0;
+     s->interval.instructions = 0;
+ }
++#endif
+ 
+ static inline void print_cpu_affinity(struct cycle_summary *s, char *p) {
+     if(s->count) {
+@@ -2639,6 +2635,23 @@ void interval_cr3_value_check(struct cr3
+     }
+ }
+ 
++int cr3_time_compare(const void *_a, const void *_b) {
++    struct cr3_value_struct *a=*(typeof(&a))_a;
++    struct cr3_value_struct *b=*(typeof(&a))_b;
++
++    if(a->total_time.interval.cycles < b->total_time.interval.cycles)
++        return 1;
++    else if(b->total_time.interval.cycles == a->total_time.interval.cycles) {
++        if(a->total_time.interval.count < b->total_time.interval.count)
++            return 1;
++        else if(a->total_time.interval.count == b->total_time.interval.count)
++            return 0;
++        else
++            return -1;
++    } else
++        return -1;
++}
++
+ void interval_cr3_schedule_ordered_output(void) {
+     struct cr3_value_struct *p;
+     int i;
+@@ -2646,23 +2659,6 @@ void interval_cr3_schedule_ordered_outpu
+     struct cr3_value_struct **qsort_array;
+     int N=0;
+ 
+-    int cr3_time_compare(const void *_a, const void *_b) {
+-        struct cr3_value_struct *a=*(typeof(&a))_a;
+-        struct cr3_value_struct *b=*(typeof(&a))_b;
+-
+-        if(a->total_time.interval.cycles < b->total_time.interval.cycles)
+-            return 1;
+-        else if(b->total_time.interval.cycles == a->total_time.interval.cycles) {
+-            if(a->total_time.interval.count < b->total_time.interval.count)
+-                return 1;
+-            else if(a->total_time.interval.count == b->total_time.interval.count)
+-                return 0;
+-            else
+-                return -1;
+-        } else
+-            return -1;
+-    }
+-
+     for(p=P.cr3.head; p; p=p->gnext)
+         N++;
+ 
+@@ -2958,6 +2954,23 @@ void update_eip(struct eip_list_struct *
+     update_summary(&p->summary, cycles);
+ }
+ 
++int eip_compare(const void *_a, const void *_b) {
++    struct eip_list_struct *a=*(typeof(&a))_a;
++    struct eip_list_struct *b=*(typeof(&a))_b;
++
++    if(a->summary.cycles < b->summary.cycles)
++        return 1;
++    else if(b->summary.cycles == a->summary.cycles) {
++        if(a->summary.count < b->summary.count)
++            return 1;
++        else if(a->summary.count == b->summary.count)
++            return 0;
++        else
++            return -1;
++    } else
++        return -1;
++}
++
+ void dump_eip(struct eip_list_struct *head) {
+     struct eip_list_struct *p;
+     int i;
+@@ -2966,23 +2979,6 @@ void dump_eip(struct eip_list_struct *he
+     struct eip_list_struct **qsort_array;
+     int N=0;
+ 
+-    int eip_compare(const void *_a, const void *_b) {
+-        struct eip_list_struct *a=*(typeof(&a))_a;
+-        struct eip_list_struct *b=*(typeof(&a))_b;
+-
+-        if(a->summary.cycles < b->summary.cycles)
+-            return 1;
+-        else if(b->summary.cycles == a->summary.cycles) {
+-            if(a->summary.count < b->summary.count)
+-                return 1;
+-            else if(a->summary.count == b->summary.count)
+-                return 0;
+-            else
+-                return -1;
+-        } else
+-            return -1;
+-    }
+-
+     for(p=head; p; p=p->next)
+     {
+         total += p->summary.count;
+@@ -3549,6 +3545,50 @@ struct outstanding_ipi *find_vec(struct 
+     return o;
+ }
+ 
++void ipi_send(struct vcpu_data *ov, int vec)
++{
++    struct vlapic_struct *vla;
++    struct outstanding_ipi *o = NULL;
++
++    if(ov->runstate.state == RUNSTATE_LOST) {
++        if(opt.dump_all)
++            fprintf(warn, "%s: v%d in state RUNSTATE_LOST, not counting ipi\n",
++                    __func__, ov->vid);
++        return;
++    }
++
++    vla = &ov->vlapic;
++
++    o = find_vec(vla, vec);
++
++    if(!o)
++    {
++        fprintf(warn, "%s: Couldn't find an open slot!\n",
++                __func__);
++        return;
++    }
++
++    if(!o->first_tsc)
++        o->first_tsc = P.now;
++
++    if(opt.dump_all && o->count == 0 && o->injected)
++        printf(" [vla] Pre-injection\n");
++
++    o->count++;
++
++    if((opt.dump_all)
++#if 0
++       && (ov->runstate.state != RUNSTATE_RUNNING
++           || ov->hvm.vmexit_valid)
++#endif
++        )
++        printf(" [vla] d%dv%d vec %d state %s (outstanding ipis %d)\n",
++               ov->d->did, ov->vid,
++               o->vec,
++               runstate_name[ov->runstate.state],
++               o->count);
++}
++
+ void hvm_vlapic_icr_handler(struct hvm_data *h)
+ {
+     struct mmio_info *m = &h->inflight.mmio;
+@@ -3567,50 +3607,6 @@ void hvm_vlapic_icr_handler(struct hvm_d
+         };
+     } icr = { .val = m->data };
+ 
+-    void ipi_send(struct vcpu_data *ov, int vec)
+-    {
+-        struct vlapic_struct *vla;
+-        struct outstanding_ipi *o = NULL;
+-
+-        if(ov->runstate.state == RUNSTATE_LOST) {
+-            if(opt.dump_all)
+-                fprintf(warn, "%s: v%d in state RUNSTATE_LOST, not counting ipi\n",
+-                        __func__, ov->vid);
+-            return;
+-        }
+-
+-        vla = &ov->vlapic;
+-
+-        o = find_vec(vla, vec);
+-
+-        if(!o)
+-        {
+-            fprintf(warn, "%s: Couldn't find an open slot!\n",
+-                    __func__);
+-            return;
+-        }
+-
+-        if(!o->first_tsc)
+-            o->first_tsc = P.now;
+-
+-        if(opt.dump_all && o->count == 0 && o->injected)
+-            printf(" [vla] Pre-injection\n");
+-
+-        o->count++;
+-
+-        if((opt.dump_all)
+-#if 0
+-           && (ov->runstate.state != RUNSTATE_RUNNING
+-               || ov->hvm.vmexit_valid)
+-#endif
+-            )
+-            printf(" [vla] d%dv%d vec %d state %s (outstanding ipis %d)\n",
+-                   ov->d->did, ov->vid,
+-                   o->vec,
+-                   runstate_name[ov->runstate.state],
+-                   o->count);
+-    }
+-
+     if(m->is_write) {
+         if(opt.dump_all) {
+             printf("              [vla] d%dv%d icr vec %d %s\n",
+@@ -4116,11 +4112,6 @@ void cr3_prealloc_unpin(struct vcpu_data
+                gmfn, cr3->prealloc_unpin.count);
+ }
+ 
+-void cr3_dump_list(struct cr3_value_struct *head){
+-    struct cr3_value_struct *p;
+-    struct cr3_value_struct **qsort_array;
+-    int i, N=0;
+-
+     int cr3_compare_total(const void *_a, const void *_b) {
+         struct cr3_value_struct *a=*(typeof(&a))_a;
+         struct cr3_value_struct *b=*(typeof(&a))_b;
+@@ -4150,6 +4141,11 @@ void cr3_dump_list(struct cr3_value_stru
+             return -1;
+     }
+ 
++void cr3_dump_list(struct cr3_value_struct *head){
++    struct cr3_value_struct *p;
++    struct cr3_value_struct **qsort_array;
++    int i, N=0;
++
+     if(!head)
+         return;
+ 
Index: pkgsrc/sysutils/xenkernel46/patches/patch-xen_arch_x86_mm.c
diff -u /dev/null pkgsrc/sysutils/xenkernel46/patches/patch-xen_arch_x86_mm.c:1.1
--- /dev/null   Tue Feb 14 21:38:34 2017
+++ pkgsrc/sysutils/xenkernel46/patches/patch-xen_arch_x86_mm.c Tue Feb 14 21:38:34 2017
@@ -0,0 +1,15 @@
+$NetBSD: patch-xen_arch_x86_mm.c,v 1.1 2017/02/14 21:38:34 joerg Exp $
+
+From e0a97098e20d8fe334b76b37dd6fb0a358a6953c.
+
+--- xen/arch/x86/mm.c.orig     2017-02-10 22:44:48.124078150 +0000
++++ xen/arch/x86/mm.c
+@@ -517,7 +517,7 @@ void update_cr3(struct vcpu *v)
+     make_cr3(v, cr3_mfn);
+ }
+ 
+-static const char __section(".bss.page_aligned") zero_page[PAGE_SIZE];
++static const char __section(".bss.page_aligned.const") zero_page[PAGE_SIZE];
+ 
+ static void invalidate_shadow_ldt(struct vcpu *v, int flush)
+ {
Index: pkgsrc/sysutils/xenkernel46/patches/patch-xen_arch_x86_xen.lds.S
diff -u /dev/null pkgsrc/sysutils/xenkernel46/patches/patch-xen_arch_x86_xen.lds.S:1.1
--- /dev/null   Tue Feb 14 21:38:34 2017
+++ pkgsrc/sysutils/xenkernel46/patches/patch-xen_arch_x86_xen.lds.S    Tue Feb 14 21:38:34 2017
@@ -0,0 +1,15 @@
+$NetBSD: patch-xen_arch_x86_xen.lds.S,v 1.1 2017/02/14 21:38:34 joerg Exp $
+
+From e0a97098e20d8fe334b76b37dd6fb0a358a6953c.
+
+--- xen/arch/x86/xen.lds.S.orig        2017-02-10 22:45:18.382878546 +0000
++++ xen/arch/x86/xen.lds.S
+@@ -166,7 +166,7 @@ SECTIONS
+        __bss_start = .;
+        *(.bss.stack_aligned)
+        . = ALIGN(PAGE_SIZE);
+-       *(.bss.page_aligned)
++       *(.bss.page_aligned*)
+        *(.bss)
+        . = ALIGN(SMP_CACHE_BYTES);
+        __per_cpu_start = .;
Index: pkgsrc/sysutils/xenkernel46/patches/patch-xen_include_asm-x86_spinlock.h
diff -u /dev/null pkgsrc/sysutils/xenkernel46/patches/patch-xen_include_asm-x86_spinlock.h:1.1
--- /dev/null   Tue Feb 14 21:38:34 2017
+++ pkgsrc/sysutils/xenkernel46/patches/patch-xen_include_asm-x86_spinlock.h    Tue Feb 14 21:38:34 2017
@@ -0,0 +1,16 @@
+$NetBSD: patch-xen_include_asm-x86_spinlock.h,v 1.1 2017/02/14 21:38:34 joerg Exp $
+
+From c86aa9a250ca0c87760b369f295f67ae01542fa9.
+
+--- xen/include/asm-x86/spinlock.h.orig        2017-02-10 22:33:31.337508849 +0000
++++ xen/include/asm-x86/spinlock.h
+@@ -2,7 +2,8 @@
+ #define __ASM_SPINLOCK_H
+ 
+ #define _raw_read_unlock(l) \
+-    asm volatile ( "lock; dec%z0 %0" : "+m" ((l)->lock) :: "memory" )
++    BUILD_BUG_ON(sizeof((l)->lock) != 4); /* Clang doesn't support %z in asm. */ \
++    asm volatile ( "lock; decl %0" : "+m" ((l)->lock) :: "memory" )
+ 
+ /*
+  * On x86 the only reordering is of reads with older writes.  In the



Home | Main Index | Thread Index | Old Index