Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Jun 2016 23:08:46 +0200
From:      Oliver Pinter <oliver.pinter@hardenedbsd.org>
To:        Sepherosa Ziehau <sephe@freebsd.org>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org,  svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   Re: 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
Message-ID:  <CAPQ4ffuOQcxpoTi5pT9hAbJbvhFBf-tLx_8HsSq_RYhiESGJpg@mail.gmail.com>
In-Reply-To: <CAPQ4ffv8Yij7xL3e0jFRUMAh5b9Lo-bbUdijnQZyxsR64N93_Q@mail.gmail.com>
References:  <201606210451.u5L4ptYP082074@repo.freebsd.org> <CAPQ4ffv8Yij7xL3e0jFRUMAh5b9Lo-bbUdijnQZyxsR64N93_Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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@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@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@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,@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,@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@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@freebsd.org"
>>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPQ4ffuOQcxpoTi5pT9hAbJbvhFBf-tLx_8HsSq_RYhiESGJpg>