From owner-p4-projects@FreeBSD.ORG Sun Mar 2 17:19:55 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 35F851065677; Sun, 2 Mar 2008 17:19:55 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E92301065675 for ; Sun, 2 Mar 2008 17:19:54 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C973B8FC24 for ; Sun, 2 Mar 2008 17:19:54 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m22HJsMc009304 for ; Sun, 2 Mar 2008 17:19:54 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m22HJs5c009302 for perforce@freebsd.org; Sun, 2 Mar 2008 17:19:54 GMT (envelope-from marcel@freebsd.org) Date: Sun, 2 Mar 2008 17:19:54 GMT Message-Id: <200803021719.m22HJs5c009302@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Cc: Subject: PERFORCE change 136676 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Mar 2008 17:19:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=136676 Change 136676 by marcel@marcel_cluster on 2008/03/02 17:19:15 IFC @136675 Affected files ... .. //depot/projects/e500/Makefile.inc1#10 integrate .. //depot/projects/e500/gnu/usr.bin/binutils/ar/Makefile#4 integrate .. //depot/projects/e500/gnu/usr.bin/binutils/ranlib/Makefile#4 integrate .. //depot/projects/e500/lib/libc/sys/Symbol.map#6 integrate .. //depot/projects/e500/lib/libelf/gelf_rel.c#2 integrate .. //depot/projects/e500/lib/libelf/gelf_rela.c#2 integrate .. //depot/projects/e500/lib/msun/Makefile#10 integrate .. //depot/projects/e500/lib/msun/Symbol.map#9 integrate .. //depot/projects/e500/lib/msun/amd64/Makefile.inc#5 integrate .. //depot/projects/e500/lib/msun/amd64/e_sqrtl.S#1 branch .. //depot/projects/e500/lib/msun/i387/Makefile.inc#4 integrate .. //depot/projects/e500/lib/msun/i387/e_sqrtl.S#1 branch .. //depot/projects/e500/lib/msun/man/sqrt.3#3 integrate .. //depot/projects/e500/lib/msun/src/e_sqrt.c#2 integrate .. //depot/projects/e500/lib/msun/src/e_sqrtl.c#1 branch .. //depot/projects/e500/lib/msun/src/math.h#6 integrate .. //depot/projects/e500/sys/amd64/amd64/identcpu.c#5 integrate .. //depot/projects/e500/sys/amd64/amd64/mp_machdep.c#5 integrate .. //depot/projects/e500/sys/amd64/include/smp.h#4 integrate .. //depot/projects/e500/sys/compat/linux/linux_futex.c#3 integrate .. //depot/projects/e500/sys/conf/NOTES#15 integrate .. //depot/projects/e500/sys/conf/files#16 integrate .. //depot/projects/e500/sys/conf/options#12 integrate .. //depot/projects/e500/sys/geom/part/g_part_vtoc8.c#1 branch .. //depot/projects/e500/sys/i386/i386/identcpu.c#5 integrate .. //depot/projects/e500/sys/i386/i386/mp_machdep.c#6 integrate .. //depot/projects/e500/sys/i386/include/smp.h#4 integrate .. //depot/projects/e500/sys/ia64/ia64/mp_machdep.c#4 integrate .. //depot/projects/e500/sys/kern/init_main.c#9 integrate .. //depot/projects/e500/sys/kern/init_sysent.c#5 integrate .. //depot/projects/e500/sys/kern/kern_cpuset.c#1 branch .. //depot/projects/e500/sys/kern/kern_thread.c#11 integrate .. //depot/projects/e500/sys/kern/sched_4bsd.c#7 integrate .. //depot/projects/e500/sys/kern/sched_ule.c#9 integrate .. //depot/projects/e500/sys/kern/subr_smp.c#7 integrate .. //depot/projects/e500/sys/kern/syscalls.c#5 integrate .. //depot/projects/e500/sys/kern/syscalls.master#6 integrate .. //depot/projects/e500/sys/kern/systrace_args.c#5 integrate .. //depot/projects/e500/sys/modules/geom/Makefile#5 integrate .. //depot/projects/e500/sys/modules/geom/geom_apple/Makefile#2 delete .. //depot/projects/e500/sys/modules/geom/geom_gpt/Makefile#2 delete .. //depot/projects/e500/sys/modules/geom/geom_part/Makefile#1 branch .. //depot/projects/e500/sys/netinet/tcp_input.c#9 integrate .. //depot/projects/e500/sys/netipsec/key.c#4 integrate .. //depot/projects/e500/sys/netipsec/key_debug.c#3 integrate .. //depot/projects/e500/sys/powerpc/aim/machdep.c#10 integrate .. //depot/projects/e500/sys/powerpc/aim/swtch.S#5 integrate .. //depot/projects/e500/sys/powerpc/aim/trap.c#8 integrate .. //depot/projects/e500/sys/powerpc/aim/trap_subr.S#6 integrate .. //depot/projects/e500/sys/powerpc/aim/vm_machdep.c#9 integrate .. //depot/projects/e500/sys/powerpc/include/frame.h#4 integrate .. //depot/projects/e500/sys/powerpc/include/hid.h#6 integrate .. //depot/projects/e500/sys/powerpc/include/kdb.h#5 integrate .. //depot/projects/e500/sys/powerpc/include/pcb.h#5 integrate .. //depot/projects/e500/sys/powerpc/include/pcpu.h#5 integrate .. //depot/projects/e500/sys/powerpc/powerpc/db_trace.c#5 integrate .. //depot/projects/e500/sys/powerpc/powerpc/genassym.c#8 integrate .. //depot/projects/e500/sys/powerpc/powerpc/mp_machdep.c#2 integrate .. //depot/projects/e500/sys/sparc64/sparc64/mp_machdep.c#5 integrate .. //depot/projects/e500/sys/sun4v/sun4v/mp_machdep.c#4 integrate .. //depot/projects/e500/sys/sys/_types.h#2 integrate .. //depot/projects/e500/sys/sys/cpuset.h#1 branch .. //depot/projects/e500/sys/sys/proc.h#11 integrate .. //depot/projects/e500/sys/sys/sched.h#4 integrate .. //depot/projects/e500/sys/sys/smp.h#3 integrate .. //depot/projects/e500/sys/sys/syscall.h#5 integrate .. //depot/projects/e500/sys/sys/syscall.mk#5 integrate .. //depot/projects/e500/sys/sys/sysproto.h#5 integrate .. //depot/projects/e500/sys/sys/types.h#3 integrate .. //depot/projects/e500/sys/sys/vtoc.h#1 branch .. //depot/projects/e500/usr.bin/Makefile#7 integrate .. //depot/projects/e500/usr.bin/ar/write.c#3 integrate .. //depot/projects/e500/usr.bin/cpuset/Makefile#1 branch .. //depot/projects/e500/usr.bin/cpuset/cpuset.c#1 branch Differences ... ==== //depot/projects/e500/Makefile.inc1#10 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.600 2008/02/25 16:29:54 ru Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.601 2008/03/02 11:10:46 ru Exp $ # # Make command line options: # -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir @@ -203,6 +203,9 @@ GROFF_BIN_PATH=${WORLDTMP}/legacy/usr/bin \ GROFF_FONT_PATH=${WORLDTMP}/legacy/usr/share/groff_font \ GROFF_TMAC_PATH=${WORLDTMP}/legacy/usr/share/tmac +.if ${OSRELDATE} < 700044 +CROSSENV+= AR=gnu-ar RANLIB=gnu-ranlib +.endif # bootstrap-tools stage BMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ @@ -972,10 +975,6 @@ .endif .endif -.if make(cross-tools) && ${BOOTSTRAPPING} < 700044 -.MAKEFLAGS+= -D_WITH_GNUAR -.endif - cross-tools: .for _tool in \ gnu/usr.bin/binutils \ ==== //depot/projects/e500/gnu/usr.bin/binutils/ar/Makefile#4 (text+ko) ==== @@ -1,16 +1,14 @@ -# $FreeBSD: src/gnu/usr.bin/binutils/ar/Makefile,v 1.17 2008/02/25 16:16:16 ru Exp $ +# $FreeBSD: src/gnu/usr.bin/binutils/ar/Makefile,v 1.18 2008/03/02 11:10:46 ru Exp $ .include "../Makefile.inc0" .PATH: ${SRCDIR}/binutils ${SRCDIR}/binutils/doc -.if !defined(_WITH_GNUAR) PROGNAME= gnu-ar MAN= gnu-ar.1 gnu-ar.1: ar.1 cat ${.ALLSRC} > ${.TARGET} CLEANFILES+= gnu-ar.1 -.endif PROG= ar SRCS= ar.c not-ranlib.c ==== //depot/projects/e500/gnu/usr.bin/binutils/ranlib/Makefile#4 (text+ko) ==== @@ -1,16 +1,14 @@ -# $FreeBSD: src/gnu/usr.bin/binutils/ranlib/Makefile,v 1.18 2008/02/25 16:16:16 ru Exp $ +# $FreeBSD: src/gnu/usr.bin/binutils/ranlib/Makefile,v 1.19 2008/03/02 11:10:46 ru Exp $ .include "../Makefile.inc0" .PATH: ${SRCDIR}/binutils ${SRCDIR}/binutils/doc -.if !defined(_WITH_GNUAR) PROGNAME= gnu-ranlib MAN= gnu-ranlib.1 gnu-ranlib.1: ranlib.1 cat ${.ALLSRC} > ${.TARGET} CLEANFILES+= gnu-ranlib.1 -.endif PROG= ranlib SRCS= ar.c is-ranlib.c ==== //depot/projects/e500/lib/libc/sys/Symbol.map#6 (text) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/lib/libc/sys/Symbol.map,v 1.9 2007/08/22 01:56:35 davidxu Exp $ + * $FreeBSD: src/lib/libc/sys/Symbol.map,v 1.10 2008/03/02 07:39:22 jeff Exp $ */ /* @@ -66,6 +66,11 @@ clock_settime; close; connect; + cpuset; + cpuset_getid; + cpuset_setid; + cpuset_getaffinity; + cpuset_setaffinity; dup; dup2; eaccess; @@ -450,6 +455,16 @@ __sys_close; _connect; __sys_connect; + __cpuset; + __sys_cpuset; + __cpuset_getid; + __sys_cpuset_getid; + __cpuset_setid; + __sys_cpuset_setid; + __cpuset_getaffinity; + __sys_cpuset_getaffinity; + __cpuset_setaffinity; + __sys_cpuset_setaffinity; _dup; __sys_dup; _dup2; ==== //depot/projects/e500/lib/libelf/gelf_rel.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libelf/gelf_rel.c,v 1.1 2006/11/11 17:16:33 jkoshy Exp $"); +__FBSDID("$FreeBSD: src/lib/libelf/gelf_rel.c,v 1.2 2008/03/02 06:33:10 jkoshy Exp $"); #include @@ -78,7 +78,9 @@ rel32 = (Elf32_Rel *) d->d_buf + ndx; dst->r_offset = (Elf64_Addr) rel32->r_offset; - dst->r_info = (Elf64_Xword) rel32->r_info; + dst->r_info = ELF64_R_INFO( + (Elf64_Xword) ELF32_R_SYM(rel32->r_info), + ELF32_R_TYPE(rel32->r_info)); } else { @@ -133,7 +135,14 @@ rel32 = (Elf32_Rel *) d->d_buf + ndx; LIBELF_COPY_U32(rel32, dr, r_offset); - LIBELF_COPY_U32(rel32, dr, r_info); + + if (ELF64_R_SYM(dr->r_info) > ELF32_R_SYM(~0UL) || + ELF64_R_TYPE(dr->r_info) > ELF32_R_TYPE(~0U)) { + LIBELF_SET_ERROR(RANGE, 0); + return (0); + } + rel32->r_info = ELF32_R_INFO(ELF64_R_SYM(dr->r_info), + ELF64_R_TYPE(dr->r_info)); } else { rel64 = (Elf64_Rel *) d->d_buf + ndx; ==== //depot/projects/e500/lib/libelf/gelf_rela.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/lib/libelf/gelf_rela.c,v 1.1 2006/11/11 17:16:33 jkoshy Exp $"); +__FBSDID("$FreeBSD: src/lib/libelf/gelf_rela.c,v 1.2 2008/03/02 06:33:10 jkoshy Exp $"); #include @@ -78,7 +78,9 @@ rela32 = (Elf32_Rela *) d->d_buf + ndx; dst->r_offset = (Elf64_Addr) rela32->r_offset; - dst->r_info = (Elf64_Xword) rela32->r_info; + dst->r_info = ELF64_R_INFO( + (Elf64_Xword) ELF32_R_SYM(rela32->r_info), + ELF32_R_TYPE(rela32->r_info)); dst->r_addend = (Elf64_Sxword) rela32->r_addend; } else { @@ -134,7 +136,15 @@ rela32 = (Elf32_Rela *) d->d_buf + ndx; LIBELF_COPY_U32(rela32, dr, r_offset); - LIBELF_COPY_U32(rela32, dr, r_info); + + if (ELF64_R_SYM(dr->r_info) > ELF32_R_SYM(~0UL) || + ELF64_R_TYPE(dr->r_info) > ELF32_R_TYPE(~0U)) { + LIBELF_SET_ERROR(RANGE, 0); + return (0); + } + rela32->r_info = ELF32_R_INFO(ELF64_R_SYM(dr->r_info), + ELF64_R_TYPE(dr->r_info)); + LIBELF_COPY_S32(rela32, dr, r_addend); } else { rela64 = (Elf64_Rela *) d->d_buf + ndx; ==== //depot/projects/e500/lib/msun/Makefile#10 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 5.1beta 93/09/24 -# $FreeBSD: src/lib/msun/Makefile,v 1.89 2008/02/18 17:27:11 das Exp $ +# $FreeBSD: src/lib/msun/Makefile,v 1.90 2008/03/02 01:48:17 das Exp $ # # ==================================================== # Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. @@ -79,7 +79,7 @@ COMMON_SRCS+= s_copysignl.c s_fabsl.c s_llrintl.c s_lrintl.c s_modfl.c .if ${LDBL_PREC} != 53 # If long double != double use these; otherwise, we alias the double versions. -COMMON_SRCS+= k_cosl.c k_sinl.c k_tanl.c s_ceill.c s_cosl.c \ +COMMON_SRCS+= e_sqrtl.c k_cosl.c k_sinl.c k_tanl.c s_ceill.c s_cosl.c \ s_exp2l.c s_floorl.c s_fmal.c \ s_frexpl.c s_logbl.c s_nanl.c s_nextafterl.c s_nexttoward.c \ s_rintl.c s_scalbnl.c s_sinl.c s_tanl.c s_truncl.c @@ -171,7 +171,7 @@ MLINKS+=scalbn.3 scalbnf.3 scalbn.3 scalbnl.3 MLINKS+=sin.3 sinf.3 sin.3 sinl.3 MLINKS+=sinh.3 sinhf.3 -MLINKS+=sqrt.3 cbrt.3 sqrt.3 cbrtf.3 sqrt.3 sqrtf.3 +MLINKS+=sqrt.3 cbrt.3 sqrt.3 cbrtf.3 sqrt.3 sqrtf.3 sqrt.3 sqrtl.3 MLINKS+=tan.3 tanf.3 tan.3 tanl.3 MLINKS+=tanh.3 tanhf.3 MLINKS+=trunc.3 truncf.3 trunc.3 truncl.3 ==== //depot/projects/e500/lib/msun/Symbol.map#9 (text) ==== @@ -1,5 +1,5 @@ /* - * $FreeBSD: src/lib/msun/Symbol.map,v 1.14 2008/02/18 17:27:11 das Exp $ + * $FreeBSD: src/lib/msun/Symbol.map,v 1.15 2008/03/02 01:48:17 das Exp $ */ /* 7.0-CURRENT */ @@ -202,4 +202,5 @@ cosl; tanl; tgammaf; + sqrtl; }; ==== //depot/projects/e500/lib/msun/amd64/Makefile.inc#5 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/lib/msun/amd64/Makefile.inc,v 1.8 2008/02/13 06:01:48 bde Exp $ +# $FreeBSD: src/lib/msun/amd64/Makefile.inc,v 1.9 2008/03/02 01:48:17 das Exp $ -ARCH_SRCS = e_sqrt.S e_sqrtf.S s_llrint.S s_llrintf.S s_llrintl.S \ +ARCH_SRCS = e_sqrt.S e_sqrtf.S e_sqrtl.S s_llrint.S s_llrintf.S s_llrintl.S \ s_logbl.S s_lrint.S s_lrintf.S s_lrintl.S \ e_remainder.S e_remainderf.S s_remquo.S s_remquof.S \ s_rintl.S s_scalbn.S s_scalbnf.S s_scalbnl.S ==== //depot/projects/e500/lib/msun/i387/Makefile.inc#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/lib/msun/i387/Makefile.inc,v 1.11 2008/01/14 02:12:07 das Exp $ +# $FreeBSD: src/lib/msun/i387/Makefile.inc,v 1.12 2008/03/02 01:48:17 das Exp $ ARCH_SRCS = e_exp.S e_fmod.S e_log.S e_log10.S \ e_remainder.S e_sqrt.S s_ceil.S s_copysign.S \ @@ -13,7 +13,7 @@ s_remquof.S s_rintf.S s_scalbnf.S s_significandf.S s_truncf.S # long double counterparts -ARCH_SRCS+= s_ceill.S s_copysignl.S s_floorl.S s_llrintl.S \ +ARCH_SRCS+= e_sqrtl.S s_ceill.S s_copysignl.S s_floorl.S s_llrintl.S \ s_logbl.S s_lrintl.S s_rintl.S s_scalbnl.S s_truncl.S LDBL_PREC = 64 # XXX 64-bit format, but truncated to 53 bits ==== //depot/projects/e500/lib/msun/man/sqrt.3#3 (text+ko) ==== @@ -26,16 +26,17 @@ .\" SUCH DAMAGE. .\" .\" from: @(#)sqrt.3 6.4 (Berkeley) 5/6/91 -.\" $FreeBSD: src/lib/msun/man/sqrt.3,v 1.14 2007/12/14 07:53:09 das Exp $ +.\" $FreeBSD: src/lib/msun/man/sqrt.3,v 1.15 2008/03/02 01:48:17 das Exp $ .\" -.Dd December 14, 2007 +.Dd March 1, 2008 .Dt SQRT 3 .Os .Sh NAME .Nm cbrt , .Nm cbrtf , .Nm sqrt , -.Nm sqrtf +.Nm sqrtf , +.Nm sqrtl .Nd cube root and square root functions .Sh LIBRARY .Lb libm @@ -49,6 +50,8 @@ .Fn sqrt "double x" .Ft float .Fn sqrtf "float x" +.Ft long double +.Fn sqrtl "long double x" .Sh DESCRIPTION The .Fn cbrt @@ -59,9 +62,10 @@ .Ar x . .Pp The -.Fn sqrt -and the -.Fn sqrtf +.Fn sqrt , +.Fn sqrtf , +and +.Fn sqrtl functions compute the non-negative square root of x. .Sh RETURN VALUES @@ -71,9 +75,10 @@ .Fn cbrtf functions return the requested cube root. The -.Fn sqrt -and the -.Fn sqrtf +.Fn sqrt , +.Fn sqrtf , +and +.Fn sqrtl functions return the requested square root unless an error occurs. An attempt to take the @@ -90,8 +95,9 @@ .Fn cbrt , .Fn cbrtf , .Fn sqrt , +.Fn sqrtf , and -.Fn sqrtf +.Fn sqrtl functions conform to .St -isoC-99 . .Sh HISTORY @@ -99,3 +105,7 @@ .Fn cbrt function appeared in .Bx 4.3 . +The +.Fn sqrtl +function appeared in +.Fx 8.0 . ==== //depot/projects/e500/lib/msun/src/e_sqrt.c#2 (text+ko) ==== @@ -11,9 +11,8 @@ * ==================================================== */ -#ifndef lint -static char rcsid[] = "$FreeBSD: src/lib/msun/src/e_sqrt.c,v 1.10 2005/02/04 18:26:06 das Exp $"; -#endif +#include +__FBSDID("$FreeBSD: src/lib/msun/src/e_sqrt.c,v 1.11 2008/03/02 01:47:58 das Exp $"); /* __ieee754_sqrt(x) * Return correctly rounded sqrt. @@ -85,6 +84,8 @@ *--------------- */ +#include + #include "math.h" #include "math_private.h" @@ -187,6 +188,10 @@ return z; } +#if (LDBL_MANT_DIG == 53) +__weak_reference(sqrt, sqrtl); +#endif + /* Other methods (use floating-point arithmetic) ------------- ==== //depot/projects/e500/lib/msun/src/math.h#6 (text+ko) ==== @@ -11,7 +11,7 @@ /* * from: @(#)fdlibm.h 5.1 93/09/24 - * $FreeBSD: src/lib/msun/src/math.h,v 1.69 2008/02/18 17:27:10 das Exp $ + * $FreeBSD: src/lib/msun/src/math.h,v 1.70 2008/03/02 01:47:58 das Exp $ */ #ifndef _MATH_H_ @@ -468,8 +468,8 @@ long double sinhl(long double); #endif long double sinl(long double); +long double sqrtl(long double); #if 0 -long double sqrtl(long double); long double tanhl(long double); #endif long double tanl(long double); ==== //depot/projects/e500/sys/amd64/amd64/identcpu.c#5 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.157 2008/02/02 23:17:27 das Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.158 2008/03/02 07:58:40 jeff Exp $"); #include "opt_cpu.h" @@ -97,6 +97,10 @@ { "Sledgehammer", CPUCLASS_K8 }, /* CPU_SLEDGEHAMMER */ }; +int cpu_cores; +int cpu_logical; + + extern int pq_l2size; extern int pq_l2nways; @@ -360,11 +364,13 @@ if ((regs[0] & 0x1f) != 0) cmp = ((regs[0] >> 26) & 0x3f) + 1; } + cpu_cores = cmp; + cpu_logical = htt / cmp; if (cmp > 1) printf("\n Cores per package: %d", cmp); if ((htt / cmp) > 1) printf("\n Logical CPUs per core: %d", - htt / cmp); + cpu_logical); } } /* Avoid ugly blank lines: only print newline when we have to. */ ==== //depot/projects/e500/sys/amd64/amd64/mp_machdep.c#5 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.287 2007/08/02 21:17:58 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.288 2008/03/02 07:58:40 jeff Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -83,12 +83,6 @@ extern struct pcpu __pcpu[]; -/* - * CPU topology map datastructures for HTT. - */ -static struct cpu_group mp_groups[MAXCPU]; -static struct cpu_top mp_top; - /* AP uses this during bootstrap. Do not staticize. */ char *bootSTK; static int bootAP; @@ -182,40 +176,38 @@ mem_range_softc.mr_op->initAP(&mem_range_softc); } -void -mp_topology(void) +struct cpu_group * +cpu_topo(void) { - struct cpu_group *group; - int apic_id; - int groups; - int cpu; - - /* Build the smp_topology map. */ - /* Nothing to do if there is no HTT support. */ - if (hyperthreading_cpus <= 1) - return; - group = &mp_groups[0]; - groups = 1; - for (cpu = 0, apic_id = 0; apic_id <= MAX_APIC_ID; apic_id++) { - if (!cpu_info[apic_id].cpu_present) - continue; - /* - * If the current group has members and we're not a logical - * cpu, create a new group. - */ - if (group->cg_count != 0 && - (apic_id % hyperthreading_cpus) == 0) { - group++; - groups++; - } - group->cg_count++; - group->cg_mask |= 1 << cpu; - cpu++; + if (cpu_cores == 0) + cpu_cores = 1; + if (cpu_logical == 0) + cpu_logical = 1; + if (mp_ncpus % (cpu_cores * cpu_logical) != 0) { + printf("WARNING: Non-uniform processors.\n"); + printf("WARNING: Using suboptimal topology.\n"); + return (smp_topo_none()); } - - mp_top.ct_count = groups; - mp_top.ct_group = mp_groups; - smp_topology = &mp_top; + /* + * No multi-core or hyper-threaded. + */ + if (cpu_logical * cpu_cores == 1) + return (smp_topo_none()); + /* + * Only HTT no multi-core. + */ + if (cpu_logical > 1 && cpu_cores == 1) + return (smp_topo_1level(CG_SHARE_L1, cpu_logical, CG_FLAG_HTT)); + /* + * Only multi-core no HTT. + */ + if (cpu_cores > 1 && cpu_logical == 1) + return (smp_topo_1level(CG_SHARE_NONE, cpu_cores, 0)); + /* + * Both HTT and multi-core. + */ + return (smp_topo_2level(CG_SHARE_NONE, cpu_cores, + CG_SHARE_L1, cpu_logical, CG_FLAG_HTT)); } /* @@ -409,9 +401,6 @@ } set_interrupt_apic_ids(); - - /* Last, setup the cpu topology now that we have probed CPUs */ - mp_topology(); } ==== //depot/projects/e500/sys/amd64/include/smp.h#4 (text+ko) ==== @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $FreeBSD: src/sys/amd64/include/smp.h,v 1.91 2007/09/20 20:38:43 attilio Exp $ + * $FreeBSD: src/sys/amd64/include/smp.h,v 1.92 2008/03/02 07:58:40 jeff Exp $ * */ @@ -36,6 +36,10 @@ extern struct pcb stoppcbs[]; extern int cpu_apic_ids[]; +/* global data in identcpu.c */ +extern int cpu_cores; +extern int cpu_logical; + /* IPI handlers */ inthand_t IDTVEC(invltlb), /* TLB shootdowns - global */ @@ -57,7 +61,6 @@ void ipi_bitmap_handler(struct trapframe frame); u_int mp_bootaddress(u_int); int mp_grab_cpu_hlt(void); -void mp_topology(void); void smp_cache_flush(void); void smp_invlpg(vm_offset_t addr); void smp_masked_invlpg(u_int mask, vm_offset_t addr); ==== //depot/projects/e500/sys/compat/linux/linux_futex.c#3 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_futex.c,v 1.10 2007/05/23 08:33:05 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_futex.c,v 1.11 2008/03/02 14:00:50 kib Exp $"); #if 0 __KERNEL_RCSID(1, "$NetBSD: linux_futex.c,v 1.7 2006/07/24 19:01:49 manu Exp $"); #endif @@ -327,7 +327,7 @@ default: printf("linux_sys_futex: unknown op %d\n", args->op); - break; + return (ENOSYS); } return (0); } ==== //depot/projects/e500/sys/conf/NOTES#15 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1471 2008/03/01 01:09:35 jfv Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1472 2008/03/02 06:24:29 marcel Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -149,6 +149,7 @@ options GEOM_PART_BSD # BSD disklabel options GEOM_PART_GPT # GPT partitioning options GEOM_PART_MBR # MBR partitioning +options GEOM_PART_VTOC8 # SMI VTOC8 disk label options GEOM_PC98 # NEC PC9800 partitioning options GEOM_RAID3 # RAID3 functionality. options GEOM_SHSEC # Shared secret. ==== //depot/projects/e500/sys/conf/files#16 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1273 2008/03/01 03:58:49 jfv Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1275 2008/03/02 07:39:21 jeff Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1328,6 +1328,7 @@ geom/part/g_part_bsd.c optional geom_part_bsd geom/part/g_part_gpt.c optional geom_part_gpt geom/part/g_part_mbr.c optional geom_part_mbr +geom/part/g_part_vtoc8.c optional geom_part_vtoc8 geom/raid3/g_raid3.c optional geom_raid3 geom/raid3/g_raid3_ctl.c optional geom_raid3 geom/shsec/g_shsec.c optional geom_shsec @@ -1445,6 +1446,7 @@ kern/kern_condvar.c standard kern/kern_conf.c standard kern/kern_cpu.c standard +kern/kern_cpuset.c standard kern/kern_context.c standard kern/kern_descrip.c standard kern/kern_environment.c standard ==== //depot/projects/e500/sys/conf/options#12 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.618 2008/02/20 07:50:13 thompsa Exp $ +# $FreeBSD: src/sys/conf/options,v 1.619 2008/03/02 00:52:49 marcel Exp $ # # On the handling of kernel options # @@ -94,6 +94,7 @@ GEOM_PART_BSD opt_geom.h GEOM_PART_GPT opt_geom.h GEOM_PART_MBR opt_geom.h +GEOM_PART_VTOC8 opt_geom.h GEOM_PC98 opt_geom.h GEOM_RAID3 opt_geom.h GEOM_SHSEC opt_geom.h ==== //depot/projects/e500/sys/i386/i386/identcpu.c#5 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/identcpu.c,v 1.183 2008/02/29 19:18:09 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/identcpu.c,v 1.184 2008/03/02 07:58:40 jeff Exp $"); #include "opt_cpu.h" @@ -142,6 +142,9 @@ { "Pentium 4", CPUCLASS_686 }, /* CPU_P4 */ }; +int cpu_cores; +int cpu_logical; + #if defined(I586_CPU) && !defined(NO_F00F_HACK) int has_f00f_bug = 0; /* Initialized so that it can be patched. */ #endif @@ -857,11 +860,13 @@ if ((regs[0] & 0x1f) != 0) cmp = ((regs[0] >> 26) & 0x3f) + 1; } + cpu_cores = cmp; + cpu_logical = htt / cmp; if (cmp > 1) printf("\n Cores per package: %d", cmp); if ((htt / cmp) > 1) printf("\n Logical CPUs per core: %d", - htt / cmp); + cpu_logical); } } else if (strcmp(cpu_vendor, "CyrixInstead") == 0) { printf(" DIR=0x%04x", cyrix_did); ==== //depot/projects/e500/sys/i386/i386/mp_machdep.c#6 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.282 2007/11/13 23:00:24 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.283 2008/03/02 07:58:40 jeff Exp $"); #include "opt_apic.h" #include "opt_cpu.h" @@ -135,12 +135,6 @@ extern struct pcpu __pcpu[]; -/* - * CPU topology map datastructures for HTT. - */ -static struct cpu_group mp_groups[MAXCPU]; -static struct cpu_top mp_top; - /* AP uses this during bootstrap. Do not staticize. */ char *bootSTK; static int bootAP; @@ -238,40 +232,38 @@ mem_range_softc.mr_op->initAP(&mem_range_softc); } -void -mp_topology(void) +struct cpu_group * +cpu_topo(void) { - struct cpu_group *group; - int apic_id; - int groups; - int cpu; - - /* Build the smp_topology map. */ - /* Nothing to do if there is no HTT support. */ - if (hyperthreading_cpus <= 1) - return; - group = &mp_groups[0]; - groups = 1; - for (cpu = 0, apic_id = 0; apic_id <= MAX_APIC_ID; apic_id++) { - if (!cpu_info[apic_id].cpu_present) - continue; - /* - * If the current group has members and we're not a logical - * cpu, create a new group. - */ - if (group->cg_count != 0 && - (apic_id % hyperthreading_cpus) == 0) { - group++; - groups++; - } - group->cg_count++; - group->cg_mask |= 1 << cpu; - cpu++; + if (cpu_cores == 0) + cpu_cores = 1; + if (cpu_logical == 0) + cpu_logical = 1; + if (mp_ncpus % (cpu_cores * cpu_logical) != 0) { + printf("WARNING: Non-uniform processors.\n"); + printf("WARNING: Using suboptimal topology.\n"); + return (smp_topo_none()); } - - mp_top.ct_count = groups; - mp_top.ct_group = mp_groups; - smp_topology = &mp_top; + /* + * No multi-core or hyper-threaded. + */ + if (cpu_logical * cpu_cores == 1) + return (smp_topo_none()); + /* + * Only HTT no multi-core. + */ + if (cpu_logical > 1 && cpu_cores == 1) + return (smp_topo_1level(CG_SHARE_L1, cpu_logical, CG_FLAG_HTT)); + /* + * Only multi-core no HTT. + */ + if (cpu_cores > 1 && cpu_logical == 1) + return (smp_topo_1level(CG_SHARE_NONE, cpu_cores, 0)); + /* + * Both HTT and multi-core. + */ + return (smp_topo_2level(CG_SHARE_NONE, cpu_cores, + CG_SHARE_L1, cpu_logical, CG_FLAG_HTT)); } @@ -459,9 +451,6 @@ } set_interrupt_apic_ids(); - - /* Last, setup the cpu topology now that we have probed CPUs */ - mp_topology(); } ==== //depot/projects/e500/sys/i386/include/smp.h#4 (text+ko) ==== @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $FreeBSD: src/sys/i386/include/smp.h,v 1.90 2007/09/20 20:38:43 attilio Exp $ + * $FreeBSD: src/sys/i386/include/smp.h,v 1.91 2008/03/02 07:58:41 jeff Exp $ * */ @@ -45,6 +45,10 @@ extern u_long *ipi_lazypmap_counts[MAXCPU]; #endif +/* global data in identcpu.c */ +extern int cpu_cores; +extern int cpu_logical; + /* IPI handlers */ inthand_t IDTVEC(invltlb), /* TLB shootdowns - global */ @@ -67,7 +71,6 @@ void ipi_bitmap_handler(struct trapframe frame); u_int mp_bootaddress(u_int); int mp_grab_cpu_hlt(void); -void mp_topology(void); void smp_cache_flush(void); void smp_invlpg(vm_offset_t addr); void smp_masked_invlpg(u_int mask, vm_offset_t addr); ==== //depot/projects/e500/sys/ia64/ia64/mp_machdep.c#4 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/ia64/ia64/mp_machdep.c,v 1.67 2007/08/06 05:15:57 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/ia64/ia64/mp_machdep.c,v 1.68 2008/03/02 07:58:41 jeff Exp $"); #include "opt_kstack_pages.h" @@ -84,6 +84,13 @@ static void cpu_mp_unleash(void *); +struct cpu_group * +cpu_topo(void) +{ + + return smp_topo_none(); +} + void ia64_ap_startup(void) { ==== //depot/projects/e500/sys/kern/init_main.c#9 (text+ko) ==== @@ -42,7 +42,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/init_main.c,v 1.290 2008/01/10 22:11:20 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/init_main.c,v 1.291 2008/03/02 07:39:22 jeff Exp $"); #include "opt_ddb.h" #include "opt_init_path.h" @@ -73,6 +73,7 @@ #include #include #include +#include #include @@ -430,6 +431,7 @@ td->td_base_pri = PUSER; td->td_oncpu = 0; td->td_flags = TDF_INMEM|TDP_KTHREAD; + td->td_cpuset = cpuset_thread0(); p->p_peers = 0; p->p_leader = p; ==== //depot/projects/e500/sys/kern/init_sysent.c#5 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/kern/init_sysent.c,v 1.233 2008/02/12 20:11:54 ru Exp $ - * created from FreeBSD: src/sys/kern/syscalls.master,v 1.237 2008/02/12 20:09:04 ru Exp + * $FreeBSD: src/sys/kern/init_sysent.c,v 1.234 2008/03/02 07:41:10 jeff Exp $ + * created from FreeBSD: src/sys/kern/syscalls.master,v 1.238 2008/03/02 07:39:22 jeff Exp */ #include "opt_compat.h" @@ -513,4 +513,9 @@ { AS(thr_kill2_args), (sy_call_t *)thr_kill2, AUE_KILL, NULL, 0, 0 }, /* 481 = thr_kill2 */ { AS(shm_open_args), (sy_call_t *)shm_open, AUE_SHMOPEN, NULL, 0, 0 }, /* 482 = shm_open */ { AS(shm_unlink_args), (sy_call_t *)shm_unlink, AUE_SHMUNLINK, NULL, 0, 0 }, /* 483 = shm_unlink */ + { AS(cpuset_args), (sy_call_t *)cpuset, AUE_NULL, NULL, 0, 0 }, /* 484 = cpuset */ + { AS(cpuset_setid_args), (sy_call_t *)cpuset_setid, AUE_NULL, NULL, 0, 0 }, /* 485 = cpuset_setid */ + { AS(cpuset_getid_args), (sy_call_t *)cpuset_getid, AUE_NULL, NULL, 0, 0 }, /* 486 = cpuset_getid */ + { AS(cpuset_getaffinity_args), (sy_call_t *)cpuset_getaffinity, AUE_NULL, NULL, 0, 0 }, /* 487 = cpuset_getaffinity */ + { AS(cpuset_setaffinity_args), (sy_call_t *)cpuset_setaffinity, AUE_NULL, NULL, 0, 0 }, /* 488 = cpuset_setaffinity */ }; ==== //depot/projects/e500/sys/kern/kern_thread.c#11 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_thread.c,v 1.265 2007/12/22 04:56:48 julian Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_thread.c,v 1.266 2008/03/02 07:39:22 jeff Exp $"); >>> TRUNCATED FOR MAIL (1000 lines) <<<