Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Jun 2016 09:17:28 +0800
From:      Sepherosa Ziehau <sephe@freebsd.org>
To:        Oliver Pinter <oliver.pinter@hardenedbsd.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:  <CAMOc5cz1wV-TkJv7cw2rfD4PsAJu5XCB7Pp3ymLRGkAmqmS4=Q@mail.gmail.com>
In-Reply-To: <CAPQ4ffuOQcxpoTi5pT9hAbJbvhFBf-tLx_8HsSq_RYhiESGJpg@mail.gmail.com>
References:  <201606210451.u5L4ptYP082074@repo.freebsd.org> <CAPQ4ffv8Yij7xL3e0jFRUMAh5b9Lo-bbUdijnQZyxsR64N93_Q@mail.gmail.com> <CAPQ4ffuOQcxpoTi5pT9hAbJbvhFBf-tLx_8HsSq_RYhiESGJpg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Committed, thank you very much!  And sorry for the breakage.

On Mon, Jun 27, 2016 at 5:08 AM, Oliver Pinter
<oliver.pinter@hardenedbsd.org> wrote:
> 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"
>>>
>>



-- 
Tomorrow Will Never Die



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAMOc5cz1wV-TkJv7cw2rfD4PsAJu5XCB7Pp3ymLRGkAmqmS4=Q>