Skip site navigation (1)Skip section navigation (2)
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>