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 <howard...@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-unsubscr...@freebsd.org"

Reply via email to