Date: Fri, 1 Jan 2016 11:19:32 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r293036 - in projects/clang380-import: libexec/rtld-elf/powerpc64 share/man/man4 sys/conf sys/dev/syscons/plasma sys/modules/rtwn sys/modules/syscons sys/modules/syscons/plasma sys/net ... Message-ID: <201601011119.u01BJW3N007944@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Fri Jan 1 11:19:32 2016 New Revision: 293036 URL: https://svnweb.freebsd.org/changeset/base/293036 Log: Merge ^/head r293016 through r293035. Added: projects/clang380-import/sys/dev/syscons/plasma/ - copied from r293035, head/sys/dev/syscons/plasma/ projects/clang380-import/sys/modules/rtwn/ - copied from r293035, head/sys/modules/rtwn/ projects/clang380-import/sys/modules/syscons/plasma/ - copied from r293035, head/sys/modules/syscons/plasma/ Modified: projects/clang380-import/libexec/rtld-elf/powerpc64/reloc.c projects/clang380-import/libexec/rtld-elf/powerpc64/rtld_start.S projects/clang380-import/share/man/man4/splash.4 projects/clang380-import/sys/conf/kmod.mk projects/clang380-import/sys/modules/syscons/Makefile projects/clang380-import/sys/net/if_ethersubr.c projects/clang380-import/sys/net80211/ieee80211_freebsd.h projects/clang380-import/sys/net80211/ieee80211_scan_sw.c projects/clang380-import/sys/net80211/ieee80211_var.h projects/clang380-import/sys/netinet/if_ether.c projects/clang380-import/sys/powerpc/include/platform.h projects/clang380-import/sys/powerpc/mpc85xx/mpc85xx.h projects/clang380-import/sys/powerpc/mpc85xx/platform_mpc85xx.c projects/clang380-import/sys/powerpc/powerpc/cpu.c projects/clang380-import/sys/powerpc/powerpc/platform.c projects/clang380-import/sys/powerpc/powerpc/platform_if.m projects/clang380-import/tools/regression/geom_concat/conf.sh projects/clang380-import/tools/regression/geom_mirror/conf.sh projects/clang380-import/tools/regression/geom_raid3/conf.sh projects/clang380-import/tools/regression/geom_shsec/conf.sh projects/clang380-import/tools/regression/geom_stripe/conf.sh projects/clang380-import/tools/regression/geom_subr.sh Directory Properties: projects/clang380-import/ (props changed) projects/clang380-import/share/ (props changed) projects/clang380-import/share/man/man4/ (props changed) projects/clang380-import/sys/ (props changed) projects/clang380-import/sys/conf/ (props changed) Modified: projects/clang380-import/libexec/rtld-elf/powerpc64/reloc.c ============================================================================== --- projects/clang380-import/libexec/rtld-elf/powerpc64/reloc.c Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/libexec/rtld-elf/powerpc64/reloc.c Fri Jan 1 11:19:32 2016 (r293036) @@ -338,26 +338,19 @@ static int reloc_plt_object(Obj_Entry *obj, const Elf_Rela *rela) { Elf_Addr *where = (Elf_Addr *)(obj->relocbase + rela->r_offset); -#if !defined(_CALL_ELF) || _CALL_ELF == 1 - Elf_Addr *glink; -#endif long reloff; reloff = rela - obj->pltrela; + dbg(" reloc_plt_object: where=%p,reloff=%lx,glink=%#lx", (void *)where, + reloff, obj->glink); + #if !defined(_CALL_ELF) || _CALL_ELF == 1 - if (obj->priv == NULL) - obj->priv = xmalloc(obj->pltrelasize); - glink = obj->priv + reloff*sizeof(Elf_Addr)*2; - - dbg(" reloc_plt_object: where=%p,reloff=%lx,glink=%p", (void *)where, reloff, glink); - - memcpy(where, _rtld_bind_start, sizeof(struct funcdesc)); - ((struct funcdesc *)(where))->env = (Elf_Addr)glink; - *(glink++) = (Elf_Addr)obj; - *(glink++) = reloff*sizeof(Elf_Rela); + /* Glink code is 3 instructions after the first 32k, 2 before */ + *where = (Elf_Addr)obj->glink + 32 + + 8*((reloff < 0x8000) ? reloff : 0x8000) + + 12*((reloff < 0x8000) ? 0 : (reloff - 0x8000)); #else - dbg(" reloc_plt_object: where=%p,reloff=%lx,glink=%#lx", (void *)where, reloff, obj->glink); *where = (Elf_Addr)obj->glink + 4*reloff + 32; #endif @@ -416,13 +409,6 @@ reloc_jmpslots(Obj_Entry *obj, int flags target = (Elf_Addr)(defobj->relocbase + def->st_value); -#if 0 - /* PG XXX */ - dbg("\"%s\" in \"%s\" --> %p in \"%s\"", - defobj->strtab + def->st_name, basename(obj->path), - (void *)target, basename(defobj->path)); -#endif - if (def == &sym_zero) { /* Zero undefined weak symbols */ #if !defined(_CALL_ELF) || _CALL_ELF == 1 @@ -461,12 +447,28 @@ reloc_jmpslot(Elf_Addr *wherep, Elf_Addr (void *)wherep, (void *)target, *(Elf_Addr *)target, (Elf_Addr)defobj->relocbase); + /* + * For the trampoline, the second two elements of the function + * descriptor are unused, so we are fine replacing those at any time + * with the real ones with no thread safety implications. However, we + * need to make sure the main entry point pointer ([0]) is seen to be + * modified *after* the second two elements. This can't be done in + * general, since there are no barriers in the reading code, but put in + * some isyncs to at least make it a little better. + */ memcpy(wherep, (void *)target, sizeof(struct funcdesc)); + wherep[2] = ((Elf_Addr *)target)[2]; + wherep[1] = ((Elf_Addr *)target)[1]; + __asm __volatile ("isync" : : : "memory"); + wherep[0] = ((Elf_Addr *)target)[0]; + __asm __volatile ("isync" : : : "memory"); + if (((struct funcdesc *)(wherep))->addr < (Elf_Addr)defobj->relocbase) { /* - * XXX: It is possible (e.g. LD_BIND_NOW) that the function + * It is possible (LD_BIND_NOW) that the function * descriptor we are copying has not yet been relocated. - * If this happens, fix it. + * If this happens, fix it. Don't worry about threading in + * this case since LD_BIND_NOW makes it irrelevant. */ ((struct funcdesc *)(wherep))->addr += @@ -481,8 +483,6 @@ reloc_jmpslot(Elf_Addr *wherep, Elf_Addr *wherep = target; #endif - __asm __volatile("sync" ::: "memory"); - return (target); } @@ -506,7 +506,6 @@ reloc_gnu_ifunc(Obj_Entry *obj, int flag void init_pltgot(Obj_Entry *obj) { -#if defined(_CALL_ELF) && _CALL_ELF == 2 Elf_Addr *pltcall; pltcall = obj->pltgot; @@ -515,10 +514,12 @@ init_pltgot(Obj_Entry *obj) return; } +#if defined(_CALL_ELF) && _CALL_ELF == 2 pltcall[0] = (Elf_Addr)&_rtld_bind_start; pltcall[1] = (Elf_Addr)obj; - - __asm __volatile("sync" ::: "memory"); +#else + memcpy(pltcall, _rtld_bind_start, sizeof(struct funcdesc)); + pltcall[2] = (Elf_Addr)obj; #endif } Modified: projects/clang380-import/libexec/rtld-elf/powerpc64/rtld_start.S ============================================================================== --- projects/clang380-import/libexec/rtld-elf/powerpc64/rtld_start.S Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/libexec/rtld-elf/powerpc64/rtld_start.S Fri Jan 1 11:19:32 2016 (r293036) @@ -111,10 +111,7 @@ _ENTRY(_rtld_start) * * Call into the MI binder. This routine is reached via the PLT call cell * - * For ELFv1, on entry, %r11 contains a pointer to the (object, relocation) - * tuple. - * - * For ELFv2, %r11 contains an object pointer and %r0 contains the PLT index. + * On entry, %r11 contains an object pointer and %r0 contains the PLT index. * * Save all registers, call into the binder to resolve and fixup the external * routine, and then transfer to the external routine on return. @@ -122,7 +119,7 @@ _ENTRY(_rtld_start) .globl _rtld_bind _ENTRY(_rtld_bind_start) - mr %r12,%r0 # shunt r0 immediately to r12 for ELFv2 + mr %r12,%r0 # save r0 (index) immediately to r12 mflr %r0 std %r0,16(%r1) # save lr mfcr %r0 @@ -139,13 +136,9 @@ _ENTRY(_rtld_bind_start) std %r9,64+6*8(%r1) std %r10,64+7*8(%r1) -#if !defined(_CALL_ELF) || _CALL_ELF == 1 - ld %r3,0(%r11) - ld %r4,8(%r11) -#else mr %r3,%r11 - mulli %r4,%r12,24 /* Multiply index by sizeof(Elf_Rela) */ -#endif + mulli %r4,%r12,24 # Multiply index by sizeof(Elf_Rela) + bl _rtld_bind # target addr = _rtld_bind(obj, reloff) nop Modified: projects/clang380-import/share/man/man4/splash.4 ============================================================================== --- projects/clang380-import/share/man/man4/splash.4 Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/share/man/man4/splash.4 Fri Jan 1 11:19:32 2016 (r293036) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 29, 2010 +.Dd December 31, 2015 .Dt SPLASH 4 .Os .Sh NAME @@ -130,6 +130,8 @@ the screen will also be powered off. Animated graphical .Fx logo. +.It Pa plasma_saver.ko +Draws an animated interference pattern. .It Pa rain_saver.ko Draws a shower on the screen. .It Pa snake_saver.ko @@ -282,6 +284,14 @@ based on the code, with some additional inspiration from the .Pa daemon_saver code. +The +.Pa logo_saver , +.Pa plasma_saver , +.Pa rain_saver +and +.Pa warp_saver +modules were written by +.An Dag-Erling Sm\(/orgrav Aq Mt des@FreeBSD.org . .Sh CAVEATS Both the splash screen and the screen saver work with .Xr syscons 4 Modified: projects/clang380-import/sys/conf/kmod.mk ============================================================================== --- projects/clang380-import/sys/conf/kmod.mk Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/conf/kmod.mk Fri Jan 1 11:19:32 2016 (r293036) @@ -28,6 +28,9 @@ # # KMODUNLOAD Command to unload a kernel module [/sbin/kldunload] # +# KMODISLOADED Command to check whether a kernel module is +# loaded [/sbin/kldstat -q -n] +# # PROG The name of the kernel module to build. # If not supplied, ${KMOD}.ko is used. # @@ -56,10 +59,14 @@ # unload: # Unload a module. # +# reload: +# Unload if loaded, then load. +# AWK?= awk KMODLOAD?= /sbin/kldload KMODUNLOAD?= /sbin/kldunload +KMODISLOADED?= /sbin/kldstat -q -n OBJCOPY?= objcopy .include <bsd.init.mk> @@ -325,7 +332,11 @@ load: ${PROG} .if !target(unload) unload: - ${KMODUNLOAD} -v ${PROG} + if ${KMODISLOADED} ${PROG} ; then ${KMODUNLOAD} -v ${PROG} ; fi +.endif + +.if !target(reload) +reload: unload load .endif .if defined(KERNBUILDDIR) Modified: projects/clang380-import/sys/modules/syscons/Makefile ============================================================================== --- projects/clang380-import/sys/modules/syscons/Makefile Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/modules/syscons/Makefile Fri Jan 1 11:19:32 2016 (r293036) @@ -9,6 +9,7 @@ SUBDIR= ${_apm} \ ${_fire} \ green \ ${_logo} \ + ${_plasma} \ ${_rain} \ ${_snake} \ ${_star} \ @@ -25,6 +26,7 @@ _daemon= daemon _dragon= dragon _fire= fire _logo= logo +_plasma= plasma _rain= rain _snake= snake _star= star Modified: projects/clang380-import/sys/net/if_ethersubr.c ============================================================================== --- projects/clang380-import/sys/net/if_ethersubr.c Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/net/if_ethersubr.c Fri Jan 1 11:19:32 2016 (r293036) @@ -324,6 +324,10 @@ ether_output(struct ifnet *ifp, struct m /* * Add local net header. If no space in first mbuf, * allocate another. + * + * Note that we do prepend regardless of RT_HAS_HEADER flag. + * This is done because BPF code shifts m_data pointer + * to the end of ethernet header prior to calling if_output(). */ M_PREPEND(m, hlen, M_NOWAIT); if (m == NULL) Modified: projects/clang380-import/sys/net80211/ieee80211_freebsd.h ============================================================================== --- projects/clang380-import/sys/net80211/ieee80211_freebsd.h Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/net80211/ieee80211_freebsd.h Fri Jan 1 11:19:32 2016 (r293036) @@ -246,9 +246,11 @@ void ieee80211_vap_destroy(struct ieee80 (((_ifp)->if_flags & IFF_UP) && \ ((_ifp)->if_drv_flags & IFF_DRV_RUNNING)) +/* XXX TODO: cap these at 1, as hz may not be 1000 */ #define msecs_to_ticks(ms) (((ms)*hz)/1000) #define ticks_to_msecs(t) (1000*(t) / hz) #define ticks_to_secs(t) ((t) / hz) + #define time_after(a,b) ((long)(b) - (long)(a) < 0) #define time_before(a,b) time_after(b,a) #define time_after_eq(a,b) ((long)(a) - (long)(b) >= 0) Modified: projects/clang380-import/sys/net80211/ieee80211_scan_sw.c ============================================================================== --- projects/clang380-import/sys/net80211/ieee80211_scan_sw.c Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/net80211/ieee80211_scan_sw.c Fri Jan 1 11:19:32 2016 (r293036) @@ -641,7 +641,7 @@ scan_task(void *arg, int pending) * XXX Should use M_TXCB mechanism to eliminate this. */ cv_timedwait(&SCAN_PRIVATE(ss)->ss_scan_cv, - IEEE80211_LOCK_OBJ(ic), hz / 1000); + IEEE80211_LOCK_OBJ(ic), msecs_to_ticks(1)); if (SCAN_PRIVATE(ss)->ss_iflags & ISCAN_ABORT) goto done; } Modified: projects/clang380-import/sys/net80211/ieee80211_var.h ============================================================================== --- projects/clang380-import/sys/net80211/ieee80211_var.h Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/net80211/ieee80211_var.h Fri Jan 1 11:19:32 2016 (r293036) @@ -84,6 +84,7 @@ #define IEEE80211_MS_TO_TU(x) (((x) * 1000) / 1024) #define IEEE80211_TU_TO_MS(x) (((x) * 1024) / 1000) +/* XXX TODO: cap this at 1, in case hz is not 1000 */ #define IEEE80211_TU_TO_TICKS(x)(((x) * 1024 * hz) / (1000 * 1000)) /* Modified: projects/clang380-import/sys/netinet/if_ether.c ============================================================================== --- projects/clang380-import/sys/netinet/if_ether.c Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/netinet/if_ether.c Fri Jan 1 11:19:32 2016 (r293036) @@ -1334,8 +1334,5 @@ arp_init(void) if (IS_DEFAULT_VNET(curvnet)) iflladdr_tag = EVENTHANDLER_REGISTER(iflladdr_event, arp_iflladdr, NULL, EVENTHANDLER_PRI_ANY); - if (IS_DEFAULT_VNET(curvnet)) - iflladdr_tag = EVENTHANDLER_REGISTER(iflladdr_event, - arp_iflladdr, NULL, EVENTHANDLER_PRI_ANY); } SYSINIT(arp, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY, arp_init, 0); Modified: projects/clang380-import/sys/powerpc/include/platform.h ============================================================================== --- projects/clang380-import/sys/powerpc/include/platform.h Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/powerpc/include/platform.h Fri Jan 1 11:19:32 2016 (r293036) @@ -57,6 +57,8 @@ void platform_smp_ap_init(void); const char *installed_platform(void); void platform_probe_and_attach(void); +void platform_cpu_idle(int); + void platform_sleep(void); #endif /* _MACHINE_PLATFORM_H_ */ Modified: projects/clang380-import/sys/powerpc/mpc85xx/mpc85xx.h ============================================================================== --- projects/clang380-import/sys/powerpc/mpc85xx/mpc85xx.h Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/powerpc/mpc85xx/mpc85xx.h Fri Jan 1 11:19:32 2016 (r293036) @@ -132,6 +132,12 @@ extern vm_offset_t ccsrbar_va; #define OCP85XX_RSTCR (CCSRBAR_VA + 0xe00b0) /* + * Run Control/Power Management Registers. + */ +#define OCP85XX_RCPM_CDOZSR (CCSRBAR_VA + 0xe2004) +#define OCP85XX_RCPM_CDOZCR (CCSRBAR_VA + 0xe200c) + +/* * Prototypes. */ uint32_t ccsr_read4(uintptr_t addr); Modified: projects/clang380-import/sys/powerpc/mpc85xx/platform_mpc85xx.c ============================================================================== --- projects/clang380-import/sys/powerpc/mpc85xx/platform_mpc85xx.c Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/powerpc/mpc85xx/platform_mpc85xx.c Fri Jan 1 11:19:32 2016 (r293036) @@ -80,6 +80,8 @@ static int mpc85xx_smp_first_cpu(platfor static int mpc85xx_smp_next_cpu(platform_t, struct cpuref *cpuref); static int mpc85xx_smp_get_bsp(platform_t, struct cpuref *cpuref); static int mpc85xx_smp_start_cpu(platform_t, struct pcpu *cpu); +static void mpc85xx_idle(platform_t, int cpu); +static int mpc85xx_idle_wakeup(platform_t plat, int cpu); static void mpc85xx_reset(platform_t); @@ -95,6 +97,8 @@ static platform_method_t mpc85xx_methods PLATFORMMETHOD(platform_smp_start_cpu, mpc85xx_smp_start_cpu), PLATFORMMETHOD(platform_reset, mpc85xx_reset), + PLATFORMMETHOD(platform_idle, mpc85xx_idle), + PLATFORMMETHOD(platform_idle_wakeup, mpc85xx_idle_wakeup), PLATFORMMETHOD_END }; @@ -478,3 +482,36 @@ mpc85xx_reset(platform_t plat) ; } +static void +mpc85xx_idle(platform_t plat, int cpu) +{ +#ifdef QORIQ_DPAA + uint32_t reg; + + reg = ccsr_read4(OCP85XX_RCPM_CDOZCR); + ccsr_write4(OCP85XX_RCPM_CDOZCR, reg | (1 << cpu)); + ccsr_read4(OCP85XX_RCPM_CDOZCR); +#else + register_t msr; + + msr = mfmsr(); + /* Freescale E500 core RM section 6.4.1. */ + __asm __volatile("msync; mtmsr %0; isync" :: + "r" (msr | PSL_WE)); +#endif +} + +static int +mpc85xx_idle_wakeup(platform_t plat, int cpu) +{ +#ifdef QORIQ_DPAA + uint32_t reg; + + reg = ccsr_read4(OCP85XX_RCPM_CDOZCR); + ccsr_write4(OCP85XX_RCPM_CDOZCR, reg & ~(1 << cpu)); + ccsr_read4(OCP85XX_RCPM_CDOZCR); + + return (1); +#endif + return (0); +} Modified: projects/clang380-import/sys/powerpc/powerpc/cpu.c ============================================================================== --- projects/clang380-import/sys/powerpc/powerpc/cpu.c Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/powerpc/powerpc/cpu.c Fri Jan 1 11:19:32 2016 (r293036) @@ -607,12 +607,6 @@ cpu_idle(int busy) busy, curcpu); } -int -cpu_idle_wakeup(int cpu) -{ - return (0); -} - static void cpu_idle_60x(sbintime_t sbt) { @@ -651,14 +645,9 @@ cpu_idle_60x(sbintime_t sbt) static void cpu_idle_booke(sbintime_t sbt) { - register_t msr; - - msr = mfmsr(); #ifdef E500 - /* Freescale E500 core RM section 6.4.1. */ - __asm __volatile("msync; mtmsr %0; isync" :: - "r" (msr | PSL_WE)); + platform_cpu_idle(PCPU_GET(cpuid)); #endif } Modified: projects/clang380-import/sys/powerpc/powerpc/platform.c ============================================================================== --- projects/clang380-import/sys/powerpc/powerpc/platform.c Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/powerpc/powerpc/platform.c Fri Jan 1 11:19:32 2016 (r293036) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include <sys/lock.h> #include <sys/ktr.h> #include <sys/mutex.h> +#include <sys/proc.h> #include <sys/systm.h> #include <sys/smp.h> #include <sys/sysctl.h> @@ -252,6 +253,19 @@ cpu_reset() PLATFORM_RESET(plat_obj); } +int +cpu_idle_wakeup(int cpu) +{ + return (PLATFORM_IDLE_WAKEUP(plat_obj, cpu)); +} + +void +platform_cpu_idle(int cpu) +{ + + PLATFORM_IDLE(plat_obj, cpu); +} + /* * Platform install routines. Highest priority wins, using the same * algorithm as bus attachment. Modified: projects/clang380-import/sys/powerpc/powerpc/platform_if.m ============================================================================== --- projects/clang380-import/sys/powerpc/powerpc/platform_if.m Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/sys/powerpc/powerpc/platform_if.m Fri Jan 1 11:19:32 2016 (r293036) @@ -84,6 +84,14 @@ CODE { { return; } + static void platform_null_idle(platform_t plat, int cpu) + { + return; + } + static int platform_null_idle_wakeup(platform_t plat, int cpu) + { + return (0); + } }; /** @@ -211,6 +219,22 @@ METHOD void reset { }; /** + * @brief Idle a CPU + */ +METHOD void idle { + platform_t _plat; + int _cpu; +} DEFAULT platform_null_idle; + +/** + * @brief Wake up an idle CPU + */ +METHOD int idle_wakeup { + platform_t _plat; + int _cpu; +} DEFAULT platform_null_idle_wakeup; + +/** * @brief Suspend the CPU */ METHOD void sleep { Modified: projects/clang380-import/tools/regression/geom_concat/conf.sh ============================================================================== --- projects/clang380-import/tools/regression/geom_concat/conf.sh Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/tools/regression/geom_concat/conf.sh Fri Jan 1 11:19:32 2016 (r293036) @@ -1,7 +1,7 @@ #!/bin/sh # $FreeBSD$ -name="test" +name="$(mktemp -u concat.XXXXXX)" class="concat" base=`basename $0` Modified: projects/clang380-import/tools/regression/geom_mirror/conf.sh ============================================================================== --- projects/clang380-import/tools/regression/geom_mirror/conf.sh Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/tools/regression/geom_mirror/conf.sh Fri Jan 1 11:19:32 2016 (r293036) @@ -1,7 +1,7 @@ #!/bin/sh # $FreeBSD$ -name="test" +name="$(mktemp -u mirror.XXXXXX)" class="mirror" base=`basename $0` Modified: projects/clang380-import/tools/regression/geom_raid3/conf.sh ============================================================================== --- projects/clang380-import/tools/regression/geom_raid3/conf.sh Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/tools/regression/geom_raid3/conf.sh Fri Jan 1 11:19:32 2016 (r293036) @@ -1,7 +1,7 @@ #!/bin/sh # $FreeBSD$ -name="test" +name="$(mktemp -u graid3.XXXXXX)" class="raid3" base=`basename $0` Modified: projects/clang380-import/tools/regression/geom_shsec/conf.sh ============================================================================== --- projects/clang380-import/tools/regression/geom_shsec/conf.sh Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/tools/regression/geom_shsec/conf.sh Fri Jan 1 11:19:32 2016 (r293036) @@ -1,7 +1,7 @@ #!/bin/sh # $FreeBSD$ -name="test" +name="$(mktemp -u shsec.XXXXXX)" class="shsec" base=`basename $0` Modified: projects/clang380-import/tools/regression/geom_stripe/conf.sh ============================================================================== --- projects/clang380-import/tools/regression/geom_stripe/conf.sh Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/tools/regression/geom_stripe/conf.sh Fri Jan 1 11:19:32 2016 (r293036) @@ -1,7 +1,7 @@ #!/bin/sh # $FreeBSD$ -name="test" +name="$(mktemp -u stripe.XXXXXX)" class="stripe" base=`basename $0` Modified: projects/clang380-import/tools/regression/geom_subr.sh ============================================================================== --- projects/clang380-import/tools/regression/geom_subr.sh Fri Jan 1 10:15:06 2016 (r293035) +++ projects/clang380-import/tools/regression/geom_subr.sh Fri Jan 1 11:19:32 2016 (r293036) @@ -1,7 +1,12 @@ #!/bin/sh # $FreeBSD$ -kldstat -q -m g_${class} || g${class} load || exit 1 +if [ $(id -u) -ne 0 ]; then + echo 'Tests must be run as root' + echo 'Bail out!' + exit 1 +fi +kldstat -q -m g_${class} || geom ${class} load || exit 1 devwait() { @@ -12,3 +17,32 @@ devwait() sleep 0.2 done } + +# Need to keep track of the test md devices to avoid the scenario where a test +# failing will cause the other tests to bomb out, or a test failing will leave +# a large number of md(4) devices lingering around +: ${TMPDIR=/tmp} +export TMPDIR +TEST_MDS_FILE=${TMPDIR}/test_mds + +attach_md() +{ + local test_md + + test_md=$(mdconfig -a "$@") || exit + echo $test_md >> $TEST_MDS_FILE || exit + echo $test_md +} + +geom_test_cleanup() +{ + local test_md + + if [ -f $TEST_MDS_FILE ]; then + while read test_md; do + # The "#" tells the TAP parser this is a comment + echo "# Removing test memory disk: $test_md" + mdconfig -d -u $test_md + done < $TEST_MDS_FILE + fi +}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201601011119.u01BJW3N007944>