-----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"