Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Jun 2016 04:51:55 +0000 (UTC)
From:      Sepherosa Ziehau <sephe@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   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:  <201606210451.u5L4ptYP082074@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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>



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