-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Am Mon, 2 Jul 2018 19:48:38 +0000 (UTC)
Matt Macy <mm...@freebsd.org> schrieb:

> Author: mmacy
> Date: Mon Jul  2 19:48:38 2018
> New Revision: 335873
> URL: https://svnweb.freebsd.org/changeset/base/335873
> 
> Log:
>   inline atomics and allow tied modules to inline locks
>   
>   - inline atomics in modules on i386 and amd64 (they were always
>     inline on other arches)
>   - allow modules to opt in to inlining locks by specifying
>     MODULE_TIED=1 in the makefile
>   
>   Reviewed by: kib
>   Sponsored by: Limelight Networks
>   Differential Revision: https://reviews.freebsd.org/D16079
> 
> Deleted:
>   head/sys/amd64/amd64/atomic.c
>   head/sys/i386/i386/atomic.c
> Modified:
>   head/UPDATING
>   head/sys/amd64/include/atomic.h
>   head/sys/conf/files.amd64
>   head/sys/conf/files.i386
>   head/sys/conf/kmod.mk
>   head/sys/i386/include/atomic.h
>   head/sys/sys/lock.h
>   head/sys/sys/module.h
>   head/sys/sys/mutex.h
>   head/sys/sys/param.h
>   head/sys/vm/vm_map.h
>   head/sys/vm/vm_page.h
> 
> Modified: head/UPDATING
> ==============================================================================
> --- head/UPDATING     Mon Jul  2 19:33:26 2018        (r335872)
> +++ head/UPDATING     Mon Jul  2 19:48:38 2018        (r335873)
> @@ -31,6 +31,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW:
>       disable the most expensive debugging functionality run
>       "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
>  
> +20180702:
> +     On i386 and amd64 atomics are now inlined. Out of tree modules using
> +     atomics will need to be rebuilt.
> +
>  20180701:
>       The '%I' format in the kern.corefile sysctl limits the number of
>       core files that a process can generate to the number stored in the
> 
> Modified: head/sys/amd64/include/atomic.h
> ==============================================================================
> --- head/sys/amd64/include/atomic.h   Mon Jul  2 19:33:26 2018        
> (r335872)
> +++ head/sys/amd64/include/atomic.h   Mon Jul  2 19:48:38 2018        
> (r335873)
> @@ -96,7 +96,7 @@
>   * Kernel modules call real functions which are built into the kernel.
>   * This allows kernel modules to be portable between UP and SMP systems.
>   */
> -#if defined(KLD_MODULE) || !defined(__GNUCLIKE_ASM)
> +#if !defined(__GNUCLIKE_ASM)
>  #define      ATOMIC_ASM(NAME, TYPE, OP, CONS, V)                     \
>  void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v);       \
>  void atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v)
> 
> Modified: head/sys/conf/files.amd64
> ==============================================================================
> --- head/sys/conf/files.amd64 Mon Jul  2 19:33:26 2018        (r335872)
> +++ head/sys/conf/files.amd64 Mon Jul  2 19:48:38 2018        (r335873)
> @@ -126,7 +126,6 @@ acpi_wakedata.h                   optional
> acpi                  \ clean         "acpi_wakedata.h"
>  #
>  #amd64/amd64/apic_vector.S   standard
> -amd64/amd64/atomic.c         standard
>  amd64/amd64/bios.c           standard
>  amd64/amd64/bpf_jit_machdep.c        optional        bpf_jitter
>  amd64/amd64/cpu_switch.S     standard
> 
> Modified: head/sys/conf/files.i386
> ==============================================================================
> --- head/sys/conf/files.i386  Mon Jul  2 19:33:26 2018        (r335872)
> +++ head/sys/conf/files.i386  Mon Jul  2 19:48:38 2018        (r335873)
> @@ -474,8 +474,6 @@ i386/bios/smapi.c         optional smapi
>  i386/bios/smapi_bios.S               optional smapi
>  i386/cloudabi32/cloudabi32_sysvec.c  optional compat_cloudabi32
>  #i386/i386/apic_vector.s             optional apic
> -i386/i386/atomic.c           standard                \
> -     compile-with    "${CC} -c ${CFLAGS}
> ${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}" i386/i386/bios.c
> standard i386/i386/bioscall.s         standard
>  i386/i386/bpf_jit_machdep.c  optional bpf_jitter
> 
> Modified: head/sys/conf/kmod.mk
> ==============================================================================
> --- head/sys/conf/kmod.mk     Mon Jul  2 19:33:26 2018        (r335872)
> +++ head/sys/conf/kmod.mk     Mon Jul  2 19:48:38 2018        (r335873)
> @@ -111,6 +111,9 @@ WERROR?=  -Werror
>  CFLAGS+=     ${WERROR}
>  CFLAGS+=     -D_KERNEL
>  CFLAGS+=     -DKLD_MODULE
> +.if defined(MODULE_TIED)
> +CFLAGS+=     -DKLD_TIED
> +.endif
>  
>  # Don't use any standard or source-relative include directories.
>  NOSTDINC=    -nostdinc
> 
> Modified: head/sys/i386/include/atomic.h
> ==============================================================================
> --- head/sys/i386/include/atomic.h    Mon Jul  2 19:33:26 2018        
> (r335872)
> +++ head/sys/i386/include/atomic.h    Mon Jul  2 19:48:38 2018        
> (r335873)
> @@ -104,7 +104,7 @@ __mbu(void)
>   * Kernel modules call real functions which are built into the kernel.
>   * This allows kernel modules to be portable between UP and SMP systems.
>   */
> -#if defined(KLD_MODULE) || !defined(__GNUCLIKE_ASM)
> +#if !defined(__GNUCLIKE_ASM)
>  #define      ATOMIC_ASM(NAME, TYPE, OP, CONS, V)                     \
>  void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v);       \
>  void atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v)
> 
> Modified: head/sys/sys/lock.h
> ==============================================================================
> --- head/sys/sys/lock.h       Mon Jul  2 19:33:26 2018        (r335872)
> +++ head/sys/sys/lock.h       Mon Jul  2 19:48:38 2018        (r335873)
> @@ -127,7 +127,7 @@ struct lock_class {
>   * calling conventions for this debugging code in modules so that modules can
>   * work with both debug and non-debug kernels.
>   */
> -#if defined(KLD_MODULE) || defined(WITNESS) || defined(INVARIANTS) || \
> +#if (defined(KLD_MODULE) && !defined(KLD_TIED)) || defined(WITNESS) ||
> defined(INVARIANTS) || \ defined(LOCK_PROFILING) || defined(KTR)
>  #define      LOCK_DEBUG      1
>  #else
> 
> Modified: head/sys/sys/module.h
> ==============================================================================
> --- head/sys/sys/module.h     Mon Jul  2 19:33:26 2018        (r335872)
> +++ head/sys/sys/module.h     Mon Jul  2 19:48:38 2018        (r335873)
> @@ -146,8 +146,13 @@ struct mod_pnp_match_info 
>       SYSINIT(name##module, sub, order, module_register_init, &data); \
>       struct __hack
>  
> +#ifdef KLD_TIED
>  #define      DECLARE_MODULE(name, data, sub, order)                          
> \
> +     DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, __FreeBSD_version)
> +#else
> +#define      DECLARE_MODULE(name, data, sub,
> order)                                                        \
> DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, MODULE_KERNEL_MAXVER) 
> +#endif
>  
>  /*
>   * The module declared with DECLARE_MODULE_TIED can only be loaded
> 
> Modified: head/sys/sys/mutex.h
> ==============================================================================
> --- head/sys/sys/mutex.h      Mon Jul  2 19:33:26 2018        (r335872)
> +++ head/sys/sys/mutex.h      Mon Jul  2 19:48:38 2018        (r335873)
> @@ -138,7 +138,7 @@ void      _thread_lock(struct thread *td, int opts, const 
> c
>  void _thread_lock(struct thread *);
>  #endif
>  
> -#if defined(LOCK_PROFILING) || defined(KLD_MODULE)
> +#if defined(LOCK_PROFILING) || (defined(KLD_MODULE) && !defined(KLD_TIED))
>  #define      thread_lock(tdp)                                                
> \
>       thread_lock_flags_((tdp), 0, __FILE__, __LINE__)
>  #elif LOCK_DEBUG > 0
> 
> Modified: head/sys/sys/param.h
> ==============================================================================
> --- head/sys/sys/param.h      Mon Jul  2 19:33:26 2018        (r335872)
> +++ head/sys/sys/param.h      Mon Jul  2 19:48:38 2018        (r335873)
> @@ -60,7 +60,7 @@
>   *           in the range 5 to 9.
>   */
>  #undef __FreeBSD_version
> -#define __FreeBSD_version 1200069    /* Master, propagated to newvers */
> +#define __FreeBSD_version 1200070    /* Master, propagated to newvers */
>  
>  /*
>   * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
> 
> Modified: head/sys/vm/vm_map.h
> ==============================================================================
> --- head/sys/vm/vm_map.h      Mon Jul  2 19:33:26 2018        (r335872)
> +++ head/sys/vm/vm_map.h      Mon Jul  2 19:48:38 2018        (r335873)
> @@ -206,7 +206,7 @@ struct vm_map {
>  #define      MAP_BUSY_WAKEUP         0x02
>  
>  #ifdef       _KERNEL
> -#ifdef KLD_MODULE
> +#if defined(KLD_MODULE) && !defined(KLD_TIED)
>  #define      vm_map_max(map)         vm_map_max_KBI((map))
>  #define      vm_map_min(map)         vm_map_min_KBI((map))
>  #define      vm_map_pmap(map)        vm_map_pmap_KBI((map))
> 
> Modified: head/sys/vm/vm_page.h
> ==============================================================================
> --- head/sys/vm/vm_page.h     Mon Jul  2 19:33:26 2018        (r335872)
> +++ head/sys/vm/vm_page.h     Mon Jul  2 19:48:38 2018        (r335873)
> @@ -304,7 +304,7 @@ extern struct mtx_padalign pa_lock[];
>  
>  #define      PA_LOCK_ASSERT(pa, a)   mtx_assert(PA_LOCKPTR(pa), (a))
>  
> -#ifdef KLD_MODULE
> +#if defined(KLD_MODULE) && !defined(KLD_TIED)
>  #define      vm_page_lock(m)         vm_page_lock_KBI((m), LOCK_FILE,
> LOCK_LINE) #define    vm_page_unlock(m)       vm_page_unlock_KBI((m), 
> LOCK_FILE,
> LOCK_LINE) #define    vm_page_trylock(m)      vm_page_trylock_KBI((m), 
> LOCK_FILE,
> LOCK_LINE) @@ -734,7 +734,7 @@ vm_page_dirty(vm_page_t m)
>  {
>  
>       /* Use vm_page_dirty_KBI() under INVARIANTS to save memory. */
> -#if defined(KLD_MODULE) || defined(INVARIANTS)
> +#if (defined(KLD_MODULE) && !defined(KLD_TIED)) || defined(INVARIANTS)
>       vm_page_dirty_KBI(m);
>  #else
>       m->dirty = VM_PAGE_BITS_ALL;
> _______________________________________________
> svn-src-h...@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

