svn commit: r302041 - in stable/10/sys: amd64/amd64 amd64/conf conf dev/hyperv/vmbus dev/hyperv/vmbus/amd64 dev/hyperv/vmbus/i386 i386/conf i386/i386 modules/hyperv/vmbus
Oliver Pinter
oliver.pinter at hardenedbsd.org
Sun Jun 26 21:08:50 UTC 2016
And the possible fix:
diff --git a/sys/dev/hyperv/vmbus/vmbus.c b/sys/dev/hyperv/vmbus/vmbus.c
index 0430952..4ad96d7 100644
--- a/sys/dev/hyperv/vmbus/vmbus.c
+++ b/sys/dev/hyperv/vmbus/vmbus.c
@@ -404,7 +404,7 @@ vmbus_vector_alloc(void)
/*
* Search backwards form the highest IDT vector available for use
- * as vmbus channel callback vector. We install 'hv_vmbus_callback'
+ * as vmbus channel callback vector. We install 'vmbus_isr'
* handler at that vector and use it to interrupt vcpus.
*/
vector = APIC_SPURIOUS_INT;
@@ -443,7 +443,7 @@ vmbus_vector_free(int vector)
ip = &idt[vector];
func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset);
- KASSERT(func == (uintptr_t)&IDTVEC(hv_vmbus_callback),
+ KASSERT(func == (uintptr_t)&IDTVEC(vmbus_isr),
("invalid vector %d", vector));
setidt(vector, IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0);
On 6/26/16, Oliver Pinter <oliver.pinter at hardenedbsd.org> wrote:
> Hi all!
>
> Some from these hyper-v commits breaks the build with INVARIANTS
> enabled kernel on 10-STABLE:
>
> ~~~
> /vmbus.c:446:30: error: use of undeclared identifier 'Xhv_vmbus_callback'
> 14:13:13 KASSERT(func == (uintptr_t)&IDTVEC(hv_vmbus_callback),
> ~~~
>
> For more details please see this jenkins log:
> http://jenkins.hardenedbsd.org:8180/jenkins/job/HardenedBSD-10-STABLE-amd64/462/console
>
> Btw, does anybody build an INVARIANTS enabled kernel in FreeBSD's
> jenkins cluster with 10-STABLE? There are some other issues with
> INVARIANTS, for example ZFS + GELI + 10-STABLE :
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=209580
>
> On 6/21/16, Sepherosa Ziehau <sephe at freebsd.org> wrote:
>> Author: sephe
>> Date: Tue Jun 21 04:51:55 2016
>> New Revision: 302041
>> URL: https://svnweb.freebsd.org/changeset/base/302041
>>
>> Log:
>> MFC 297931,298022
>>
>> 297931
>> Expose doreti as a global symbol on amd64 and i386.
>>
>> doreti provides the common code path for returning from interrupt
>> andlers on x86. Exposing doreti as a global symbol allows kernel
>> modules to include low-level interrupt handlers instead of
>> requiring
>> all low-level handlers to be statically compiled into the kernel.
>>
>> Submitted by: Howard Su <howard0su at gmail.com>
>> Reviewed by: kib
>>
>> 298022
>> hyperv: Deprecate HYPERV option by moving Hyper-V IDT vector into
>> vmbus
>>
>> Submitted by: Jun Su <junsu microsoft com>
>> Reviewed by: jhb, kib, sephe
>> Sponsored by: Microsoft OSTC
>> Differential Revision: https://reviews.freebsd.org/D5910
>>
>> Added:
>> stable/10/sys/dev/hyperv/vmbus/amd64/
>> - copied from r298022, head/sys/dev/hyperv/vmbus/amd64/
>> stable/10/sys/dev/hyperv/vmbus/i386/
>> - copied from r298022, head/sys/dev/hyperv/vmbus/i386/
>> Modified:
>> stable/10/sys/amd64/amd64/apic_vector.S
>> stable/10/sys/amd64/amd64/exception.S
>> stable/10/sys/amd64/conf/GENERIC
>> stable/10/sys/conf/files.amd64
>> stable/10/sys/conf/files.i386
>> stable/10/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
>> stable/10/sys/i386/conf/GENERIC
>> stable/10/sys/i386/i386/apic_vector.s
>> stable/10/sys/i386/i386/exception.s
>> stable/10/sys/modules/hyperv/vmbus/Makefile
>> Directory Properties:
>> stable/10/ (props changed)
>>
>> Modified: stable/10/sys/amd64/amd64/apic_vector.S
>> ==============================================================================
>> --- stable/10/sys/amd64/amd64/apic_vector.S Tue Jun 21 02:36:03
>> 2016 (r302040)
>> +++ stable/10/sys/amd64/amd64/apic_vector.S Tue Jun 21 04:51:55
>> 2016 (r302041)
>> @@ -150,22 +150,6 @@ IDTVEC(xen_intr_upcall)
>> jmp doreti
>> #endif
>>
>> -#ifdef HYPERV
>> -/*
>> - * This is the Hyper-V vmbus channel direct callback interrupt.
>> - * Only used when it is running on Hyper-V.
>> - */
>> - .text
>> - SUPERALIGN_TEXT
>> -IDTVEC(hv_vmbus_callback)
>> - PUSH_FRAME
>> - FAKE_MCOUNT(TF_RIP(%rsp))
>> - movq %rsp, %rdi
>> - call hv_vector_handler
>> - MEXITCOUNT
>> - jmp doreti
>> -#endif
>> -
>> #ifdef SMP
>> /*
>> * Global address space TLB shootdown.
>>
>> Modified: stable/10/sys/amd64/amd64/exception.S
>> ==============================================================================
>> --- stable/10/sys/amd64/amd64/exception.S Tue Jun 21 02:36:03
>> 2016 (r302040)
>> +++ stable/10/sys/amd64/amd64/exception.S Tue Jun 21 04:51:55
>> 2016 (r302041)
>> @@ -661,6 +661,7 @@ MCOUNT_LABEL(eintr)
>> .text
>> SUPERALIGN_TEXT
>> .type doreti, at function
>> + .globl doreti
>> doreti:
>> FAKE_MCOUNT($bintr) /* init "from" bintr -> doreti */
>> /*
>>
>> Modified: stable/10/sys/amd64/conf/GENERIC
>> ==============================================================================
>> --- stable/10/sys/amd64/conf/GENERIC Tue Jun 21 02:36:03 2016 (r302040)
>> +++ stable/10/sys/amd64/conf/GENERIC Tue Jun 21 04:51:55 2016 (r302041)
>> @@ -353,7 +353,6 @@ device virtio_scsi # VirtIO SCSI devic
>> device virtio_balloon # VirtIO Memory Balloon device
>>
>> # HyperV drivers and enchancement support
>> -# NOTE: HYPERV depends on hyperv. They must be added or removed
>> together.
>> options HYPERV # Hyper-V kernel infrastructure
>> device hyperv # HyperV drivers
>>
>>
>> Modified: stable/10/sys/conf/files.amd64
>> ==============================================================================
>> --- stable/10/sys/conf/files.amd64 Tue Jun 21 02:36:03 2016 (r302040)
>> +++ stable/10/sys/conf/files.amd64 Tue Jun 21 04:51:55 2016 (r302041)
>> @@ -278,6 +278,7 @@ dev/hyperv/vmbus/hv_hv.c optional hyp
>> dev/hyperv/vmbus/hv_et.c optional hyperv
>> dev/hyperv/vmbus/hv_ring_buffer.c optional hyperv
>> dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c optional hyperv
>> +dev/hyperv/vmbus/amd64/hv_vector.S optional hyperv
>> dev/kbd/kbd.c optional atkbd | sc | ukbd | vt
>> dev/lindev/full.c optional lindev
>> dev/lindev/lindev.c optional lindev
>>
>> Modified: stable/10/sys/conf/files.i386
>> ==============================================================================
>> --- stable/10/sys/conf/files.i386 Tue Jun 21 02:36:03 2016 (r302040)
>> +++ stable/10/sys/conf/files.i386 Tue Jun 21 04:51:55 2016 (r302041)
>> @@ -254,6 +254,7 @@ dev/hyperv/vmbus/hv_hv.c optional hyp
>> dev/hyperv/vmbus/hv_et.c optional hyperv
>> dev/hyperv/vmbus/hv_ring_buffer.c optional hyperv
>> dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c optional hyperv
>> +dev/hyperv/vmbus/i386/hv_vector.S optional hyperv
>> dev/ichwd/ichwd.c optional ichwd
>> dev/if_ndis/if_ndis.c optional ndis
>> dev/if_ndis/if_ndis_pccard.c optional ndis pccard
>>
>> Modified: stable/10/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
>> ==============================================================================
>> --- stable/10/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c Tue Jun 21
>> 02:36:03 2016 (r302040)
>> +++ stable/10/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c Tue Jun 21
>> 04:51:55 2016 (r302041)
>> @@ -370,7 +370,6 @@ vmbus_probe(device_t dev) {
>> return (BUS_PROBE_DEFAULT);
>> }
>>
>> -#ifdef HYPERV
>> extern inthand_t IDTVEC(rsvd), IDTVEC(hv_vmbus_callback);
>>
>> /**
>> @@ -430,21 +429,6 @@ vmbus_vector_free(int vector)
>> setidt(vector, IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0);
>> }
>>
>> -#else /* HYPERV */
>> -
>> -static int
>> -vmbus_vector_alloc(void)
>> -{
>> - return(0);
>> -}
>> -
>> -static void
>> -vmbus_vector_free(int vector)
>> -{
>> -}
>> -
>> -#endif /* HYPERV */
>> -
>> static void
>> vmbus_cpuset_setthread_task(void *xmask, int pending __unused)
>> {
>>
>> Modified: stable/10/sys/i386/conf/GENERIC
>> ==============================================================================
>> --- stable/10/sys/i386/conf/GENERIC Tue Jun 21 02:36:03 2016 (r302040)
>> +++ stable/10/sys/i386/conf/GENERIC Tue Jun 21 04:51:55 2016 (r302041)
>> @@ -362,7 +362,6 @@ device virtio_scsi # VirtIO SCSI devic
>> device virtio_balloon # VirtIO Memory Balloon device
>>
>> # HyperV drivers and enchancement support
>> -# NOTE: HYPERV depends on hyperv. They must be added or removed
>> together.
>> options HYPERV # Hyper-V kernel infrastructure
>> device hyperv # HyperV drivers
>>
>>
>> Modified: stable/10/sys/i386/i386/apic_vector.s
>> ==============================================================================
>> --- stable/10/sys/i386/i386/apic_vector.s Tue Jun 21 02:36:03
>> 2016 (r302040)
>> +++ stable/10/sys/i386/i386/apic_vector.s Tue Jun 21 04:51:55
>> 2016 (r302041)
>> @@ -157,25 +157,6 @@ IDTVEC(xen_intr_upcall)
>> jmp doreti
>> #endif
>>
>> -#ifdef HYPERV
>> -/*
>> - * This is the Hyper-V vmbus channel direct callback interrupt.
>> - * Only used when it is running on Hyper-V.
>> - */
>> - .text
>> - SUPERALIGN_TEXT
>> -IDTVEC(hv_vmbus_callback)
>> - PUSH_FRAME
>> - SET_KERNEL_SREGS
>> - cld
>> - FAKE_MCOUNT(TF_EIP(%esp))
>> - pushl %esp
>> - call hv_vector_handler
>> - add $4, %esp
>> - MEXITCOUNT
>> - jmp doreti
>> -#endif
>> -
>> #ifdef SMP
>> /*
>> * Global address space TLB shootdown.
>>
>> Modified: stable/10/sys/i386/i386/exception.s
>> ==============================================================================
>> --- stable/10/sys/i386/i386/exception.s Tue Jun 21 02:36:03
>> 2016 (r302040)
>> +++ stable/10/sys/i386/i386/exception.s Tue Jun 21 04:51:55
>> 2016 (r302041)
>> @@ -344,6 +344,7 @@ MCOUNT_LABEL(eintr)
>> .text
>> SUPERALIGN_TEXT
>> .type doreti, at function
>> + .globl doreti
>> doreti:
>> FAKE_MCOUNT($bintr) /* init "from" bintr -> doreti */
>> doreti_next:
>>
>> Modified: stable/10/sys/modules/hyperv/vmbus/Makefile
>> ==============================================================================
>> --- stable/10/sys/modules/hyperv/vmbus/Makefile Tue Jun 21 02:36:03
>> 2016 (r302040)
>> +++ stable/10/sys/modules/hyperv/vmbus/Makefile Tue Jun 21 04:51:55
>> 2016 (r302041)
>> @@ -1,7 +1,7 @@
>> # $FreeBSD$
>>
>> .PATH: ${.CURDIR}/../../../dev/hyperv/vmbus \
>> - ${.CURDIR}/../../../dev/hyperv/utilities
>> + ${.CURDIR}/../../../dev/hyperv/vmbus/${MACHINE_CPUARCH}
>>
>> KMOD= hv_vmbus
>> SRCS= hv_channel.c \
>> @@ -14,8 +14,17 @@ SRCS= hv_channel.c \
>> hv_vmbus_priv.h
>> SRCS+= acpi_if.h bus_if.h device_if.h opt_acpi.h
>>
>> +# XXX: for assym.s
>> +SRCS+= opt_kstack_pages.h opt_nfs.h opt_apic.h opt_hwpmc_hooks.h
>> opt_compat.h
>> +
>> +SRCS+= assym.s \
>> + hv_vector.S
>> +
>> +hv_vector.o:
>> + ${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
>> + ${.IMPSRC} -o ${.TARGET}
>> +
>> CFLAGS+= -I${.CURDIR}/../../../dev/hyperv/include \
>> - -I${.CURDIR}/../../../dev/hyperv/vmbus \
>> - -I${.CURDIR}/../../../dev/hyperv/utilities
>> + -I${.CURDIR}/../../../dev/hyperv/vmbus
>>
>> .include <bsd.kmod.mk>
>> _______________________________________________
>> svn-src-stable-10 at freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
>> To unsubscribe, send any mail to
>> "svn-src-stable-10-unsubscribe at freebsd.org"
>>
>
More information about the svn-src-stable
mailing list