This patch breaks building of ports

emulators/virtualbox-ose-kmod
graphics/drm-stable-kmod

which we build via /etc/src.conf and PORTS_MODULES= .

Reverting CURRENT sources to pre-r335873 makes compiling 
emulators/virtualbox-ose-kmod
successing, but leaves graphics/drm-stable-kmod with some weird compiler errors 
(using
META_MODE).

The error shown revision 335884 when compiling the module
graphics/drm-stable-kmod is:

[...]
In file included from i915_drv.c:30:
In file included
from 
/usr/obj/usr/src/amd64.amd64/sys/WALHALL/usr/ports/graphics/drm-stable-kmod/work/kms-drm-a753215/linuxkpi/gplv2/include/linux/acpi.h:26:
In file included
from 
/usr/obj/usr/src/amd64.amd64/sys/WALHALL/usr/ports/graphics/drm-stable-kmod/work/kms-drm-a753215/linuxkpi/gplv2/include/linux/device.h:4:
In file included from 
/usr/src/sys/compat/linuxkpi/common/include/linux/device.h:35: In
file included from 
/usr/src/sys/compat/linuxkpi/common/include/linux/types.h:37: In file
included from /usr/src/sys/sys/systm.h:44: ./machine/atomic.h:450:29: error: 
invalid
operand for instruction ATOMIC_ASM(clear,    long,  "andq %1,%0",  "ir", ~v); ^
<inline asm>:1:7: note: instantiated into assembly here
        andq $9223372036854775807,40672(%r14)
             ^~~~~~~~~~~~~~~~~~~~~
1 error generated.
*** Error code 1
[...]

and  for emulators/virtualbox-ose-kmod

[...]
In file included from SUPDrv.c:33:
./SUPDrvInternal.h:495:5: error: type name requires a specifier or qualifier
    PVM                             pSessionVM;
    ^
/usr/src/sys/sys/priority.h:104:15: note: expanded from macro 'PVM'
#define PVM                     (PRI_MIN_KERN + 4)

[...]

- -- 
O. Hartmann

Ich widerspreche der Nutzung oder Übermittlung meiner Daten für
Werbezwecke oder für die Markt- oder Meinungsforschung (§ 28 Abs. 4 BDSG).
-----BEGIN PGP SIGNATURE-----

iLUEARMKAB0WIQQZVZMzAtwC2T/86TrS528fyFhYlAUCWzs7TQAKCRDS528fyFhY
lOCzAf9lBFWm82nJL6Riy6jNMnQrA+0M9CFv6J6UQGjjN9uWmL5iaT4CZFr6UxXQ
iSiJv93wWa0dqFT0iQQi8XIg+7guAf0bX2dZa1N7++WGcBVtoUUPPAT9iqEzXYYl
nihGzRBAvVavs7kcFfyz6VZs/H2zkDyyrc8Z6wJ1mv63EBuxa2lG
=M0SS
-----END PGP SIGNATURE-----
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to