From owner-svn-src-projects@FreeBSD.ORG Tue Jul 6 15:46:00 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 869CE106564A; Tue, 6 Jul 2010 15:46:00 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 711AA8FC19; Tue, 6 Jul 2010 15:46:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o66Fk0KO012967; Tue, 6 Jul 2010 15:46:00 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o66FjxYB012938; Tue, 6 Jul 2010 15:45:59 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007061545.o66FjxYB012938@svn.freebsd.org> From: Nathan Whitehorn Date: Tue, 6 Jul 2010 15:45:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209727 - in projects/ppc64: . bin/sh etc/mtree gnu/usr.bin/gdb/libgdb include/arpa lib/libc/gmon lib/libc/net lib/libc/posix1e lib/libfetch lib/libthread_db libexec/rtld-elf sbin/bsdla... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Jul 2010 15:46:00 -0000 Author: nwhitehorn Date: Tue Jul 6 15:45:59 2010 New Revision: 209727 URL: http://svn.freebsd.org/changeset/base/209727 Log: IFC @ 209726 Added: projects/ppc64/share/man/man4/siftr.4 - copied unchanged from r209726, head/share/man/man4/siftr.4 projects/ppc64/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap_impl.h - copied unchanged from r209726, head/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap_impl.h projects/ppc64/sys/cddl/contrib/opensolaris/uts/intel/dtrace/ - copied from r209726, head/sys/cddl/contrib/opensolaris/uts/intel/dtrace/ projects/ppc64/sys/cddl/contrib/opensolaris/uts/sparc/dtrace/ - copied from r209726, head/sys/cddl/contrib/opensolaris/uts/sparc/dtrace/ projects/ppc64/sys/dev/e1000/e1000_mbx.c - copied unchanged from r209726, head/sys/dev/e1000/e1000_mbx.c projects/ppc64/sys/dev/e1000/e1000_mbx.h - copied unchanged from r209726, head/sys/dev/e1000/e1000_mbx.h projects/ppc64/sys/dev/e1000/e1000_vf.c - copied unchanged from r209726, head/sys/dev/e1000/e1000_vf.c projects/ppc64/sys/dev/e1000/e1000_vf.h - copied unchanged from r209726, head/sys/dev/e1000/e1000_vf.h projects/ppc64/sys/modules/siftr/ - copied from r209726, head/sys/modules/siftr/ projects/ppc64/sys/netinet/siftr.c - copied unchanged from r209726, head/sys/netinet/siftr.c projects/ppc64/usr.sbin/pc-sysinstall/Makefile.inc - copied unchanged from r209726, head/usr.sbin/pc-sysinstall/Makefile.inc projects/ppc64/usr.sbin/pc-sysinstall/backend-query/list-config.sh - copied unchanged from r209726, head/usr.sbin/pc-sysinstall/backend-query/list-config.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/list-mirrors.sh - copied unchanged from r209726, head/usr.sbin/pc-sysinstall/backend-query/list-mirrors.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-ftp.sh - copied unchanged from r209726, head/usr.sbin/pc-sysinstall/backend/functions-ftp.sh Deleted: projects/ppc64/sys/powerpc/include/intr.h Modified: projects/ppc64/ObsoleteFiles.inc projects/ppc64/bin/sh/expand.c projects/ppc64/bin/sh/jobs.c projects/ppc64/bin/sh/jobs.h projects/ppc64/bin/sh/parser.c projects/ppc64/bin/sh/sh.1 projects/ppc64/etc/mtree/BSD.usr.dist projects/ppc64/gnu/usr.bin/gdb/libgdb/fbsd-threads.c projects/ppc64/include/arpa/inet.h projects/ppc64/lib/libc/gmon/gmon.c projects/ppc64/lib/libc/net/sctp_recvmsg.3 projects/ppc64/lib/libc/net/sctp_send.3 projects/ppc64/lib/libc/net/sctp_sys_calls.c projects/ppc64/lib/libc/posix1e/acl_from_text.c projects/ppc64/lib/libfetch/http.c projects/ppc64/lib/libthread_db/Symbol.map projects/ppc64/lib/libthread_db/libpthread_db.c projects/ppc64/lib/libthread_db/libthr_db.c projects/ppc64/lib/libthread_db/thread_db.c projects/ppc64/lib/libthread_db/thread_db.h projects/ppc64/lib/libthread_db/thread_db_int.h projects/ppc64/libexec/rtld-elf/rtld.c projects/ppc64/sbin/bsdlabel/bsdlabel.c projects/ppc64/sbin/camcontrol/camcontrol.8 projects/ppc64/sbin/devd/devd.cc projects/ppc64/sbin/devd/devd.hh projects/ppc64/sbin/fsck_ffs/suj.c projects/ppc64/sbin/geom/class/multipath/geom_multipath.c projects/ppc64/sbin/mca/mca.c projects/ppc64/sbin/reboot/boot_i386.8 projects/ppc64/share/man/man3/pthread_join.3 projects/ppc64/share/man/man4/Makefile projects/ppc64/share/man/man4/ata.4 projects/ppc64/share/man/man4/bwi.4 projects/ppc64/share/man/man9/Makefile projects/ppc64/share/man/man9/alloc_unr.9 projects/ppc64/share/man/man9/style.9 projects/ppc64/share/man/man9/vm_page_alloc.9 projects/ppc64/share/misc/committers-doc.dot projects/ppc64/sys/amd64/amd64/machdep.c projects/ppc64/sys/amd64/ia32/ia32_signal.c projects/ppc64/sys/amd64/linux32/linux32_sysent.c projects/ppc64/sys/arm/arm/machdep.c projects/ppc64/sys/cam/cam_xpt.c projects/ppc64/sys/compat/freebsd32/freebsd32_misc.c projects/ppc64/sys/compat/freebsd32/freebsd32_proto.h projects/ppc64/sys/compat/freebsd32/freebsd32_signal.h projects/ppc64/sys/compat/freebsd32/freebsd32_syscall.h projects/ppc64/sys/compat/freebsd32/freebsd32_syscalls.c projects/ppc64/sys/compat/freebsd32/freebsd32_sysent.c projects/ppc64/sys/compat/freebsd32/syscalls.master projects/ppc64/sys/compat/linux/linux_signal.c projects/ppc64/sys/compat/svr4/svr4_proto.h projects/ppc64/sys/compat/svr4/svr4_syscall.h projects/ppc64/sys/compat/svr4/svr4_syscallnames.c projects/ppc64/sys/compat/svr4/svr4_sysent.c projects/ppc64/sys/conf/files projects/ppc64/sys/dev/ata/ata-all.c projects/ppc64/sys/dev/ata/ata-all.h projects/ppc64/sys/dev/ata/ata-card.c projects/ppc64/sys/dev/ata/ata-disk.c projects/ppc64/sys/dev/ath/ath_hal/ar5416/ar5416reg.h projects/ppc64/sys/dev/bge/if_bge.c projects/ppc64/sys/dev/bwi/if_bwi.c projects/ppc64/sys/dev/e1000/e1000_82575.h projects/ppc64/sys/dev/e1000/e1000_api.c projects/ppc64/sys/dev/e1000/e1000_api.h projects/ppc64/sys/dev/e1000/e1000_hw.h projects/ppc64/sys/dev/e1000/e1000_regs.h projects/ppc64/sys/dev/e1000/if_igb.c projects/ppc64/sys/dev/e1000/if_igb.h projects/ppc64/sys/dev/ixgbe/ixgbe.c projects/ppc64/sys/dev/ixgbe/ixgbe.h projects/ppc64/sys/dev/mpt/mpt.c projects/ppc64/sys/dev/mpt/mpt.h projects/ppc64/sys/dev/mpt/mpt_cam.c projects/ppc64/sys/dev/mpt/mpt_pci.c projects/ppc64/sys/dev/mpt/mpt_raid.c projects/ppc64/sys/i386/i386/machdep.c projects/ppc64/sys/i386/ibcs2/ibcs2_proto.h projects/ppc64/sys/i386/ibcs2/ibcs2_syscall.h projects/ppc64/sys/i386/ibcs2/ibcs2_sysent.c projects/ppc64/sys/i386/linux/linux_sysent.c projects/ppc64/sys/ia64/ia64/machdep.c projects/ppc64/sys/ia64/ia64/mca.c projects/ppc64/sys/ia64/ia64/mp_machdep.c projects/ppc64/sys/ia64/include/asm.h projects/ppc64/sys/ia64/include/mca.h projects/ppc64/sys/ia64/include/profile.h projects/ppc64/sys/kern/init_sysent.c projects/ppc64/sys/kern/kern_clock.c projects/ppc64/sys/kern/kern_context.c projects/ppc64/sys/kern/kern_exec.c projects/ppc64/sys/kern/kern_exit.c projects/ppc64/sys/kern/kern_sig.c projects/ppc64/sys/kern/kern_syscalls.c projects/ppc64/sys/kern/kern_thr.c projects/ppc64/sys/kern/makesyscalls.sh projects/ppc64/sys/kern/subr_sleepqueue.c projects/ppc64/sys/kern/subr_trap.c projects/ppc64/sys/kern/subr_unit.c projects/ppc64/sys/kern/sys_generic.c projects/ppc64/sys/kern/sys_process.c projects/ppc64/sys/kern/sys_socket.c projects/ppc64/sys/kern/syscalls.c projects/ppc64/sys/kern/syscalls.master projects/ppc64/sys/kern/sysv_shm.c projects/ppc64/sys/kern/tty.c projects/ppc64/sys/kern/uipc_syscalls.c projects/ppc64/sys/kern/vfs_bio.c projects/ppc64/sys/mips/include/pte.h projects/ppc64/sys/mips/mips/pm_machdep.c projects/ppc64/sys/mips/mips/tlb.c projects/ppc64/sys/mips/rmi/board.c projects/ppc64/sys/mips/rmi/board.h projects/ppc64/sys/modules/Makefile projects/ppc64/sys/modules/em/Makefile projects/ppc64/sys/modules/igb/Makefile projects/ppc64/sys/net80211/ieee80211_crypto.h projects/ppc64/sys/net80211/ieee80211_crypto_ccmp.c projects/ppc64/sys/net80211/ieee80211_crypto_tkip.c projects/ppc64/sys/netgraph/ng_ipfw.c projects/ppc64/sys/netgraph/ng_pipe.c projects/ppc64/sys/netinet/ipfw/ip_fw2.c projects/ppc64/sys/netinet/sctp_pcb.c projects/ppc64/sys/netinet/sctputil.c projects/ppc64/sys/pc98/pc98/machdep.c projects/ppc64/sys/powerpc/aim/clock.c projects/ppc64/sys/powerpc/aim/machdep.c projects/ppc64/sys/powerpc/booke/clock.c projects/ppc64/sys/powerpc/booke/machdep.c projects/ppc64/sys/powerpc/include/asm.h projects/ppc64/sys/powerpc/include/profile.h projects/ppc64/sys/powerpc/mpc85xx/atpic.c projects/ppc64/sys/powerpc/mpc85xx/opic.c projects/ppc64/sys/powerpc/powermac/cuda.c projects/ppc64/sys/powerpc/powermac/hrowpic.c projects/ppc64/sys/powerpc/powermac/openpic_macio.c projects/ppc64/sys/powerpc/powermac/pmu.c projects/ppc64/sys/powerpc/powerpc/intr_machdep.c projects/ppc64/sys/powerpc/powerpc/openpic.c projects/ppc64/sys/powerpc/psim/openpic_iobus.c projects/ppc64/sys/sparc64/include/smp.h projects/ppc64/sys/sparc64/sparc64/machdep.c projects/ppc64/sys/sun4v/sun4v/machdep.c projects/ppc64/sys/sys/proc.h projects/ppc64/sys/sys/ptrace.h projects/ppc64/sys/sys/signalvar.h projects/ppc64/sys/sys/syscall.h projects/ppc64/sys/sys/syscall.mk projects/ppc64/sys/sys/syscallsubr.h projects/ppc64/sys/sys/sysent.h projects/ppc64/sys/sys/sysproto.h projects/ppc64/sys/sys/systm.h projects/ppc64/sys/ufs/ffs/ffs_alloc.c projects/ppc64/sys/ufs/ffs/ffs_inode.c projects/ppc64/sys/ufs/ffs/ffs_softdep.c projects/ppc64/sys/ufs/ffs/ffs_vnops.c projects/ppc64/sys/ufs/ffs/softdep.h projects/ppc64/sys/ufs/ufs/inode.h projects/ppc64/sys/ufs/ufs/ufs_inode.c projects/ppc64/sys/ufs/ufs/ufs_lookup.c projects/ppc64/sys/ufs/ufs/ufs_vnops.c projects/ppc64/sys/vm/vm_contig.c projects/ppc64/sys/vm/vm_fault.c projects/ppc64/sys/vm/vm_map.c projects/ppc64/sys/vm/vm_object.c projects/ppc64/sys/vm/vm_page.c projects/ppc64/sys/vm/vm_page.h projects/ppc64/sys/vm/vm_pageout.c projects/ppc64/sys/vm/vm_pager.h projects/ppc64/sys/x86/isa/atrtc.c projects/ppc64/sys/x86/isa/clock.c projects/ppc64/tools/regression/bin/sh/expansion/arith2.0 projects/ppc64/usr.bin/locate/bigram/locate.bigram.c projects/ppc64/usr.bin/locate/code/locate.code.c projects/ppc64/usr.bin/lock/Makefile projects/ppc64/usr.bin/lock/lock.c projects/ppc64/usr.bin/ministat/ministat.1 projects/ppc64/usr.bin/tcopy/Makefile projects/ppc64/usr.bin/tcopy/tcopy.c projects/ppc64/usr.bin/tftp/tftp.c projects/ppc64/usr.sbin/pc-sysinstall/backend-partmanager/create-part.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-partmanager/delete-part.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/Makefile projects/ppc64/usr.sbin/pc-sysinstall/backend-query/detect-laptop.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/detect-nics.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/detect-vmware.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/disk-info.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/disk-list.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/disk-part.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/enable-net.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/list-components.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/list-rsync-backups.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/list-tzones.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/query-langs.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/send-logs.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/setup-ssh-keys.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/sys-mem.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/test-live.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/test-netup.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/update-part-list.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/xkeyboard-layouts.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/xkeyboard-models.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/xkeyboard-variants.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/Makefile projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-bsdlabel.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-cleanup.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-disk.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-extractimage.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-installcomponents.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-localize.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-mountdisk.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-mountoptical.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-networking.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-newfs.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-parse.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-runcommands.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-unmount.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-upgrade.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-users.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/parseconfig.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/startautoinstall.sh projects/ppc64/usr.sbin/pc-sysinstall/conf/pc-sysinstall.conf projects/ppc64/usr.sbin/pc-sysinstall/doc/help-index projects/ppc64/usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.sh projects/ppc64/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Directory Properties: projects/ppc64/ (props changed) projects/ppc64/cddl/contrib/opensolaris/ (props changed) projects/ppc64/contrib/ee/ (props changed) projects/ppc64/contrib/expat/ (props changed) projects/ppc64/contrib/file/ (props changed) projects/ppc64/contrib/gdb/ (props changed) projects/ppc64/contrib/gnu-sort/ (props changed) projects/ppc64/contrib/groff/ (props changed) projects/ppc64/contrib/less/ (props changed) projects/ppc64/contrib/libpcap/ (props changed) projects/ppc64/contrib/ncurses/ (props changed) projects/ppc64/contrib/one-true-awk/ (props changed) projects/ppc64/contrib/openbsm/ (props changed) projects/ppc64/contrib/openpam/ (props changed) projects/ppc64/contrib/pf/ (props changed) projects/ppc64/contrib/tcpdump/ (props changed) projects/ppc64/contrib/tcsh/ (props changed) projects/ppc64/contrib/tzcode/stdtime/ (props changed) projects/ppc64/contrib/tzcode/zic/ (props changed) projects/ppc64/contrib/tzdata/ (props changed) projects/ppc64/contrib/wpa/ (props changed) projects/ppc64/lib/libutil/ (props changed) projects/ppc64/lib/libz/ (props changed) projects/ppc64/sbin/ (props changed) projects/ppc64/sbin/ipfw/ (props changed) projects/ppc64/share/mk/bsd.arch.inc.mk (props changed) projects/ppc64/sys/ (props changed) projects/ppc64/sys/amd64/include/xen/ (props changed) projects/ppc64/sys/arm/conf/SHEEVAPLUG (props changed) projects/ppc64/sys/cddl/contrib/opensolaris/ (props changed) projects/ppc64/sys/contrib/dev/acpica/ (props changed) projects/ppc64/sys/contrib/x86emu/ (props changed) projects/ppc64/sys/dev/xen/xenpci/ (props changed) projects/ppc64/usr.bin/csup/ (props changed) projects/ppc64/usr.bin/procstat/ (props changed) Modified: projects/ppc64/ObsoleteFiles.inc ============================================================================== --- projects/ppc64/ObsoleteFiles.inc Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/ObsoleteFiles.inc Tue Jul 6 15:45:59 2010 (r209727) @@ -14,6 +14,10 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20100701: [powerpc] removed +.if ${TARGET_ARCH} == "powerpc" +OLD_FILES+=usr/include/machine/intr.h +.endif # 20100514: library version bump for versioned symbols for liblzma OLD_LIBS+=usr/lib/liblzma.so.0 .if ${TARGET_ARCH} == "amd64" Modified: projects/ppc64/bin/sh/expand.c ============================================================================== --- projects/ppc64/bin/sh/expand.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/bin/sh/expand.c Tue Jul 6 15:45:59 2010 (r209727) @@ -818,7 +818,7 @@ varisset(char *name, int nulok) { if (*name == '!') - return backgndpid != -1; + return backgndpidset(); else if (*name == '@' || *name == '*') { if (*shellparam.p == NULL) return 0; @@ -891,7 +891,7 @@ varvalue(char *name, int quoted, int sub num = shellparam.nparam; goto numvar; case '!': - num = backgndpid; + num = backgndpidval(); numvar: expdest = cvtnum(num, expdest); break; Modified: projects/ppc64/bin/sh/jobs.c ============================================================================== --- projects/ppc64/bin/sh/jobs.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/bin/sh/jobs.c Tue Jul 6 15:45:59 2010 (r209727) @@ -75,6 +75,7 @@ __FBSDID("$FreeBSD$"); STATIC struct job *jobtab; /* array of jobs */ STATIC int njobs; /* size of array */ MKINIT pid_t backgndpid = -1; /* pid of last background process */ +MKINIT struct job *bgjob = NULL; /* last background process */ #if JOBS STATIC struct job *jobmru; /* most recently used job list */ STATIC pid_t initialpgrp; /* pgrp of shell on invocation */ @@ -183,6 +184,7 @@ INCLUDE SHELLPROC { backgndpid = -1; + bgjob = NULL; #if JOBS jobctl = 0; #endif @@ -413,7 +415,11 @@ showjobs(int change, int mode) continue; showjob(jp, 0, mode); jp->changed = 0; - if (jp->state == JOBDONE) { + /* Hack: discard jobs for which $! has not been referenced + * in interactive mode when they terminate. + */ + if (jp->state == JOBDONE && !jp->remembered && + (iflag || jp != bgjob)) { freejob(jp); } } @@ -431,6 +437,8 @@ freejob(struct job *jp) int i; INTOFF; + if (bgjob == jp) + bgjob = NULL; for (i = jp->nprocs, ps = jp->ps ; --i >= 0 ; ps++) { if (ps->cmd != nullstr) ckfree(ps->cmd); @@ -477,12 +485,27 @@ waitcmd(int argc, char **argv) #endif else retval = WTERMSIG(status) + 128; - if (! iflag) + if (! iflag || ! job->changed) freejob(job); + else { + job->remembered = 0; + if (job == bgjob) + bgjob = NULL; + } in_waitcmd--; return retval; } } else { + for (jp = jobtab ; jp < jobtab + njobs; jp++) + if (jp->used && jp->state == JOBDONE) { + if (! iflag || ! jp->changed) + freejob(jp); + else { + jp->remembered = 0; + if (jp == bgjob) + bgjob = NULL; + } + } for (jp = jobtab ; ; jp++) { if (jp >= jobtab + njobs) { /* no running procs */ in_waitcmd--; @@ -623,6 +646,8 @@ makejob(union node *node __unused, int n jp[i].next = &jp[jp[i].next - jobtab]; #endif + if (bgjob != NULL) + bgjob = &jp[bgjob - jobtab]; /* Relocate `ps' pointers */ for (i = 0; i < njobs; i++) if (jp[i].ps == &jobtab[i].ps0) @@ -644,6 +669,7 @@ makejob(union node *node __unused, int n jp->changed = 0; jp->nprocs = 0; jp->foreground = 0; + jp->remembered = 0; #if JOBS jp->jobctl = jobctl; jp->next = NULL; @@ -821,8 +847,13 @@ forkshell(struct job *jp, union node *n, pgrp = jp->ps[0].pid; setpgid(pid, pgrp); } - if (mode == FORK_BG) + if (mode == FORK_BG) { + if (bgjob != NULL && bgjob->state == JOBDONE && + !bgjob->remembered && !iflag) + freejob(bgjob); backgndpid = pid; /* set $! */ + bgjob = jp; + } if (jp) { struct procstat *ps = &jp->ps[jp->nprocs++]; ps->pid = pid; @@ -975,10 +1006,15 @@ dowait(int block, struct job *job) if (jp->state != state) { TRACE(("Job %d: changing state from %d to %d\n", jp - jobtab + 1, jp->state, state)); jp->state = state; + if (jp != job) { + if (done && !jp->remembered && + !iflag && jp != bgjob) + freejob(jp); #if JOBS - if (done) - deljob(jp); + else if (done) + deljob(jp); #endif + } } } } @@ -1074,6 +1110,21 @@ checkzombies(void) } +int +backgndpidset(void) +{ + return backgndpid != -1; +} + + +pid_t +backgndpidval(void) +{ + if (bgjob != NULL) + bgjob->remembered = 1; + return backgndpid; +} + /* * Return a string identifying a command (to be printed by the * jobs command. Modified: projects/ppc64/bin/sh/jobs.h ============================================================================== --- projects/ppc64/bin/sh/jobs.h Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/bin/sh/jobs.h Tue Jul 6 15:45:59 2010 (r209727) @@ -68,6 +68,7 @@ struct job { char used; /* true if this entry is in used */ char changed; /* true if status has changed */ char foreground; /* true if running in the foreground */ + char remembered; /* true if $! referenced */ #if JOBS char jobctl; /* job running under job control */ struct job *next; /* job used after this one */ @@ -81,7 +82,6 @@ enum { SHOWJOBS_PGIDS /* PID of the group leader only */ }; -extern pid_t backgndpid; /* pid of last background process */ extern int job_warning; /* user was warned about stopped jobs */ extern int in_waitcmd; /* are we in waitcmd()? */ extern int in_dowait; /* are we in dowait()? */ @@ -98,6 +98,8 @@ struct job *makejob(union node *, int); pid_t forkshell(struct job *, union node *, int); int waitforjob(struct job *, int *); int stoppedjobs(void); +int backgndpidset(void); +pid_t backgndpidval(void); char *commandtext(union node *); #if ! JOBS Modified: projects/ppc64/bin/sh/parser.c ============================================================================== --- projects/ppc64/bin/sh/parser.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/bin/sh/parser.c Tue Jul 6 15:45:59 2010 (r209727) @@ -1734,7 +1734,8 @@ getprompt(void *unused __unused) { static char ps[PROMPTLEN]; char *fmt; - int i, j, trim; + const char *pwd; + int i, trim; static char internal_error[] = ""; /* @@ -1785,17 +1786,15 @@ getprompt(void *unused __unused) */ case 'W': case 'w': - ps[i] = '\0'; - getcwd(&ps[i], PROMPTLEN - i); - if (*fmt == 'W' && ps[i + 1] != '\0') { - /* Final path component only. */ - trim = 1; - for (j = i; ps[j] != '\0'; j++) - if (ps[j] == '/') - trim = j + 1; - memmove(&ps[i], &ps[trim], - j - trim + 1); - } + pwd = lookupvar("PWD"); + if (pwd == NULL) + pwd = "?"; + if (*fmt == 'W' && + *pwd == '/' && pwd[1] != '\0') + strlcpy(&ps[i], strrchr(pwd, '/') + 1, + PROMPTLEN - i); + else + strlcpy(&ps[i], pwd, PROMPTLEN - i); /* Skip to end of path. */ while (ps[i + 1] != '\0') i++; Modified: projects/ppc64/bin/sh/sh.1 ============================================================================== --- projects/ppc64/bin/sh/sh.1 Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/bin/sh/sh.1 Tue Jul 6 15:45:59 2010 (r209727) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd May 24, 2010 +.Dd June 29, 2010 .Dt SH 1 .Os .Sh NAME @@ -1106,6 +1106,10 @@ command executed from the current shell. For a pipeline, the process ID is that of the last command in the pipeline. +If this parameter is referenced, the shell will remember +the process ID and its exit status until the +.Ic wait +built-in command reports completion of the process. .It Li $0 (zero) Expands to the name of the shell or shell script. .El Modified: projects/ppc64/etc/mtree/BSD.usr.dist ============================================================================== --- projects/ppc64/etc/mtree/BSD.usr.dist Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/etc/mtree/BSD.usr.dist Tue Jul 6 15:45:59 2010 (r209727) @@ -1231,15 +1231,15 @@ pc-sysinstall backend .. - backend-partmanager + backend-partmanager .. - backend-query + backend-query .. - conf + conf license - .. + .. .. - doc + doc .. .. security Modified: projects/ppc64/gnu/usr.bin/gdb/libgdb/fbsd-threads.c ============================================================================== --- projects/ppc64/gnu/usr.bin/gdb/libgdb/fbsd-threads.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/gnu/usr.bin/gdb/libgdb/fbsd-threads.c Tue Jul 6 15:45:59 2010 (r209727) @@ -1299,6 +1299,7 @@ fbsd_thread_signal_cmd (char *exp, int f td_thrhandle_t th; td_thrinfo_t ti; td_err_e err; + const char *code; if (!fbsd_thread_active || !IS_THREAD(inferior_ptid)) return; @@ -1315,6 +1316,42 @@ fbsd_thread_signal_cmd (char *exp, int f fbsd_print_sigset(&ti.ti_sigmask); printf_filtered("signal pending:\n"); fbsd_print_sigset(&ti.ti_pending); + if (ti.ti_siginfo.si_signo != 0) { + printf_filtered("si_signo %d si_errno %d", ti.ti_siginfo.si_signo, + ti.ti_siginfo.si_errno); + if (ti.ti_siginfo.si_errno != 0) + printf_filtered(" (%s)", strerror(ti.ti_siginfo.si_errno)); + printf_filtered("\n"); + switch (ti.ti_siginfo.si_code) { + case SI_NOINFO: + code = "NOINFO"; + break; + case SI_USER: + code = "USER"; + break; + case SI_QUEUE: + code = "QUEUE"; + break; + case SI_TIMER: + code = "TIMER"; + break; + case SI_ASYNCIO: + code = "ASYNCIO"; + break; + case SI_MESGQ: + code = "MESGQ"; + break; + case SI_KERNEL: + code = "KERNEL"; + break; + default: + code = "UNKNOWN"; + break; + } + printf_filtered("si_code %s si_pid %d si_uid %d si_status %x si_addr %p\n", + code, ti.ti_siginfo.si_pid, ti.ti_siginfo.si_uid, ti.ti_siginfo.si_status, + ti.ti_siginfo.si_addr); + } } static int Modified: projects/ppc64/include/arpa/inet.h ============================================================================== --- projects/ppc64/include/arpa/inet.h Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/include/arpa/inet.h Tue Jul 6 15:45:59 2010 (r209727) @@ -58,7 +58,7 @@ #ifndef _ARPA_INET_H_ #define _ARPA_INET_H_ -/* External definitions for functions in inet(3), addr2ascii(3) */ +/* External definitions for functions in inet(3). */ #include #include Modified: projects/ppc64/lib/libc/gmon/gmon.c ============================================================================== --- projects/ppc64/lib/libc/gmon/gmon.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libc/gmon/gmon.c Tue Jul 6 15:45:59 2010 (r209727) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -60,8 +61,8 @@ extern char *minbrk __asm ("minbrk"); struct gmonparam _gmonparam = { GMON_PROF_OFF }; static int s_scale; -/* see profil(2) where this is describe (incorrectly) */ -#define SCALE_1_TO_1 0x10000L +/* See profil(2) where this is described (incorrectly). */ +#define SCALE_SHIFT 16 #define ERR(s) _write(2, s, sizeof(s)) @@ -112,24 +113,8 @@ monstartup(lowpc, highpc) p->tos[0].link = 0; o = p->highpc - p->lowpc; - if (p->kcountsize < o) { -#ifndef hp300 - s_scale = ((float)p->kcountsize / o ) * SCALE_1_TO_1; -#else /* avoid floating point */ - int quot = o / p->kcountsize; - - if (quot >= 0x10000) - s_scale = 1; - else if (quot >= 0x100) - s_scale = 0x10000 / quot; - else if (o >= 0x800000) - s_scale = 0x1000000 / (o / (p->kcountsize >> 8)); - else - s_scale = 0x1000000 / ((o << 8) / p->kcountsize); -#endif - } else - s_scale = SCALE_1_TO_1; - + s_scale = (p->kcountsize < o) ? + ((uintmax_t)p->kcountsize << SCALE_SHIFT) / o : (1 << SCALE_SHIFT); moncontrol(1); } Modified: projects/ppc64/lib/libc/net/sctp_recvmsg.3 ============================================================================== --- projects/ppc64/lib/libc/net/sctp_recvmsg.3 Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libc/net/sctp_recvmsg.3 Tue Jul 6 15:45:59 2010 (r209727) @@ -146,14 +146,14 @@ The argument is defined as follows. .Bd -literal struct sctp_sndrcvinfo { - u_int16_t sinfo_stream; /* Stream arriving on */ - u_int16_t sinfo_ssn; /* Stream Sequence Number */ - u_int16_t sinfo_flags; /* Flags on the incoming message */ - u_int32_t sinfo_ppid; /* The ppid field */ - u_int32_t sinfo_context; /* context field */ - u_int32_t sinfo_timetolive; /* not used by sctp_recvmsg */ - u_int32_t sinfo_tsn; /* The transport sequence number */ - u_int32_t sinfo_cumtsn; /* The cumulative acknowledgment point */ + uint16_t sinfo_stream; /* Stream arriving on */ + uint16_t sinfo_ssn; /* Stream Sequence Number */ + uint16_t sinfo_flags; /* Flags on the incoming message */ + uint32_t sinfo_ppid; /* The ppid field */ + uint32_t sinfo_context; /* context field */ + uint32_t sinfo_timetolive; /* not used by sctp_recvmsg */ + uint32_t sinfo_tsn; /* The transport sequence number */ + uint32_t sinfo_cumtsn; /* The cumulative acknowledgment point */ sctp_assoc_t sinfo_assoc_id; /* The association id of the peer */ }; .Ed Modified: projects/ppc64/lib/libc/net/sctp_send.3 ============================================================================== --- projects/ppc64/lib/libc/net/sctp_send.3 Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libc/net/sctp_send.3 Tue Jul 6 15:45:59 2010 (r209727) @@ -94,14 +94,14 @@ structure is used to control various SCT and has the following format: .Bd -literal struct sctp_sndrcvinfo { - u_int16_t sinfo_stream; /* Stream sending to */ - u_int16_t sinfo_ssn; /* valid for recv only */ - u_int16_t sinfo_flags; /* flags to control sending */ - u_int32_t sinfo_ppid; /* ppid field */ - u_int32_t sinfo_context; /* context field */ - u_int32_t sinfo_timetolive; /* timetolive for PR-SCTP */ - u_int32_t sinfo_tsn; /* valid for recv only */ - u_int32_t sinfo_cumtsn; /* valid for recv only */ + uint16_t sinfo_stream; /* Stream sending to */ + uint16_t sinfo_ssn; /* valid for recv only */ + uint16_t sinfo_flags; /* flags to control sending */ + uint32_t sinfo_ppid; /* ppid field */ + uint32_t sinfo_context; /* context field */ + uint32_t sinfo_timetolive; /* timetolive for PR-SCTP */ + uint32_t sinfo_tsn; /* valid for recv only */ + uint32_t sinfo_cumtsn; /* valid for recv only */ sctp_assoc_t sinfo_assoc_id; /* The association id */ }; .Ed Modified: projects/ppc64/lib/libc/net/sctp_sys_calls.c ============================================================================== --- projects/ppc64/lib/libc/net/sctp_sys_calls.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libc/net/sctp_sys_calls.c Tue Jul 6 15:45:59 2010 (r209727) @@ -49,9 +49,9 @@ __FBSDID("$FreeBSD$"); #ifndef IN6_IS_ADDR_V4MAPPED #define IN6_IS_ADDR_V4MAPPED(a) \ - ((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ - (*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ - (*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) + ((*(const uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ + (*(const uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ + (*(const uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) #endif @@ -304,7 +304,7 @@ sctp_bindx(int sd, struct sockaddr *addr goto out_error; } - + sa = (struct sockaddr *)((caddr_t)sa + sz); } sa = addrs; /* @@ -533,11 +533,11 @@ sctp_sendmsg(int s, size_t len, const struct sockaddr *to, socklen_t tolen, - u_int32_t ppid, - u_int32_t flags, - u_int16_t stream_no, - u_int32_t timetolive, - u_int32_t context) + uint32_t ppid, + uint32_t flags, + uint16_t stream_no, + uint32_t timetolive, + uint32_t context) { #ifdef SYS_sctp_generic_sendmsg struct sctp_sndrcvinfo sinfo; @@ -814,11 +814,11 @@ sctp_sendmsgx(int sd, size_t len, struct sockaddr *addrs, int addrcnt, - u_int32_t ppid, - u_int32_t flags, - u_int16_t stream_no, - u_int32_t timetolive, - u_int32_t context) + uint32_t ppid, + uint32_t flags, + uint16_t stream_no, + uint32_t timetolive, + uint32_t context) { struct sctp_sndrcvinfo sinfo; Modified: projects/ppc64/lib/libc/posix1e/acl_from_text.c ============================================================================== --- projects/ppc64/lib/libc/posix1e/acl_from_text.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libc/posix1e/acl_from_text.c Tue Jul 6 15:45:59 2010 (r209727) @@ -271,9 +271,6 @@ error_label: * XXX NOT THREAD SAFE, RELIES ON GETPWNAM, GETGRNAM * XXX USES *PW* AND *GR* WHICH ARE STATEFUL AND THEREFORE THIS ROUTINE * MAY HAVE SIDE-EFFECTS - * - * XXX currently doesn't deal correctly with a numeric uid being passed - * instead of a username. What is correct behavior here? Check chown. */ static int _posix1e_acl_name_to_id(acl_tag_t tag, char *name, uid_t *id) Modified: projects/ppc64/lib/libfetch/http.c ============================================================================== --- projects/ppc64/lib/libfetch/http.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libfetch/http.c Tue Jul 6 15:45:59 2010 (r209727) @@ -1786,12 +1786,14 @@ http_request(struct url *URL, const char case hdr_www_authenticate: if (conn->err != HTTP_NEED_AUTH) break; - http_parse_authenticate(p, &server_challenges); + if (http_parse_authenticate(p, &server_challenges)) + ++n; break; case hdr_proxy_authenticate: if (conn->err != HTTP_NEED_PROXY_AUTH) break; - http_parse_authenticate(p, &proxy_challenges); + if (http_parse_authenticate(p, &proxy_challenges) == 0); + ++n; break; case hdr_end: /* fall through */ Modified: projects/ppc64/lib/libthread_db/Symbol.map ============================================================================== --- projects/ppc64/lib/libthread_db/Symbol.map Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/Symbol.map Tue Jul 6 15:45:59 2010 (r209727) @@ -19,7 +19,6 @@ FBSD_1.0 { td_thr_dbsuspend; td_thr_event_enable; td_thr_event_getmsg; - td_thr_get_info; td_thr_getfpregs; td_thr_getgregs; #if defined(i386) @@ -33,3 +32,7 @@ FBSD_1.0 { td_thr_tls_get_addr; td_thr_validate; }; + +FBSD_1.2 { + td_thr_get_info; +}; Modified: projects/ppc64/lib/libthread_db/libpthread_db.c ============================================================================== --- projects/ppc64/lib/libthread_db/libpthread_db.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/libpthread_db.c Tue Jul 6 15:45:59 2010 (r209727) @@ -570,7 +570,7 @@ pt_thr_validate(const td_thrhandle_t *th } static td_err_e -pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info) +pt_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info) { const td_thragent_t *ta = th->th_ta; struct ptrace_lwpinfo linfo; @@ -659,6 +659,16 @@ pt_thr_get_info(const td_thrhandle_t *th return (0); } +static td_err_e +pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info) +{ + td_err_e e; + + e = pt_thr_old_get_info(th, (td_old_thrinfo_t *)info); + bzero(&info->ti_siginfo, sizeof(info->ti_siginfo)); + return (e); +} + #ifdef __i386__ static td_err_e pt_thr_getxmmregs(const td_thrhandle_t *th, char *fxsave) @@ -1114,6 +1124,7 @@ struct ta_ops libpthread_db_ops = { .to_thr_dbsuspend = pt_thr_dbsuspend, .to_thr_event_enable = pt_thr_event_enable, .to_thr_event_getmsg = pt_thr_event_getmsg, + .to_thr_old_get_info = pt_thr_old_get_info, .to_thr_get_info = pt_thr_get_info, .to_thr_getfpregs = pt_thr_getfpregs, .to_thr_getgregs = pt_thr_getgregs, Modified: projects/ppc64/lib/libthread_db/libthr_db.c ============================================================================== --- projects/ppc64/lib/libthread_db/libthr_db.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/libthr_db.c Tue Jul 6 15:45:59 2010 (r209727) @@ -453,7 +453,7 @@ pt_thr_validate(const td_thrhandle_t *th } static td_err_e -pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info) +pt_thr_get_info_common(const td_thrhandle_t *th, td_thrinfo_t *info, int old) { const td_thragent_t *ta = th->th_ta; struct ptrace_lwpinfo linfo; @@ -489,6 +489,13 @@ pt_thr_get_info(const td_thrhandle_t *th if (ret == PS_OK) { info->ti_sigmask = linfo.pl_sigmask; info->ti_pending = linfo.pl_siglist; + if (!old) { + if ((linfo.pl_flags & PL_FLAG_SI) != 0) + info->ti_siginfo = linfo.pl_siginfo; + else + bzero(&info->ti_siginfo, + sizeof(info->ti_siginfo)); + } } else return (ret); if (state == ta->thread_state_running) @@ -501,6 +508,20 @@ pt_thr_get_info(const td_thrhandle_t *th return (0); } +static td_err_e +pt_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info) +{ + + return (pt_thr_get_info_common(th, (td_thrinfo_t *)info, 1)); +} + +static td_err_e +pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info) +{ + + return (pt_thr_get_info_common(th, info, 0)); +} + #ifdef __i386__ static td_err_e pt_thr_getxmmregs(const td_thrhandle_t *th, char *fxsave) @@ -761,6 +782,7 @@ struct ta_ops libthr_db_ops = { .to_thr_dbsuspend = pt_thr_dbsuspend, .to_thr_event_enable = pt_thr_event_enable, .to_thr_event_getmsg = pt_thr_event_getmsg, + .to_thr_old_get_info = pt_thr_old_get_info, .to_thr_get_info = pt_thr_get_info, .to_thr_getfpregs = pt_thr_getfpregs, .to_thr_getgregs = pt_thr_getgregs, Modified: projects/ppc64/lib/libthread_db/thread_db.c ============================================================================== --- projects/ppc64/lib/libthread_db/thread_db.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/thread_db.c Tue Jul 6 15:45:59 2010 (r209727) @@ -176,6 +176,14 @@ td_thr_event_getmsg(const td_thrhandle_t } td_err_e +td_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info) +{ + const td_thragent_t *ta = th->th_ta; + return (ta->ta_ops->to_thr_old_get_info(th, info)); +} +__sym_compat(td_thr_get_info, td_thr_old_get_info, FBSD_1.0); + +td_err_e td_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info) { const td_thragent_t *ta = th->th_ta; Modified: projects/ppc64/lib/libthread_db/thread_db.h ============================================================================== --- projects/ppc64/lib/libthread_db/thread_db.h Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/thread_db.h Tue Jul 6 15:45:59 2010 (r209727) @@ -191,6 +191,7 @@ typedef struct { psaddr_t ti_startfunc; psaddr_t ti_stkbase; size_t ti_stksize; + siginfo_t ti_siginfo; } td_thrinfo_t; /* Modified: projects/ppc64/lib/libthread_db/thread_db_int.h ============================================================================== --- projects/ppc64/lib/libthread_db/thread_db_int.h Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/thread_db_int.h Tue Jul 6 15:45:59 2010 (r209727) @@ -32,6 +32,25 @@ #include #include +typedef struct { + const td_thragent_t *ti_ta_p; + thread_t ti_tid; + psaddr_t ti_thread; + td_thr_state_e ti_state; + td_thr_type_e ti_type; + td_thr_events_t ti_events; + int ti_pri; + lwpid_t ti_lid; + char ti_db_suspended; + char ti_traceme; + sigset_t ti_sigmask; + sigset_t ti_pending; + psaddr_t ti_tls; + psaddr_t ti_startfunc; + psaddr_t ti_stkbase; + size_t ti_stksize; +} td_old_thrinfo_t; + #define TD_THRAGENT_FIELDS \ struct ta_ops *ta_ops; \ TAILQ_ENTRY(td_thragent) ta_next; \ @@ -65,6 +84,8 @@ struct ta_ops { td_err_e (*to_thr_event_enable)(const td_thrhandle_t *, int); td_err_e (*to_thr_event_getmsg)(const td_thrhandle_t *, td_event_msg_t *); + td_err_e (*to_thr_old_get_info)(const td_thrhandle_t *, + td_old_thrinfo_t *); td_err_e (*to_thr_get_info)(const td_thrhandle_t *, td_thrinfo_t *); td_err_e (*to_thr_getfpregs)(const td_thrhandle_t *, prfpregset_t *); td_err_e (*to_thr_getgregs)(const td_thrhandle_t *, prgregset_t); @@ -103,4 +124,6 @@ int thr_pwrite_int(const struct td_thrag int thr_pwrite_long(const struct td_thragent *, psaddr_t, uint64_t); int thr_pwrite_ptr(const struct td_thragent *, psaddr_t, psaddr_t); +td_err_e td_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info); + #endif /* _THREAD_DB_INT_H_ */ Modified: projects/ppc64/libexec/rtld-elf/rtld.c ============================================================================== --- projects/ppc64/libexec/rtld-elf/rtld.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/libexec/rtld-elf/rtld.c Tue Jul 6 15:45:59 2010 (r209727) @@ -3443,13 +3443,9 @@ locate_dependency(const Obj_Entry *obj, if (object_match_name(needed->obj, name)) return needed->obj; } - - /* - * GNU LD sometimes refers to version dependencies on objects to which - * it does not actually link. Treat this as a non-fatal error, and - * ignore this dependency. - */ - return NULL; + _rtld_error("%s: Unexpected inconsistency: dependency %s not found", + obj->path, name); + die(); } static int @@ -3571,9 +3567,6 @@ rtld_verify_object_versions(Obj_Entry *o vn = obj->verneed; while (vn != NULL) { depobj = locate_dependency(obj, obj->strtab + vn->vn_file); - if (depobj == NULL) - break; - vna = (const Elf_Vernaux *) ((char *)vn + vn->vn_aux); for (;;) { if (check_object_provided_version(obj, depobj, vna)) Modified: projects/ppc64/sbin/bsdlabel/bsdlabel.c ============================================================================== --- projects/ppc64/sbin/bsdlabel/bsdlabel.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/sbin/bsdlabel/bsdlabel.c Tue Jul 6 15:45:59 2010 (r209727) @@ -347,7 +347,7 @@ makelabel(const char *type, struct diskl static void readboot(void) { - int fd, i; + int fd; struct stat st; uint64_t *p; @@ -358,8 +358,7 @@ readboot(void) err(1, "cannot open %s", xxboot); fstat(fd, &st); if (alphacksum && st.st_size <= BBSIZE - 512) { - i = read(fd, bootarea + 512, st.st_size); - if (i != st.st_size) + if (read(fd, bootarea + 512, st.st_size) != st.st_size) err(1, "read error %s", xxboot); /* @@ -372,8 +371,7 @@ readboot(void) p[62] = 0; return; } else if ((!alphacksum) && st.st_size <= BBSIZE) { - i = read(fd, bootarea, st.st_size); - if (i != st.st_size) + if (read(fd, bootarea, st.st_size) != st.st_size) err(1, "read error %s", xxboot); return; } @@ -479,6 +477,7 @@ get_file_parms(int f) static int readlabel(int flag) { + ssize_t nbytes; uint32_t lba; int f, i; int error; @@ -498,8 +497,11 @@ readlabel(int flag) errx(1, "disks with more than 2^32-1 sectors are not supported"); (void)lseek(f, (off_t)0, SEEK_SET); - if (read(f, bootarea, BBSIZE) != BBSIZE) + nbytes = read(f, bootarea, BBSIZE); + if (nbytes == -1) err(4, "%s read", specname); + if (nbytes != BBSIZE) + errx(4, "couldn't read %d bytes from %s", BBSIZE, specname); close (f); error = bsd_disklabel_le_dec( bootarea + (labeloffset + labelsoffset * secsize), Modified: projects/ppc64/sbin/camcontrol/camcontrol.8 ============================================================================== --- projects/ppc64/sbin/camcontrol/camcontrol.8 Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/sbin/camcontrol/camcontrol.8 Tue Jul 6 15:45:59 2010 (r209727) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 2, 2010 +.Dd July 1, 2010 .Dt CAMCONTROL 8 .Os .Sh NAME @@ -846,11 +846,13 @@ will not be asked about the timeout if a command line. .El .It Ic idle -Put ATA device into IDLE state. Optional parameter specifies automatic -idle timer value in seconds. +Put ATA device into IDLE state. Optional parameter +.Pq Fl t +specifies automatic standby timer value in seconds. Value 0 disables timer. .It Ic standby -Put ATA device into STANDBY state. Optional parameter specifies automatic -standby timer value in seconds. +Put ATA device into STANDBY state. Optional parameter +.Pq Fl t +specifies automatic standby timer value in seconds. Value 0 disables timer. .It Ic sleep Put ATA device into SLEEP state. Note that the only way get device out of this state may be reset. Modified: projects/ppc64/sbin/devd/devd.cc ============================================================================== --- projects/ppc64/sbin/devd/devd.cc Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/sbin/devd/devd.cc Tue Jul 6 15:45:59 2010 (r209727) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2002-2003 M. Warner Losh. + * Copyright (c) 2002-2010 M. Warner Losh. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,6 +22,35 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. + * + * my_system is a variation on lib/libc/stdlib/system.c: + * + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. */ /* @@ -41,6 +70,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -49,6 +79,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -152,13 +183,67 @@ action::~action() // nothing } +static int +my_system(const char *command) +{ + pid_t pid, savedpid; + int pstat; + struct sigaction ign, intact, quitact; + sigset_t newsigblock, oldsigblock; + + if (!command) /* just checking... */ + return(1); + + /* + * Ignore SIGINT and SIGQUIT, block SIGCHLD. Remember to save + * existing signal dispositions. + */ + ign.sa_handler = SIG_IGN; + ::sigemptyset(&ign.sa_mask); + ign.sa_flags = 0; + ::sigaction(SIGINT, &ign, &intact); + ::sigaction(SIGQUIT, &ign, &quitact); + ::sigemptyset(&newsigblock); + ::sigaddset(&newsigblock, SIGCHLD); + ::sigprocmask(SIG_BLOCK, &newsigblock, &oldsigblock); + switch (pid = ::fork()) { + case -1: /* error */ + break; + case 0: /* child */ + /* + * Restore original signal dispositions and exec the command. + */ + ::sigaction(SIGINT, &intact, NULL); + ::sigaction(SIGQUIT, &quitact, NULL); + ::sigprocmask(SIG_SETMASK, &oldsigblock, NULL); + /* + * Close the PID file, and all other open descriptors. + * Inherit std{in,out,err} only. + */ + cfg.close_pidfile(); + ::closefrom(3); + ::execl(_PATH_BSHELL, "sh", "-c", command, (char *)NULL); + ::_exit(127); + default: /* parent */ + savedpid = pid; + do { + pid = ::wait4(savedpid, &pstat, 0, (struct rusage *)0); + } while (pid == -1 && errno == EINTR); + break; + } + ::sigaction(SIGINT, &intact, NULL); + ::sigaction(SIGQUIT, &quitact, NULL); + ::sigprocmask(SIG_SETMASK, &oldsigblock, NULL); + return (pid == -1 ? -1 : pstat); +} + bool action::do_action(config &c) { string s = c.expand_string(_cmd); if (Dflag) fprintf(stderr, "Executing '%s'\n", s.c_str()); - ::system(s.c_str()); + my_system(s.c_str()); return (true); } @@ -391,6 +476,13 @@ config::write_pidfile() } void +config::close_pidfile() +{ + + pidfile_close(pfh); +} + +void config::remove_pidfile() { Modified: projects/ppc64/sbin/devd/devd.hh ============================================================================== --- projects/ppc64/sbin/devd/devd.hh Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/sbin/devd/devd.hh Tue Jul 6 15:45:59 2010 (r209727) @@ -153,6 +153,7 @@ public: void set_pidfile(const char *); void reset(); void parse(); + void close_pidfile(); void open_pidfile(); void write_pidfile(); void remove_pidfile(); Modified: projects/ppc64/sbin/fsck_ffs/suj.c ============================================================================== --- projects/ppc64/sbin/fsck_ffs/suj.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/sbin/fsck_ffs/suj.c Tue Jul 6 15:45:59 2010 (r209727) @@ -808,6 +808,44 @@ blk_isat(ino_t ino, ufs_lbn_t lbn, ufs2_ } /* + * Clear the directory entry at diroff that should point to child. Minimal + * checking is done and it is assumed that this path was verified with isat. + */ +static void +ino_clrat(ino_t parent, off_t diroff, ino_t child) +{ + union dinode *dip; + struct direct *dp; + ufs2_daddr_t blk; + uint8_t *block; + ufs_lbn_t lbn; + int blksize; + int frags; + int doff; + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Jul 6 16:49:00 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 56E21106564A; Tue, 6 Jul 2010 16:49:00 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 466CB8FC19; Tue, 6 Jul 2010 16:49:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o66Gn063026854; Tue, 6 Jul 2010 16:49:00 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o66Gn0C3026850; Tue, 6 Jul 2010 16:49:00 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007061649.o66Gn0C3026850@svn.freebsd.org> From: Nathan Whitehorn Date: Tue, 6 Jul 2010 16:49:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209729 - in projects/ppc64/sys/powerpc: cell mambo powerpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Jul 2010 16:49:00 -0000 Author: nwhitehorn Date: Tue Jul 6 16:48:59 2010 New Revision: 209729 URL: http://svn.freebsd.org/changeset/base/209729 Log: Apply some header changes from HEAD (r209613 and r209639). Modified: projects/ppc64/sys/powerpc/cell/celliic.c projects/ppc64/sys/powerpc/mambo/mambo_openpic.c projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Modified: projects/ppc64/sys/powerpc/cell/celliic.c ============================================================================== --- projects/ppc64/sys/powerpc/cell/celliic.c Tue Jul 6 16:42:11 2010 (r209728) +++ projects/ppc64/sys/powerpc/cell/celliic.c Tue Jul 6 16:48:59 2010 (r209729) @@ -44,7 +44,6 @@ #include #include -#include #include #include #include Modified: projects/ppc64/sys/powerpc/mambo/mambo_openpic.c ============================================================================== --- projects/ppc64/sys/powerpc/mambo/mambo_openpic.c Tue Jul 6 16:42:11 2010 (r209728) +++ projects/ppc64/sys/powerpc/mambo/mambo_openpic.c Tue Jul 6 16:48:59 2010 (r209729) @@ -40,7 +40,6 @@ __FBSDID("$FreeBSD: src/sys/powerpc/powe #include #include -#include #include #include #include Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c ============================================================================== --- projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Tue Jul 6 16:42:11 2010 (r209728) +++ projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Tue Jul 6 16:48:59 2010 (r209729) @@ -75,6 +75,7 @@ __FBSDID("$FreeBSD: projects/ppc64/sys/p #include #include #include +#include #include #include #include From owner-svn-src-projects@FreeBSD.ORG Tue Jul 6 23:20:44 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C8B041065675; Tue, 6 Jul 2010 23:20:44 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B32C88FC16; Tue, 6 Jul 2010 23:20:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o66NKido013974; Tue, 6 Jul 2010 23:20:44 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o66NKip4013955; Tue, 6 Jul 2010 23:20:44 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201007062320.o66NKip4013955@svn.freebsd.org> From: Marcel Moolenaar Date: Tue, 6 Jul 2010 23:20:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209750 - in projects/altix/sys: amd64/acpica amd64/amd64 amd64/conf amd64/ia32 amd64/include amd64/linux32 arm/arm arm/conf arm/include arm/mv arm/mv/discovery arm/mv/kirkwood arm/mv/o... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Jul 2010 23:20:45 -0000 Author: marcel Date: Tue Jul 6 23:20:43 2010 New Revision: 209750 URL: http://svn.freebsd.org/changeset/base/209750 Log: Merge svn+ssh://svn.freebsd.org/base/head@209749 Added: projects/altix/sys/arm/include/fdt.h - copied unchanged from r209749, head/sys/arm/include/fdt.h projects/altix/sys/arm/include/ofw_machdep.h - copied unchanged from r209749, head/sys/arm/include/ofw_machdep.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap_impl.h - copied unchanged from r209749, head/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap_impl.h projects/altix/sys/cddl/contrib/opensolaris/uts/intel/dtrace/ - copied from r209749, head/sys/cddl/contrib/opensolaris/uts/intel/dtrace/ projects/altix/sys/cddl/contrib/opensolaris/uts/sparc/dtrace/ - copied from r209749, head/sys/cddl/contrib/opensolaris/uts/sparc/dtrace/ projects/altix/sys/conf/ldscript.mips.n32 - copied unchanged from r209749, head/sys/conf/ldscript.mips.n32 projects/altix/sys/contrib/dev/acpica/compiler/dtcompile.c - copied unchanged from r209749, head/sys/contrib/dev/acpica/compiler/dtcompile.c projects/altix/sys/contrib/dev/acpica/compiler/dtcompiler.h - copied unchanged from r209749, head/sys/contrib/dev/acpica/compiler/dtcompiler.h projects/altix/sys/contrib/dev/acpica/compiler/dtfield.c - copied unchanged from r209749, head/sys/contrib/dev/acpica/compiler/dtfield.c projects/altix/sys/contrib/dev/acpica/compiler/dtio.c - copied unchanged from r209749, head/sys/contrib/dev/acpica/compiler/dtio.c projects/altix/sys/contrib/dev/acpica/compiler/dtsubtable.c - copied unchanged from r209749, head/sys/contrib/dev/acpica/compiler/dtsubtable.c projects/altix/sys/contrib/dev/acpica/compiler/dttable.c - copied unchanged from r209749, head/sys/contrib/dev/acpica/compiler/dttable.c projects/altix/sys/contrib/dev/acpica/compiler/dttemplate.c - copied unchanged from r209749, head/sys/contrib/dev/acpica/compiler/dttemplate.c projects/altix/sys/contrib/dev/acpica/compiler/dttemplate.h - copied unchanged from r209749, head/sys/contrib/dev/acpica/compiler/dttemplate.h projects/altix/sys/contrib/dev/acpica/compiler/dtutils.c - copied unchanged from r209749, head/sys/contrib/dev/acpica/compiler/dtutils.c projects/altix/sys/dev/acpi_support/atk0110.c - copied unchanged from r209749, head/sys/dev/acpi_support/atk0110.c projects/altix/sys/dev/e1000/e1000_mbx.c - copied unchanged from r209749, head/sys/dev/e1000/e1000_mbx.c projects/altix/sys/dev/e1000/e1000_mbx.h - copied unchanged from r209749, head/sys/dev/e1000/e1000_mbx.h projects/altix/sys/dev/e1000/e1000_vf.c - copied unchanged from r209749, head/sys/dev/e1000/e1000_vf.c projects/altix/sys/dev/e1000/e1000_vf.h - copied unchanged from r209749, head/sys/dev/e1000/e1000_vf.h projects/altix/sys/dev/fdt/fdt_arm.c - copied unchanged from r209749, head/sys/dev/fdt/fdt_arm.c projects/altix/sys/dev/usb/controller/ehci_mv.c - copied unchanged from r209749, head/sys/dev/usb/controller/ehci_mv.c projects/altix/sys/kern/kern_et.c - copied unchanged from r209749, head/sys/kern/kern_et.c projects/altix/sys/mips/conf/XLRN32 - copied unchanged from r209749, head/sys/mips/conf/XLRN32 projects/altix/sys/mips/include/tlb.h - copied unchanged from r209749, head/sys/mips/include/tlb.h projects/altix/sys/mips/mips/tlb.c - copied unchanged from r209749, head/sys/mips/mips/tlb.c projects/altix/sys/modules/acpi/aibs/ - copied from r209749, head/sys/modules/acpi/aibs/ projects/altix/sys/modules/siftr/ - copied from r209749, head/sys/modules/siftr/ projects/altix/sys/netinet/siftr.c - copied unchanged from r209749, head/sys/netinet/siftr.c projects/altix/sys/sys/timeet.h - copied unchanged from r209749, head/sys/sys/timeet.h projects/altix/sys/x86/x86/timeevents.c - copied unchanged from r209749, head/sys/x86/x86/timeevents.c Deleted: projects/altix/sys/arm/mv/discovery/db78xxx.c projects/altix/sys/arm/mv/kirkwood/db88f6xxx.c projects/altix/sys/arm/mv/kirkwood/files.db88f6xxx projects/altix/sys/arm/mv/obio.c projects/altix/sys/dev/uart/uart_bus_mbus.c projects/altix/sys/dev/uart/uart_cpu_mv.c projects/altix/sys/dev/usb/controller/ehci_mbus.c projects/altix/sys/powerpc/include/intr.h Modified: projects/altix/sys/amd64/acpica/acpi_wakeup.c projects/altix/sys/amd64/amd64/apic_vector.S projects/altix/sys/amd64/amd64/exception.S projects/altix/sys/amd64/amd64/fpu.c projects/altix/sys/amd64/amd64/intr_machdep.c projects/altix/sys/amd64/amd64/machdep.c projects/altix/sys/amd64/amd64/mp_machdep.c projects/altix/sys/amd64/amd64/vm_machdep.c projects/altix/sys/amd64/conf/NOTES projects/altix/sys/amd64/ia32/ia32_exception.S projects/altix/sys/amd64/ia32/ia32_signal.c projects/altix/sys/amd64/include/apicvar.h projects/altix/sys/amd64/include/asmacros.h projects/altix/sys/amd64/include/mca.h projects/altix/sys/amd64/include/segments.h projects/altix/sys/amd64/include/smp.h projects/altix/sys/amd64/linux32/linux32_sysent.c projects/altix/sys/arm/arm/machdep.c projects/altix/sys/arm/arm/nexus.c projects/altix/sys/arm/arm/pmap.c projects/altix/sys/arm/conf/DB-78XXX projects/altix/sys/arm/conf/DB-88F5XXX projects/altix/sys/arm/conf/DB-88F6XXX projects/altix/sys/arm/conf/SHEEVAPLUG projects/altix/sys/arm/include/metadata.h projects/altix/sys/arm/mv/bus_space.c projects/altix/sys/arm/mv/common.c projects/altix/sys/arm/mv/discovery/discovery.c projects/altix/sys/arm/mv/discovery/files.db78xxx projects/altix/sys/arm/mv/files.mv projects/altix/sys/arm/mv/gpio.c projects/altix/sys/arm/mv/ic.c projects/altix/sys/arm/mv/kirkwood/kirkwood.c projects/altix/sys/arm/mv/kirkwood/sheevaplug.c projects/altix/sys/arm/mv/kirkwood/std.db88f6xxx projects/altix/sys/arm/mv/kirkwood/std.sheevaplug projects/altix/sys/arm/mv/mv_machdep.c projects/altix/sys/arm/mv/mv_pci.c projects/altix/sys/arm/mv/mv_sata.c projects/altix/sys/arm/mv/mvreg.h projects/altix/sys/arm/mv/mvvar.h projects/altix/sys/arm/mv/mvwin.h projects/altix/sys/arm/mv/orion/db88f5xxx.c projects/altix/sys/arm/mv/orion/orion.c projects/altix/sys/arm/mv/rtc.c projects/altix/sys/arm/mv/timer.c projects/altix/sys/arm/mv/twsi.c projects/altix/sys/boot/arm/uboot/Makefile projects/altix/sys/boot/ficl/ficl.h projects/altix/sys/boot/forth/loader.conf projects/altix/sys/boot/i386/pxeldr/Makefile projects/altix/sys/boot/powerpc/uboot/Makefile projects/altix/sys/boot/uboot/common/metadata.c projects/altix/sys/cam/ata/ata_xpt.c projects/altix/sys/cam/cam_xpt.c projects/altix/sys/cam/scsi/scsi_all.h projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scrub.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/altix/sys/compat/freebsd32/freebsd32_misc.c projects/altix/sys/compat/freebsd32/freebsd32_proto.h projects/altix/sys/compat/freebsd32/freebsd32_signal.h projects/altix/sys/compat/freebsd32/freebsd32_syscall.h projects/altix/sys/compat/freebsd32/freebsd32_syscalls.c projects/altix/sys/compat/freebsd32/freebsd32_sysent.c projects/altix/sys/compat/freebsd32/syscalls.master projects/altix/sys/compat/linux/linux_signal.c projects/altix/sys/compat/ndis/subr_usbd.c projects/altix/sys/compat/svr4/svr4_proto.h projects/altix/sys/compat/svr4/svr4_syscall.h projects/altix/sys/compat/svr4/svr4_syscallnames.c projects/altix/sys/compat/svr4/svr4_sysent.c projects/altix/sys/compat/x86bios/x86bios.c projects/altix/sys/compat/x86bios/x86bios.h projects/altix/sys/conf/Makefile.arm projects/altix/sys/conf/NOTES projects/altix/sys/conf/files projects/altix/sys/conf/files.amd64 projects/altix/sys/conf/files.arm projects/altix/sys/conf/files.i386 projects/altix/sys/conf/files.mips projects/altix/sys/conf/options.amd64 projects/altix/sys/conf/options.arm projects/altix/sys/contrib/dev/acpica/acpica_prep.sh projects/altix/sys/contrib/dev/acpica/changes.txt projects/altix/sys/contrib/dev/acpica/common/adisasm.c projects/altix/sys/contrib/dev/acpica/common/adwalk.c projects/altix/sys/contrib/dev/acpica/common/dmextern.c projects/altix/sys/contrib/dev/acpica/common/dmrestag.c projects/altix/sys/contrib/dev/acpica/common/dmtable.c projects/altix/sys/contrib/dev/acpica/common/dmtbdump.c projects/altix/sys/contrib/dev/acpica/common/dmtbinfo.c projects/altix/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/altix/sys/contrib/dev/acpica/compiler/aslcompile.c projects/altix/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/altix/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/altix/sys/contrib/dev/acpica/compiler/aslcompiler.y projects/altix/sys/contrib/dev/acpica/compiler/asldefine.h projects/altix/sys/contrib/dev/acpica/compiler/aslerror.c projects/altix/sys/contrib/dev/acpica/compiler/aslfiles.c projects/altix/sys/contrib/dev/acpica/compiler/aslglobal.h projects/altix/sys/contrib/dev/acpica/compiler/asllookup.c projects/altix/sys/contrib/dev/acpica/compiler/aslmain.c projects/altix/sys/contrib/dev/acpica/compiler/aslopt.c projects/altix/sys/contrib/dev/acpica/compiler/aslpredef.c projects/altix/sys/contrib/dev/acpica/compiler/aslstartup.c projects/altix/sys/contrib/dev/acpica/compiler/asltransform.c projects/altix/sys/contrib/dev/acpica/compiler/asltree.c projects/altix/sys/contrib/dev/acpica/compiler/asltypes.h projects/altix/sys/contrib/dev/acpica/compiler/aslutils.c projects/altix/sys/contrib/dev/acpica/debugger/dbcmds.c projects/altix/sys/contrib/dev/acpica/debugger/dbdisply.c projects/altix/sys/contrib/dev/acpica/debugger/dbexec.c projects/altix/sys/contrib/dev/acpica/debugger/dbfileio.c projects/altix/sys/contrib/dev/acpica/debugger/dbhistry.c projects/altix/sys/contrib/dev/acpica/debugger/dbinput.c projects/altix/sys/contrib/dev/acpica/debugger/dbutils.c projects/altix/sys/contrib/dev/acpica/disassembler/dmobject.c projects/altix/sys/contrib/dev/acpica/disassembler/dmopcode.c projects/altix/sys/contrib/dev/acpica/disassembler/dmresrc.c projects/altix/sys/contrib/dev/acpica/dispatcher/dsinit.c projects/altix/sys/contrib/dev/acpica/dispatcher/dsmethod.c projects/altix/sys/contrib/dev/acpica/dispatcher/dsmthdat.c projects/altix/sys/contrib/dev/acpica/dispatcher/dsobject.c projects/altix/sys/contrib/dev/acpica/dispatcher/dsopcode.c projects/altix/sys/contrib/dev/acpica/dispatcher/dsutils.c projects/altix/sys/contrib/dev/acpica/events/evgpe.c projects/altix/sys/contrib/dev/acpica/events/evgpeblk.c projects/altix/sys/contrib/dev/acpica/events/evgpeinit.c projects/altix/sys/contrib/dev/acpica/events/evgpeutil.c projects/altix/sys/contrib/dev/acpica/events/evrgnini.c projects/altix/sys/contrib/dev/acpica/events/evxface.c projects/altix/sys/contrib/dev/acpica/events/evxfevnt.c projects/altix/sys/contrib/dev/acpica/executer/exdump.c projects/altix/sys/contrib/dev/acpica/executer/exfldio.c projects/altix/sys/contrib/dev/acpica/executer/exprep.c projects/altix/sys/contrib/dev/acpica/executer/exregion.c projects/altix/sys/contrib/dev/acpica/executer/exsystem.c projects/altix/sys/contrib/dev/acpica/hardware/hwgpe.c projects/altix/sys/contrib/dev/acpica/hardware/hwsleep.c projects/altix/sys/contrib/dev/acpica/hardware/hwvalid.c projects/altix/sys/contrib/dev/acpica/include/acconfig.h projects/altix/sys/contrib/dev/acpica/include/acdisasm.h projects/altix/sys/contrib/dev/acpica/include/acevents.h projects/altix/sys/contrib/dev/acpica/include/acexcep.h projects/altix/sys/contrib/dev/acpica/include/acglobal.h projects/altix/sys/contrib/dev/acpica/include/achware.h projects/altix/sys/contrib/dev/acpica/include/aclocal.h projects/altix/sys/contrib/dev/acpica/include/acnamesp.h projects/altix/sys/contrib/dev/acpica/include/acobject.h projects/altix/sys/contrib/dev/acpica/include/acoutput.h projects/altix/sys/contrib/dev/acpica/include/acpixf.h projects/altix/sys/contrib/dev/acpica/include/acpredef.h projects/altix/sys/contrib/dev/acpica/include/acstruct.h projects/altix/sys/contrib/dev/acpica/include/actbl.h projects/altix/sys/contrib/dev/acpica/include/actbl2.h projects/altix/sys/contrib/dev/acpica/include/actypes.h projects/altix/sys/contrib/dev/acpica/include/acutils.h projects/altix/sys/contrib/dev/acpica/namespace/nsaccess.c projects/altix/sys/contrib/dev/acpica/namespace/nsalloc.c projects/altix/sys/contrib/dev/acpica/namespace/nsdump.c projects/altix/sys/contrib/dev/acpica/namespace/nsinit.c projects/altix/sys/contrib/dev/acpica/namespace/nsnames.c projects/altix/sys/contrib/dev/acpica/namespace/nsparse.c projects/altix/sys/contrib/dev/acpica/namespace/nsrepair.c projects/altix/sys/contrib/dev/acpica/namespace/nsrepair2.c projects/altix/sys/contrib/dev/acpica/namespace/nssearch.c projects/altix/sys/contrib/dev/acpica/namespace/nsutils.c projects/altix/sys/contrib/dev/acpica/namespace/nswalk.c projects/altix/sys/contrib/dev/acpica/namespace/nsxfobj.c projects/altix/sys/contrib/dev/acpica/osunixxf.c projects/altix/sys/contrib/dev/acpica/utilities/utglobal.c projects/altix/sys/contrib/dev/acpica/utilities/utmisc.c projects/altix/sys/contrib/dev/acpica/utilities/uttrack.c projects/altix/sys/dev/acpica/acpi.c projects/altix/sys/dev/acpica/acpi_button.c projects/altix/sys/dev/acpica/acpi_cpu.c projects/altix/sys/dev/acpica/acpi_ec.c projects/altix/sys/dev/acpica/acpi_hpet.c projects/altix/sys/dev/acpica/acpi_hpet.h projects/altix/sys/dev/acpica/acpi_lid.c projects/altix/sys/dev/agp/agp_nvidia.c projects/altix/sys/dev/ata/ata-all.c projects/altix/sys/dev/ata/ata-all.h projects/altix/sys/dev/ata/ata-card.c projects/altix/sys/dev/ata/ata-disk.c projects/altix/sys/dev/ata/chipsets/ata-serverworks.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416reg.h projects/altix/sys/dev/ath/if_ath.c projects/altix/sys/dev/bge/if_bge.c projects/altix/sys/dev/bwi/if_bwi.c projects/altix/sys/dev/cxgb/cxgb_adapter.h projects/altix/sys/dev/cxgb/cxgb_main.c projects/altix/sys/dev/cxgb/cxgb_sge.c projects/altix/sys/dev/cxgb/ulp/tom/cxgb_vm.c projects/altix/sys/dev/e1000/e1000_82575.h projects/altix/sys/dev/e1000/e1000_api.c projects/altix/sys/dev/e1000/e1000_api.h projects/altix/sys/dev/e1000/e1000_hw.h projects/altix/sys/dev/e1000/e1000_regs.h projects/altix/sys/dev/e1000/if_em.c projects/altix/sys/dev/e1000/if_igb.c projects/altix/sys/dev/e1000/if_igb.h projects/altix/sys/dev/e1000/if_lem.c projects/altix/sys/dev/fb/fbreg.h projects/altix/sys/dev/fb/vesa.c projects/altix/sys/dev/fdt/fdtbus.c projects/altix/sys/dev/hptiop/hptiop.c projects/altix/sys/dev/hptmv/entry.c projects/altix/sys/dev/iwn/if_iwn.c projects/altix/sys/dev/ixgbe/ixgbe.c projects/altix/sys/dev/ixgbe/ixgbe.h projects/altix/sys/dev/md/md.c projects/altix/sys/dev/mge/if_mge.c projects/altix/sys/dev/mge/if_mgevar.h projects/altix/sys/dev/mpt/mpt.c projects/altix/sys/dev/mpt/mpt.h projects/altix/sys/dev/mpt/mpt_cam.c projects/altix/sys/dev/mpt/mpt_pci.c projects/altix/sys/dev/mpt/mpt_raid.c projects/altix/sys/dev/ofw/ofw_bus_subr.c projects/altix/sys/dev/ofw/ofw_bus_subr.h projects/altix/sys/dev/pci/pci.c projects/altix/sys/dev/pci/pcivar.h projects/altix/sys/dev/sound/pcm/feeder_eq.c projects/altix/sys/dev/sound/pcm/feeder_rate.c projects/altix/sys/dev/sound/pcm/sound.c projects/altix/sys/dev/sound/usb/uaudio.c projects/altix/sys/dev/sound/usb/uaudioreg.h projects/altix/sys/dev/twa/tw_cl_misc.c projects/altix/sys/dev/usb/controller/ehci.c projects/altix/sys/dev/usb/controller/ohci.c projects/altix/sys/dev/usb/controller/uhci.c projects/altix/sys/dev/usb/net/if_rue.c projects/altix/sys/dev/usb/quirk/usb_quirk.c projects/altix/sys/dev/usb/usb_transfer.c projects/altix/sys/dev/usb/usbdevs projects/altix/sys/dev/usb/wlan/if_rum.c projects/altix/sys/dev/usb/wlan/if_run.c projects/altix/sys/dev/usb/wlan/if_runvar.h projects/altix/sys/dev/usb/wlan/if_upgt.c projects/altix/sys/dev/usb/wlan/if_ural.c projects/altix/sys/fs/nfsclient/nfs_clbio.c projects/altix/sys/fs/nfsclient/nfs_clcomsubs.c projects/altix/sys/fs/nfsclient/nfs_clport.c projects/altix/sys/fs/nfsclient/nfs_clrpcops.c projects/altix/sys/fs/nfsclient/nfs_clsubs.c projects/altix/sys/fs/nfsclient/nfs_clvnops.c projects/altix/sys/fs/nfsserver/nfs_nfsdport.c projects/altix/sys/fs/nfsserver/nfs_nfsdsocket.c projects/altix/sys/fs/nwfs/nwfs_io.c projects/altix/sys/fs/smbfs/smbfs_io.c projects/altix/sys/fs/tmpfs/tmpfs_vnops.c projects/altix/sys/fs/udf/udf_vnops.c projects/altix/sys/geom/gate/g_gate.c projects/altix/sys/geom/part/g_part.c projects/altix/sys/geom/part/g_part.h projects/altix/sys/geom/part/g_part_mbr.c projects/altix/sys/i386/acpica/acpi_wakeup.c projects/altix/sys/i386/conf/NOTES projects/altix/sys/i386/i386/apic_vector.s projects/altix/sys/i386/i386/atpic_vector.s projects/altix/sys/i386/i386/exception.s projects/altix/sys/i386/i386/identcpu.c projects/altix/sys/i386/i386/intr_machdep.c projects/altix/sys/i386/i386/machdep.c projects/altix/sys/i386/i386/mp_machdep.c projects/altix/sys/i386/i386/support.s projects/altix/sys/i386/i386/tsc.c projects/altix/sys/i386/i386/vm_machdep.c projects/altix/sys/i386/ibcs2/ibcs2_proto.h projects/altix/sys/i386/ibcs2/ibcs2_syscall.h projects/altix/sys/i386/ibcs2/ibcs2_sysent.c projects/altix/sys/i386/include/apicvar.h projects/altix/sys/i386/include/mca.h projects/altix/sys/i386/include/md_var.h projects/altix/sys/i386/include/npx.h projects/altix/sys/i386/include/pcb.h projects/altix/sys/i386/isa/npx.c projects/altix/sys/i386/linux/linux_sysent.c projects/altix/sys/ia64/ia64/machdep.c projects/altix/sys/ia64/ia64/mca.c projects/altix/sys/ia64/ia64/mp_machdep.c projects/altix/sys/ia64/include/asm.h projects/altix/sys/ia64/include/mca.h projects/altix/sys/ia64/include/profile.h projects/altix/sys/isa/rtc.h projects/altix/sys/kern/bus_if.m projects/altix/sys/kern/init_sysent.c projects/altix/sys/kern/kern_acct.c projects/altix/sys/kern/kern_clock.c projects/altix/sys/kern/kern_conf.c projects/altix/sys/kern/kern_context.c projects/altix/sys/kern/kern_exec.c projects/altix/sys/kern/kern_exit.c projects/altix/sys/kern/kern_malloc.c projects/altix/sys/kern/kern_mbuf.c projects/altix/sys/kern/kern_module.c projects/altix/sys/kern/kern_resource.c projects/altix/sys/kern/kern_sdt.c projects/altix/sys/kern/kern_sig.c projects/altix/sys/kern/kern_syscalls.c projects/altix/sys/kern/kern_tc.c projects/altix/sys/kern/kern_thr.c projects/altix/sys/kern/kern_umtx.c projects/altix/sys/kern/makesyscalls.sh projects/altix/sys/kern/subr_bus.c projects/altix/sys/kern/subr_devstat.c projects/altix/sys/kern/subr_fattime.c projects/altix/sys/kern/subr_lock.c projects/altix/sys/kern/subr_mchain.c projects/altix/sys/kern/subr_module.c projects/altix/sys/kern/subr_param.c projects/altix/sys/kern/subr_sleepqueue.c projects/altix/sys/kern/subr_trap.c projects/altix/sys/kern/subr_unit.c projects/altix/sys/kern/subr_witness.c projects/altix/sys/kern/sys_generic.c projects/altix/sys/kern/sys_process.c projects/altix/sys/kern/sys_socket.c projects/altix/sys/kern/syscalls.c projects/altix/sys/kern/syscalls.master projects/altix/sys/kern/systrace_args.c projects/altix/sys/kern/sysv_shm.c projects/altix/sys/kern/tty.c projects/altix/sys/kern/uipc_mbuf.c projects/altix/sys/kern/uipc_mbuf2.c projects/altix/sys/kern/uipc_mqueue.c projects/altix/sys/kern/uipc_syscalls.c projects/altix/sys/kern/vfs_bio.c projects/altix/sys/kern/vfs_cache.c projects/altix/sys/kern/vfs_subr.c projects/altix/sys/kern/vfs_syscalls.c projects/altix/sys/kern/vfs_vnops.c projects/altix/sys/mips/atheros/ar71xx_wdog.c projects/altix/sys/mips/atheros/ar71xxreg.h projects/altix/sys/mips/include/asm.h projects/altix/sys/mips/include/cpu.h projects/altix/sys/mips/include/pmap.h projects/altix/sys/mips/include/pte.h projects/altix/sys/mips/include/setjmp.h projects/altix/sys/mips/include/vm.h projects/altix/sys/mips/include/vmparam.h projects/altix/sys/mips/mips/cpu.c projects/altix/sys/mips/mips/exception.S projects/altix/sys/mips/mips/machdep.c projects/altix/sys/mips/mips/mp_machdep.c projects/altix/sys/mips/mips/pm_machdep.c projects/altix/sys/mips/mips/pmap.c projects/altix/sys/mips/mips/stack_machdep.c projects/altix/sys/mips/mips/trap.c projects/altix/sys/mips/mips/vm_machdep.c projects/altix/sys/mips/rmi/board.c projects/altix/sys/mips/rmi/board.h projects/altix/sys/mips/rmi/dev/xlr/rge.c projects/altix/sys/modules/Makefile projects/altix/sys/modules/acpi/Makefile projects/altix/sys/modules/em/Makefile projects/altix/sys/modules/igb/Makefile projects/altix/sys/modules/mqueue/Makefile projects/altix/sys/net/bpf.c projects/altix/sys/net/bpf.h projects/altix/sys/net/bpfdesc.h projects/altix/sys/net80211/ieee80211_crypto.h projects/altix/sys/net80211/ieee80211_crypto_ccmp.c projects/altix/sys/net80211/ieee80211_crypto_tkip.c projects/altix/sys/net80211/ieee80211_rssadapt.c projects/altix/sys/netgraph/ng_ipfw.c projects/altix/sys/netgraph/ng_patch.c projects/altix/sys/netgraph/ng_pipe.c projects/altix/sys/netgraph/ng_source.c projects/altix/sys/netgraph/ng_source.h projects/altix/sys/netinet/ipfw/ip_fw2.c projects/altix/sys/netinet/sctp.h projects/altix/sys/netinet/sctp_asconf.c projects/altix/sys/netinet/sctp_pcb.c projects/altix/sys/netinet/sctp_usrreq.c projects/altix/sys/netinet/sctputil.c projects/altix/sys/nfsclient/nfs_bio.c projects/altix/sys/nfsclient/nfs_subs.c projects/altix/sys/nfsclient/nfs_vnops.c projects/altix/sys/pc98/cbus/clock.c projects/altix/sys/pc98/include/npx.h projects/altix/sys/pc98/pc98/machdep.c projects/altix/sys/powerpc/aim/clock.c projects/altix/sys/powerpc/aim/interrupt.c projects/altix/sys/powerpc/aim/machdep.c projects/altix/sys/powerpc/aim/mmu_oea.c projects/altix/sys/powerpc/aim/mp_cpudep.c projects/altix/sys/powerpc/aim/nexus.c projects/altix/sys/powerpc/aim/platform_chrp.c projects/altix/sys/powerpc/booke/clock.c projects/altix/sys/powerpc/booke/interrupt.c projects/altix/sys/powerpc/booke/machdep.c projects/altix/sys/powerpc/booke/pmap.c projects/altix/sys/powerpc/include/asm.h projects/altix/sys/powerpc/include/intr_machdep.h projects/altix/sys/powerpc/include/ocpbus.h projects/altix/sys/powerpc/include/openpicvar.h projects/altix/sys/powerpc/include/profile.h projects/altix/sys/powerpc/mpc85xx/atpic.c projects/altix/sys/powerpc/mpc85xx/isa.c projects/altix/sys/powerpc/mpc85xx/ocpbus.c projects/altix/sys/powerpc/mpc85xx/ocpbus.h projects/altix/sys/powerpc/mpc85xx/opic.c projects/altix/sys/powerpc/mpc85xx/pci_ocp.c projects/altix/sys/powerpc/ofw/ofw_pcib_pci.c projects/altix/sys/powerpc/ofw/ofw_pcibus.c projects/altix/sys/powerpc/ofw/ofw_syscons.c projects/altix/sys/powerpc/powermac/cpcht.c projects/altix/sys/powerpc/powermac/cuda.c projects/altix/sys/powerpc/powermac/grackle.c projects/altix/sys/powerpc/powermac/hrowpic.c projects/altix/sys/powerpc/powermac/kiic.c projects/altix/sys/powerpc/powermac/macgpio.c projects/altix/sys/powerpc/powermac/macio.c projects/altix/sys/powerpc/powermac/openpic_macio.c projects/altix/sys/powerpc/powermac/pmu.c projects/altix/sys/powerpc/powermac/uninorth.c projects/altix/sys/powerpc/powermac/uninorthpci.c projects/altix/sys/powerpc/powerpc/intr_machdep.c projects/altix/sys/powerpc/powerpc/mp_machdep.c projects/altix/sys/powerpc/powerpc/openpic.c projects/altix/sys/powerpc/powerpc/pic_if.m projects/altix/sys/powerpc/psim/openpic_iobus.c projects/altix/sys/sparc64/ebus/ebus.c projects/altix/sys/sparc64/include/smp.h projects/altix/sys/sparc64/isa/ofw_isa.c projects/altix/sys/sparc64/pci/fire.c projects/altix/sys/sparc64/pci/ofw_pcib_subr.c projects/altix/sys/sparc64/pci/psycho.c projects/altix/sys/sparc64/pci/schizo.c projects/altix/sys/sparc64/sparc64/machdep.c projects/altix/sys/sparc64/sparc64/mp_locore.S projects/altix/sys/sun4v/sun4v/hv_pci.c projects/altix/sys/sun4v/sun4v/machdep.c projects/altix/sys/sys/bus.h projects/altix/sys/sys/conf.h projects/altix/sys/sys/diskmbr.h projects/altix/sys/sys/pcpu.h projects/altix/sys/sys/pmc.h projects/altix/sys/sys/proc.h projects/altix/sys/sys/ptrace.h projects/altix/sys/sys/signalvar.h projects/altix/sys/sys/syscall.h projects/altix/sys/sys/syscall.mk projects/altix/sys/sys/syscallsubr.h projects/altix/sys/sys/sysent.h projects/altix/sys/sys/sysproto.h projects/altix/sys/sys/systm.h projects/altix/sys/sys/time.h projects/altix/sys/ufs/ffs/ffs_alloc.c projects/altix/sys/ufs/ffs/ffs_inode.c projects/altix/sys/ufs/ffs/ffs_softdep.c projects/altix/sys/ufs/ffs/ffs_vnops.c projects/altix/sys/ufs/ffs/softdep.h projects/altix/sys/ufs/ufs/inode.h projects/altix/sys/ufs/ufs/ufs_inode.c projects/altix/sys/ufs/ufs/ufs_lookup.c projects/altix/sys/ufs/ufs/ufs_vnops.c projects/altix/sys/vm/uma.h projects/altix/sys/vm/uma_core.c projects/altix/sys/vm/uma_int.h projects/altix/sys/vm/vm_contig.c projects/altix/sys/vm/vm_fault.c projects/altix/sys/vm/vm_map.c projects/altix/sys/vm/vm_object.c projects/altix/sys/vm/vm_page.c projects/altix/sys/vm/vm_page.h projects/altix/sys/vm/vm_pageout.c projects/altix/sys/vm/vm_pager.h projects/altix/sys/x86/cpufreq/est.c projects/altix/sys/x86/isa/atrtc.c projects/altix/sys/x86/isa/clock.c projects/altix/sys/x86/x86/local_apic.c projects/altix/sys/x86/x86/mca.c projects/altix/sys/x86/x86/msi.c Directory Properties: projects/altix/lib/libstand/ (props changed) projects/altix/sys/ (props changed) projects/altix/sys/amd64/include/xen/ (props changed) projects/altix/sys/cddl/contrib/opensolaris/ (props changed) projects/altix/sys/contrib/dev/acpica/ (props changed) projects/altix/sys/contrib/x86emu/ (props changed) projects/altix/sys/dev/xen/xenpci/ (props changed) Modified: projects/altix/sys/amd64/acpica/acpi_wakeup.c ============================================================================== --- projects/altix/sys/amd64/acpica/acpi_wakeup.c Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/acpica/acpi_wakeup.c Tue Jul 6 23:20:43 2010 (r209750) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -245,7 +246,7 @@ acpi_sleep_machdep(struct acpi_softc *sc cr3 = rcr3(); load_cr3(KPML4phys); - stopfpu = stopxpcbs[0]->xpcb_pcb.pcb_save; + stopfpu = &stopxpcbs[0]->xpcb_pcb.pcb_user_save; if (acpi_savecpu(stopxpcbs[0])) { fpugetregs(curthread, stopfpu); @@ -300,6 +301,7 @@ out: #endif load_cr3(cr3); + mca_resume(); intr_resume(); intr_restore(rf); Modified: projects/altix/sys/amd64/amd64/apic_vector.S ============================================================================== --- projects/altix/sys/amd64/amd64/apic_vector.S Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/amd64/apic_vector.S Tue Jul 6 23:20:43 2010 (r209750) @@ -36,6 +36,8 @@ * as well as IPI handlers. */ +#include "opt_smp.h" + #include #include @@ -135,6 +137,19 @@ IDTVEC(errorint) .text SUPERALIGN_TEXT IDTVEC(invltlb) +#if defined(COUNT_XINVLTLB_HITS) || defined(COUNT_IPIS) + PUSH_FRAME + movl PCPU(CPUID), %eax +#ifdef COUNT_XINVLTLB_HITS + incl xhits_gbl(,%rax,4) +#endif +#ifdef COUNT_IPIS + movq ipi_invltlb_counts(,%rax,8),%rax + incq (%rax) +#endif + POP_FRAME +#endif + pushq %rax movq %cr3, %rax /* invalidate the TLB */ @@ -155,6 +170,19 @@ IDTVEC(invltlb) .text SUPERALIGN_TEXT IDTVEC(invlpg) +#if defined(COUNT_XINVLTLB_HITS) || defined(COUNT_IPIS) + PUSH_FRAME + movl PCPU(CPUID), %eax +#ifdef COUNT_XINVLTLB_HITS + incl xhits_pg(,%rax,4) +#endif +#ifdef COUNT_IPIS + movq ipi_invlpg_counts(,%rax,8),%rax + incq (%rax) +#endif + POP_FRAME +#endif + pushq %rax movq smp_tlb_addr1, %rax @@ -175,6 +203,19 @@ IDTVEC(invlpg) .text SUPERALIGN_TEXT IDTVEC(invlrng) +#if defined(COUNT_XINVLTLB_HITS) || defined(COUNT_IPIS) + PUSH_FRAME + movl PCPU(CPUID), %eax +#ifdef COUNT_XINVLTLB_HITS + incl xhits_rng(,%rax,4) +#endif +#ifdef COUNT_IPIS + movq ipi_invlrng_counts(,%rax,8),%rax + incq (%rax) +#endif + POP_FRAME +#endif + pushq %rax pushq %rdx @@ -201,6 +242,14 @@ IDTVEC(invlrng) .text SUPERALIGN_TEXT IDTVEC(invlcache) +#ifdef COUNT_IPIS + PUSH_FRAME + movl PCPU(CPUID), %eax + movq ipi_invlcache_counts(,%rax,8),%rax + incq (%rax) + POP_FRAME +#endif + pushq %rax wbinvd @@ -270,6 +319,11 @@ IDTVEC(cpususpend) SUPERALIGN_TEXT IDTVEC(rendezvous) PUSH_FRAME +#ifdef COUNT_IPIS + movl PCPU(CPUID), %eax + movq ipi_rendezvous_counts(,%rax,8), %rax + incq (%rax) +#endif call smp_rendezvous_action movq lapic, %rax movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ Modified: projects/altix/sys/amd64/amd64/exception.S ============================================================================== --- projects/altix/sys/amd64/amd64/exception.S Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/amd64/exception.S Tue Jul 6 23:20:43 2010 (r209750) @@ -191,6 +191,7 @@ alltraps_pushregs_no_rdi: movq %r14,TF_R14(%rsp) movq %r15,TF_R15(%rsp) movl $TF_HASSEGS,TF_FLAGS(%rsp) + cld FAKE_MCOUNT(TF_RIP(%rsp)) #ifdef KDTRACE_HOOKS /* @@ -270,6 +271,7 @@ IDTVEC(dblfault) movw %es,TF_ES(%rsp) movw %ds,TF_DS(%rsp) movl $TF_HASSEGS,TF_FLAGS(%rsp) + cld testb $SEL_RPL_MASK,TF_CS(%rsp) /* Did we come from kernel? */ jz 1f /* already running with kernel GS.base */ swapgs @@ -369,6 +371,7 @@ IDTVEC(fast_syscall) movq %r14,TF_R14(%rsp) /* C preserved */ movq %r15,TF_R15(%rsp) /* C preserved */ movl $TF_HASSEGS,TF_FLAGS(%rsp) + cld FAKE_MCOUNT(TF_RIP(%rsp)) movq %rsp,%rdi call syscall @@ -434,6 +437,7 @@ IDTVEC(nmi) movw %es,TF_ES(%rsp) movw %ds,TF_DS(%rsp) movl $TF_HASSEGS,TF_FLAGS(%rsp) + cld xorl %ebx,%ebx testb $SEL_RPL_MASK,TF_CS(%rsp) jnz nmi_fromuserspace Modified: projects/altix/sys/amd64/amd64/fpu.c ============================================================================== --- projects/altix/sys/amd64/amd64/fpu.c Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/amd64/fpu.c Tue Jul 6 23:20:43 2010 (r209750) @@ -115,6 +115,9 @@ fpuinit(void) u_int mxcsr; u_short control; + /* + * It is too early for critical_enter() to work on AP. + */ savecrit = intr_disable(); stop_emulating(); fninit(); @@ -141,16 +144,15 @@ fpuinit(void) void fpuexit(struct thread *td) { - register_t savecrit; - savecrit = intr_disable(); + critical_enter(); if (curthread == PCPU_GET(fpcurthread)) { stop_emulating(); fxsave(PCPU_GET(curpcb)->pcb_save); start_emulating(); PCPU_SET(fpcurthread, 0); } - intr_restore(savecrit); + critical_exit(); } int @@ -351,10 +353,9 @@ static char fpetable[128] = { int fputrap() { - register_t savecrit; u_short control, status; - savecrit = intr_disable(); + critical_enter(); /* * Interrupt handling (for another interrupt) may have pushed the @@ -371,7 +372,7 @@ fputrap() if (PCPU_GET(fpcurthread) == curthread) fnclex(); - intr_restore(savecrit); + critical_exit(); return (fpetable[status & ((~control & 0x3f) | 0x40)]); } @@ -389,12 +390,13 @@ void fpudna(void) { struct pcb *pcb; - register_t s; + critical_enter(); if (PCPU_GET(fpcurthread) == curthread) { printf("fpudna: fpcurthread == curthread %d times\n", ++err_count); stop_emulating(); + critical_exit(); return; } if (PCPU_GET(fpcurthread) != NULL) { @@ -404,7 +406,6 @@ fpudna(void) curthread, curthread->td_proc->p_pid); panic("fpudna"); } - s = intr_disable(); stop_emulating(); /* * Record new context early in case frstor causes a trap. @@ -428,19 +429,17 @@ fpudna(void) pcb->pcb_flags |= PCB_USERFPUINITDONE; } else fxrstor(pcb->pcb_save); - intr_restore(s); + critical_exit(); } -/* - * This should be called with interrupts disabled and only when the owning - * FPU thread is non-null. - */ void fpudrop() { struct thread *td; td = PCPU_GET(fpcurthread); + KASSERT(td == curthread, ("fpudrop: fpcurthread != curthread")); + CRITICAL_ASSERT(td); PCPU_SET(fpcurthread, NULL); td->td_pcb->pcb_flags &= ~PCB_FPUINITDONE; start_emulating(); @@ -454,7 +453,6 @@ int fpugetuserregs(struct thread *td, struct savefpu *addr) { struct pcb *pcb; - register_t s; pcb = td->td_pcb; if ((pcb->pcb_flags & PCB_USERFPUINITDONE) == 0) { @@ -462,13 +460,13 @@ fpugetuserregs(struct thread *td, struct addr->sv_env.en_cw = pcb->pcb_initial_fpucw; return (_MC_FPOWNED_NONE); } - s = intr_disable(); + critical_enter(); if (td == PCPU_GET(fpcurthread) && PCB_USER_FPU(pcb)) { fxsave(addr); - intr_restore(s); + critical_exit(); return (_MC_FPOWNED_FPU); } else { - intr_restore(s); + critical_exit(); bcopy(&pcb->pcb_user_save, addr, sizeof(*addr)); return (_MC_FPOWNED_PCB); } @@ -478,7 +476,6 @@ int fpugetregs(struct thread *td, struct savefpu *addr) { struct pcb *pcb; - register_t s; pcb = td->td_pcb; if ((pcb->pcb_flags & PCB_FPUINITDONE) == 0) { @@ -486,13 +483,13 @@ fpugetregs(struct thread *td, struct sav addr->sv_env.en_cw = pcb->pcb_initial_fpucw; return (_MC_FPOWNED_NONE); } - s = intr_disable(); + critical_enter(); if (td == PCPU_GET(fpcurthread)) { fxsave(addr); - intr_restore(s); + critical_exit(); return (_MC_FPOWNED_FPU); } else { - intr_restore(s); + critical_exit(); bcopy(pcb->pcb_save, addr, sizeof(*addr)); return (_MC_FPOWNED_PCB); } @@ -505,16 +502,15 @@ void fpusetuserregs(struct thread *td, struct savefpu *addr) { struct pcb *pcb; - register_t s; pcb = td->td_pcb; - s = intr_disable(); + critical_enter(); if (td == PCPU_GET(fpcurthread) && PCB_USER_FPU(pcb)) { fxrstor(addr); - intr_restore(s); + critical_exit(); pcb->pcb_flags |= PCB_FPUINITDONE | PCB_USERFPUINITDONE; } else { - intr_restore(s); + critical_exit(); bcopy(addr, &td->td_pcb->pcb_user_save, sizeof(*addr)); if (PCB_USER_FPU(pcb)) pcb->pcb_flags |= PCB_FPUINITDONE; @@ -526,15 +522,14 @@ void fpusetregs(struct thread *td, struct savefpu *addr) { struct pcb *pcb; - register_t s; pcb = td->td_pcb; - s = intr_disable(); + critical_enter(); if (td == PCPU_GET(fpcurthread)) { fxrstor(addr); - intr_restore(s); + critical_exit(); } else { - intr_restore(s); + critical_exit(); bcopy(addr, td->td_pcb->pcb_save, sizeof(*addr)); } if (PCB_USER_FPU(pcb)) @@ -652,13 +647,12 @@ int fpu_kern_leave(struct thread *td, struct fpu_kern_ctx *ctx) { struct pcb *pcb; - register_t savecrit; pcb = td->td_pcb; - savecrit = intr_disable(); + critical_enter(); if (curthread == PCPU_GET(fpcurthread)) fpudrop(); - intr_restore(savecrit); + critical_exit(); pcb->pcb_save = ctx->prev; if (pcb->pcb_save == &pcb->pcb_user_save) { if ((pcb->pcb_flags & PCB_USERFPUINITDONE) != 0) Modified: projects/altix/sys/amd64/amd64/intr_machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/intr_machdep.c Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/amd64/intr_machdep.c Tue Jul 6 23:20:43 2010 (r209750) @@ -529,7 +529,7 @@ intr_shuffle_irqs(void *arg __unused) */ if (isrc->is_event->ie_cpu != NOCPU) (void)isrc->is_pic->pic_assign_cpu(isrc, - isrc->is_event->ie_cpu); + cpu_apic_ids[isrc->is_event->ie_cpu]); else if (isrc->is_pic->pic_assign_cpu(isrc, cpu_apic_ids[current_cpu]) == 0) (void)intr_next_cpu(); Modified: projects/altix/sys/amd64/amd64/machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/machdep.c Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/amd64/machdep.c Tue Jul 6 23:20:43 2010 (r209750) @@ -81,6 +81,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -2103,11 +2104,6 @@ set_fpcontext(struct thread *td, const m fpstate_drop(td); else if (mcp->mc_ownedfp == _MC_FPOWNED_FPU || mcp->mc_ownedfp == _MC_FPOWNED_PCB) { - /* - * XXX we violate the dubious requirement that fpusetregs() - * be called with interrupts disabled. - * XXX obsolete on trap-16 systems? - */ fpstate = (struct savefpu *)&mcp->mc_fpstate; fpstate->sv_env.en_mxcsr &= cpu_mxcsr_mask; fpusetuserregs(td, fpstate); @@ -2119,25 +2115,24 @@ set_fpcontext(struct thread *td, const m void fpstate_drop(struct thread *td) { - register_t s; KASSERT(PCB_USER_FPU(td->td_pcb), ("fpstate_drop: kernel-owned fpu")); - s = intr_disable(); + critical_enter(); if (PCPU_GET(fpcurthread) == td) fpudrop(); /* * XXX force a full drop of the fpu. The above only drops it if we * owned it. * - * XXX I don't much like fpugetregs()'s semantics of doing a full + * XXX I don't much like fpugetuserregs()'s semantics of doing a full * drop. Dropping only to the pcb matches fnsave's behaviour. * We only need to drop to !PCB_INITDONE in sendsig(). But - * sendsig() is the only caller of fpugetregs()... perhaps we just + * sendsig() is the only caller of fpugetuserregs()... perhaps we just * have too many layers. */ curthread->td_pcb->pcb_flags &= ~(PCB_FPUINITDONE | PCB_USERFPUINITDONE); - intr_restore(s); + critical_exit(); } int Modified: projects/altix/sys/amd64/amd64/mp_machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/mp_machdep.c Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/amd64/mp_machdep.c Tue Jul 6 23:20:43 2010 (r209750) @@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$"); #include "opt_kstack_pages.h" #include "opt_mp_watchdog.h" #include "opt_sched.h" +#include "opt_smp.h" #include #include @@ -106,6 +107,20 @@ vm_offset_t smp_tlb_addr1; vm_offset_t smp_tlb_addr2; volatile int smp_tlb_wait; +#ifdef COUNT_IPIS +/* Interrupt counts. */ +static u_long *ipi_preempt_counts[MAXCPU]; +static u_long *ipi_ast_counts[MAXCPU]; +u_long *ipi_invltlb_counts[MAXCPU]; +u_long *ipi_invlrng_counts[MAXCPU]; +u_long *ipi_invlpg_counts[MAXCPU]; +u_long *ipi_invlcache_counts[MAXCPU]; +u_long *ipi_rendezvous_counts[MAXCPU]; +u_long *ipi_lazypmap_counts[MAXCPU]; +static u_long *ipi_hardclock_counts[MAXCPU]; +static u_long *ipi_statclock_counts[MAXCPU]; +#endif + extern inthand_t IDTVEC(fast_syscall), IDTVEC(fast_syscall32); /* @@ -692,10 +707,13 @@ init_secondary(void) load_fs(_ufssel); mtx_unlock_spin(&ap_boot_mtx); - /* wait until all the AP's are up */ + /* Wait until all the AP's are up. */ while (smp_started == 0) ia32_pause(); + /* Start per-CPU event timers. */ + cpu_initclocks_ap(); + sched_throw(NULL); panic("scheduler returned us to %s", __func__); @@ -970,6 +988,42 @@ start_ap(int apic_id) return 0; /* return FAILURE */ } +#ifdef COUNT_XINVLTLB_HITS +u_int xhits_gbl[MAXCPU]; +u_int xhits_pg[MAXCPU]; +u_int xhits_rng[MAXCPU]; +SYSCTL_NODE(_debug, OID_AUTO, xhits, CTLFLAG_RW, 0, ""); +SYSCTL_OPAQUE(_debug_xhits, OID_AUTO, global, CTLFLAG_RW, &xhits_gbl, + sizeof(xhits_gbl), "IU", ""); +SYSCTL_OPAQUE(_debug_xhits, OID_AUTO, page, CTLFLAG_RW, &xhits_pg, + sizeof(xhits_pg), "IU", ""); +SYSCTL_OPAQUE(_debug_xhits, OID_AUTO, range, CTLFLAG_RW, &xhits_rng, + sizeof(xhits_rng), "IU", ""); + +u_int ipi_global; +u_int ipi_page; +u_int ipi_range; +u_int ipi_range_size; +SYSCTL_INT(_debug_xhits, OID_AUTO, ipi_global, CTLFLAG_RW, &ipi_global, 0, ""); +SYSCTL_INT(_debug_xhits, OID_AUTO, ipi_page, CTLFLAG_RW, &ipi_page, 0, ""); +SYSCTL_INT(_debug_xhits, OID_AUTO, ipi_range, CTLFLAG_RW, &ipi_range, 0, ""); +SYSCTL_INT(_debug_xhits, OID_AUTO, ipi_range_size, CTLFLAG_RW, &ipi_range_size, + 0, ""); + +u_int ipi_masked_global; +u_int ipi_masked_page; +u_int ipi_masked_range; +u_int ipi_masked_range_size; +SYSCTL_INT(_debug_xhits, OID_AUTO, ipi_masked_global, CTLFLAG_RW, + &ipi_masked_global, 0, ""); +SYSCTL_INT(_debug_xhits, OID_AUTO, ipi_masked_page, CTLFLAG_RW, + &ipi_masked_page, 0, ""); +SYSCTL_INT(_debug_xhits, OID_AUTO, ipi_masked_range, CTLFLAG_RW, + &ipi_masked_range, 0, ""); +SYSCTL_INT(_debug_xhits, OID_AUTO, ipi_masked_range_size, CTLFLAG_RW, + &ipi_masked_range_size, 0, ""); +#endif /* COUNT_XINVLTLB_HITS */ + /* * Flush the TLB on all other CPU's */ @@ -1047,6 +1101,9 @@ smp_invltlb(void) if (smp_started) { smp_tlb_shootdown(IPI_INVLTLB, 0, 0); +#ifdef COUNT_XINVLTLB_HITS + ipi_global++; +#endif } } @@ -1054,8 +1111,12 @@ void smp_invlpg(vm_offset_t addr) { - if (smp_started) + if (smp_started) { smp_tlb_shootdown(IPI_INVLPG, addr, 0); +#ifdef COUNT_XINVLTLB_HITS + ipi_page++; +#endif + } } void @@ -1064,6 +1125,10 @@ smp_invlpg_range(vm_offset_t addr1, vm_o if (smp_started) { smp_tlb_shootdown(IPI_INVLRNG, addr1, addr2); +#ifdef COUNT_XINVLTLB_HITS + ipi_range++; + ipi_range_size += (addr2 - addr1) / PAGE_SIZE; +#endif } } @@ -1073,6 +1138,9 @@ smp_masked_invltlb(cpumask_t mask) if (smp_started) { smp_targeted_tlb_shootdown(mask, IPI_INVLTLB, 0, 0); +#ifdef COUNT_XINVLTLB_HITS + ipi_masked_global++; +#endif } } @@ -1082,6 +1150,9 @@ smp_masked_invlpg(cpumask_t mask, vm_off if (smp_started) { smp_targeted_tlb_shootdown(mask, IPI_INVLPG, addr, 0); +#ifdef COUNT_XINVLTLB_HITS + ipi_masked_page++; +#endif } } @@ -1091,6 +1162,10 @@ smp_masked_invlpg_range(cpumask_t mask, if (smp_started) { smp_targeted_tlb_shootdown(mask, IPI_INVLRNG, addr1, addr2); +#ifdef COUNT_XINVLTLB_HITS + ipi_masked_range++; + ipi_masked_range_size += (addr2 - addr1) / PAGE_SIZE; +#endif } } @@ -1102,16 +1177,30 @@ ipi_bitmap_handler(struct trapframe fram ipi_bitmap = atomic_readandclear_int(&cpu_ipi_pending[cpu]); - if (ipi_bitmap & (1 << IPI_PREEMPT)) + if (ipi_bitmap & (1 << IPI_PREEMPT)) { +#ifdef COUNT_IPIS + (*ipi_preempt_counts[cpu])++; +#endif sched_preempt(curthread); - - /* Nothing to do for AST */ - - if (ipi_bitmap & (1 << IPI_HARDCLOCK)) + } + if (ipi_bitmap & (1 << IPI_AST)) { +#ifdef COUNT_IPIS + (*ipi_ast_counts[cpu])++; +#endif + /* Nothing to do for AST */ + } + if (ipi_bitmap & (1 << IPI_HARDCLOCK)) { +#ifdef COUNT_IPIS + (*ipi_hardclock_counts[cpu])++; +#endif hardclockintr(&frame); - - if (ipi_bitmap & (1 << IPI_STATCLOCK)) + } + if (ipi_bitmap & (1 << IPI_STATCLOCK)) { +#ifdef COUNT_IPIS + (*ipi_statclock_counts[cpu])++; +#endif statclockintr(&frame); + } } /* @@ -1247,7 +1336,7 @@ cpususpend_handler(void) rf = intr_disable(); cr3 = rcr3(); - stopfpu = stopxpcbs[cpu]->xpcb_pcb.pcb_save; + stopfpu = &stopxpcbs[cpu]->xpcb_pcb.pcb_user_save; if (savectx2(stopxpcbs[cpu])) { fpugetregs(curthread, stopfpu); wbinvd(); @@ -1264,6 +1353,7 @@ cpususpend_handler(void) /* Restore CR3 and enable interrupts */ load_cr3(cr3); + mca_resume(); lapic_setup(0); intr_restore(rf); } @@ -1431,3 +1521,38 @@ mp_grab_cpu_hlt(void) __asm __volatile("sti; hlt" : : : "memory"); return (retval); } + +#ifdef COUNT_IPIS +/* + * Setup interrupt counters for IPI handlers. + */ +static void +mp_ipi_intrcnt(void *dummy) +{ + char buf[64]; + int i; + + CPU_FOREACH(i) { + snprintf(buf, sizeof(buf), "cpu%d:invltlb", i); + intrcnt_add(buf, &ipi_invltlb_counts[i]); + snprintf(buf, sizeof(buf), "cpu%d:invlrng", i); + intrcnt_add(buf, &ipi_invlrng_counts[i]); + snprintf(buf, sizeof(buf), "cpu%d:invlpg", i); + intrcnt_add(buf, &ipi_invlpg_counts[i]); + snprintf(buf, sizeof(buf), "cpu%d:preempt", i); + intrcnt_add(buf, &ipi_preempt_counts[i]); + snprintf(buf, sizeof(buf), "cpu%d:ast", i); + intrcnt_add(buf, &ipi_ast_counts[i]); + snprintf(buf, sizeof(buf), "cpu%d:rendezvous", i); + intrcnt_add(buf, &ipi_rendezvous_counts[i]); + snprintf(buf, sizeof(buf), "cpu%d:lazypmap", i); + intrcnt_add(buf, &ipi_lazypmap_counts[i]); + snprintf(buf, sizeof(buf), "cpu%d:hardclock", i); + intrcnt_add(buf, &ipi_hardclock_counts[i]); + snprintf(buf, sizeof(buf), "cpu%d:statclock", i); + intrcnt_add(buf, &ipi_statclock_counts[i]); + } +} +SYSINIT(mp_ipi_intrcnt, SI_SUB_INTR, SI_ORDER_MIDDLE, mp_ipi_intrcnt, NULL); +#endif + Modified: projects/altix/sys/amd64/amd64/vm_machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/vm_machdep.c Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/amd64/vm_machdep.c Tue Jul 6 23:20:43 2010 (r209750) @@ -265,8 +265,10 @@ cpu_thread_exit(struct thread *td) { struct pcb *pcb; + critical_enter(); if (td == PCPU_GET(fpcurthread)) fpudrop(); + critical_exit(); pcb = td->td_pcb; Modified: projects/altix/sys/amd64/conf/NOTES ============================================================================== --- projects/altix/sys/amd64/conf/NOTES Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/conf/NOTES Tue Jul 6 23:20:43 2010 (r209750) @@ -11,6 +11,12 @@ # We want LINT to cover profiling as well. profile 2 +# +# Enable the kernel DTrace hooks which are required to load the DTrace +# kernel modules. +# +options KDTRACE_HOOKS + ##################################################################### # SMP OPTIONS: @@ -30,6 +36,11 @@ device mptable # Optional MPSPEC mpta # options MP_WATCHDOG +# Debugging options. +# +options COUNT_XINVLTLB_HITS # Counters for TLB events +options COUNT_IPIS # Per-CPU IPI interrupt counters + ##################################################################### Modified: projects/altix/sys/amd64/ia32/ia32_exception.S ============================================================================== --- projects/altix/sys/amd64/ia32/ia32_exception.S Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/ia32/ia32_exception.S Tue Jul 6 23:20:43 2010 (r209750) @@ -67,6 +67,7 @@ IDTVEC(int0x80_syscall) movq %r14,TF_R14(%rsp) movq %r15,TF_R15(%rsp) movl $TF_HASSEGS,TF_FLAGS(%rsp) + cld FAKE_MCOUNT(TF_RIP(%rsp)) movq %rsp, %rdi call ia32_syscall Modified: projects/altix/sys/amd64/ia32/ia32_signal.c ============================================================================== --- projects/altix/sys/amd64/ia32/ia32_signal.c Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/ia32/ia32_signal.c Tue Jul 6 23:20:43 2010 (r209750) @@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -92,7 +93,14 @@ static void ia32_get_fpcontext(struct thread *td, struct ia32_mcontext *mcp) { - mcp->mc_ownedfp = fpugetregs(td, (struct savefpu *)&mcp->mc_fpstate); + /* + * XXX Format of 64bit and 32bit FXSAVE areas differs. FXSAVE + * in 32bit mode saves %cs and %ds, while on 64bit it saves + * 64bit instruction and data pointers. Ignore the difference + * for now, it should be irrelevant for most applications. + */ + mcp->mc_ownedfp = fpugetuserregs(td, + (struct savefpu *)&mcp->mc_fpstate); mcp->mc_fpformat = fpuformat(); } @@ -109,11 +117,7 @@ ia32_set_fpcontext(struct thread *td, co fpstate_drop(td); else if (mcp->mc_ownedfp == _MC_FPOWNED_FPU || mcp->mc_ownedfp == _MC_FPOWNED_PCB) { - /* - * XXX we violate the dubious requirement that fpusetregs() - * be called with interrupts disabled. - */ - fpusetregs(td, (struct savefpu *)&mcp->mc_fpstate); + fpusetuserregs(td, (struct savefpu *)&mcp->mc_fpstate); } else return (EINVAL); return (0); Modified: projects/altix/sys/amd64/include/apicvar.h ============================================================================== --- projects/altix/sys/amd64/include/apicvar.h Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/include/apicvar.h Tue Jul 6 23:20:43 2010 (r209750) @@ -158,12 +158,6 @@ #define APIC_BUS_PCI 2 #define APIC_BUS_MAX APIC_BUS_PCI -enum lapic_clock { - LAPIC_CLOCK_NONE, - LAPIC_CLOCK_HARDCLOCK, - LAPIC_CLOCK_ALL -}; - /* * An APIC enumerator is a psuedo bus driver that enumerates APIC's including * CPU's and I/O APIC's. @@ -234,7 +228,6 @@ int lapic_set_lvt_triggermode(u_int apic enum intr_trigger trigger); void lapic_set_tpr(u_int vector); void lapic_setup(int boot); -enum lapic_clock lapic_setup_clock(enum lapic_clock srcsdes); #endif /* !LOCORE */ #endif /* _MACHINE_APICVAR_H_ */ Modified: projects/altix/sys/amd64/include/asmacros.h ============================================================================== --- projects/altix/sys/amd64/include/asmacros.h Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/include/asmacros.h Tue Jul 6 23:20:43 2010 (r209750) @@ -166,7 +166,8 @@ movw %gs,TF_GS(%rsp) ; \ movw %es,TF_ES(%rsp) ; \ movw %ds,TF_DS(%rsp) ; \ - movl $TF_HASSEGS,TF_FLAGS(%rsp) + movl $TF_HASSEGS,TF_FLAGS(%rsp) ; \ + cld #define POP_FRAME \ movq TF_RDI(%rsp),%rdi ; \ Modified: projects/altix/sys/amd64/include/mca.h ============================================================================== --- projects/altix/sys/amd64/include/mca.h Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/include/mca.h Tue Jul 6 23:20:43 2010 (r209750) @@ -49,6 +49,7 @@ struct mca_record { void cmc_intr(void); void mca_init(void); int mca_intr(void); +void mca_resume(void); #endif Modified: projects/altix/sys/amd64/include/segments.h ============================================================================== --- projects/altix/sys/amd64/include/segments.h Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/include/segments.h Tue Jul 6 23:20:43 2010 (r209750) @@ -74,6 +74,13 @@ struct user_segment_descriptor { u_int64_t sd_hibase:8; /* segment base address (msb) */ } __packed; +#define USD_GETBASE(_sd) (((_sd)->sd_lobase) | (_sd)->sd_hibase << 24) +#define USD_SETBASE(_sd, _b) (_sd)->sd_lobase = (_b); \ + (_sd)->sd_hibase = ((_b) >> 24); +#define USD_GETLIMIT(_sd) (((_sd)->sd_lolimit) | (_sd)->sd_hilimit << 16) +#define USD_SETLIMIT(_sd, _l) (_sd)->sd_lolimit = (_l); \ + (_sd)->sd_hilimit = ((_l) >> 16); + /* * System segment descriptors (128 bit wide) */ Modified: projects/altix/sys/amd64/include/smp.h ============================================================================== --- projects/altix/sys/amd64/include/smp.h Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/include/smp.h Tue Jul 6 23:20:43 2010 (r209750) @@ -35,6 +35,14 @@ extern int mp_naps; extern int boot_cpu_id; extern struct pcb stoppcbs[]; extern int cpu_apic_ids[]; +#ifdef COUNT_IPIS +extern u_long *ipi_invltlb_counts[MAXCPU]; +extern u_long *ipi_invlrng_counts[MAXCPU]; +extern u_long *ipi_invlpg_counts[MAXCPU]; +extern u_long *ipi_invlcache_counts[MAXCPU]; +extern u_long *ipi_rendezvous_counts[MAXCPU]; +extern u_long *ipi_lazypmap_counts[MAXCPU]; +#endif /* IPI handlers */ inthand_t Modified: projects/altix/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- projects/altix/sys/amd64/linux32/linux32_sysent.c Tue Jul 6 23:13:21 2010 (r209749) +++ projects/altix/sys/amd64/linux32/linux32_sysent.c Tue Jul 6 23:20:43 2010 (r209750) @@ -19,321 +19,321 @@ /* The casts are bogus but will do for now. */ struct sysent linux_sysent[] = { #define nosys linux_nosys - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 0 = setup */ - { AS(sys_exit_args), (sy_call_t *)sys_exit, AUE_EXIT, NULL, 0, 0, 0 }, /* 1 = exit */ - { 0, (sy_call_t *)linux_fork, AUE_FORK, NULL, 0, 0, 0 }, /* 2 = linux_fork */ - { AS(read_args), (sy_call_t *)read, AUE_NULL, NULL, 0, 0, 0 }, /* 3 = read */ - { AS(write_args), (sy_call_t *)write, AUE_NULL, NULL, 0, 0, 0 }, /* 4 = write */ - { AS(linux_open_args), (sy_call_t *)linux_open, AUE_OPEN_RWTC, NULL, 0, 0, 0 }, /* 5 = linux_open */ - { AS(close_args), (sy_call_t *)close, AUE_CLOSE, NULL, 0, 0, 0 }, /* 6 = close */ - { AS(linux_waitpid_args), (sy_call_t *)linux_waitpid, AUE_WAIT4, NULL, 0, 0, 0 }, /* 7 = linux_waitpid */ - { AS(linux_creat_args), (sy_call_t *)linux_creat, AUE_CREAT, NULL, 0, 0, 0 }, /* 8 = linux_creat */ - { AS(linux_link_args), (sy_call_t *)linux_link, AUE_LINK, NULL, 0, 0, 0 }, /* 9 = linux_link */ - { AS(linux_unlink_args), (sy_call_t *)linux_unlink, AUE_UNLINK, NULL, 0, 0, 0 }, /* 10 = linux_unlink */ - { AS(linux_execve_args), (sy_call_t *)linux_execve, AUE_EXECVE, NULL, 0, 0, 0 }, /* 11 = linux_execve */ - { AS(linux_chdir_args), (sy_call_t *)linux_chdir, AUE_CHDIR, NULL, 0, 0, 0 }, /* 12 = linux_chdir */ - { AS(linux_time_args), (sy_call_t *)linux_time, AUE_NULL, NULL, 0, 0, 0 }, /* 13 = linux_time */ - { AS(linux_mknod_args), (sy_call_t *)linux_mknod, AUE_MKNOD, NULL, 0, 0, 0 }, /* 14 = linux_mknod */ - { AS(linux_chmod_args), (sy_call_t *)linux_chmod, AUE_CHMOD, NULL, 0, 0, 0 }, /* 15 = linux_chmod */ - { AS(linux_lchown16_args), (sy_call_t *)linux_lchown16, AUE_LCHOWN, NULL, 0, 0, 0 }, /* 16 = linux_lchown16 */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 17 = break */ - { AS(linux_stat_args), (sy_call_t *)linux_stat, AUE_STAT, NULL, 0, 0, 0 }, /* 18 = linux_stat */ - { AS(linux_lseek_args), (sy_call_t *)linux_lseek, AUE_LSEEK, NULL, 0, 0, 0 }, /* 19 = linux_lseek */ - { 0, (sy_call_t *)linux_getpid, AUE_GETPID, NULL, 0, 0, 0 }, /* 20 = linux_getpid */ - { AS(linux_mount_args), (sy_call_t *)linux_mount, AUE_MOUNT, NULL, 0, 0, 0 }, /* 21 = linux_mount */ - { AS(linux_oldumount_args), (sy_call_t *)linux_oldumount, AUE_UMOUNT, NULL, 0, 0, 0 }, /* 22 = linux_oldumount */ - { AS(linux_setuid16_args), (sy_call_t *)linux_setuid16, AUE_SETUID, NULL, 0, 0, 0 }, /* 23 = linux_setuid16 */ - { 0, (sy_call_t *)linux_getuid16, AUE_GETUID, NULL, 0, 0, 0 }, /* 24 = linux_getuid16 */ - { 0, (sy_call_t *)linux_stime, AUE_SETTIMEOFDAY, NULL, 0, 0, 0 }, /* 25 = linux_stime */ - { AS(linux_ptrace_args), (sy_call_t *)linux_ptrace, AUE_PTRACE, NULL, 0, 0, 0 }, /* 26 = linux_ptrace */ - { AS(linux_alarm_args), (sy_call_t *)linux_alarm, AUE_NULL, NULL, 0, 0, 0 }, /* 27 = linux_alarm */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 28 = fstat */ - { 0, (sy_call_t *)linux_pause, AUE_NULL, NULL, 0, 0, 0 }, /* 29 = linux_pause */ - { AS(linux_utime_args), (sy_call_t *)linux_utime, AUE_UTIME, NULL, 0, 0, 0 }, /* 30 = linux_utime */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 31 = stty */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 32 = gtty */ - { AS(linux_access_args), (sy_call_t *)linux_access, AUE_ACCESS, NULL, 0, 0, 0 }, /* 33 = linux_access */ - { AS(linux_nice_args), (sy_call_t *)linux_nice, AUE_NICE, NULL, 0, 0, 0 }, /* 34 = linux_nice */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 35 = ftime */ - { 0, (sy_call_t *)sync, AUE_SYNC, NULL, 0, 0, 0 }, /* 36 = sync */ - { AS(linux_kill_args), (sy_call_t *)linux_kill, AUE_KILL, NULL, 0, 0, 0 }, /* 37 = linux_kill */ - { AS(linux_rename_args), (sy_call_t *)linux_rename, AUE_RENAME, NULL, 0, 0, 0 }, /* 38 = linux_rename */ - { AS(linux_mkdir_args), (sy_call_t *)linux_mkdir, AUE_MKDIR, NULL, 0, 0, 0 }, /* 39 = linux_mkdir */ - { AS(linux_rmdir_args), (sy_call_t *)linux_rmdir, AUE_RMDIR, NULL, 0, 0, 0 }, /* 40 = linux_rmdir */ - { AS(dup_args), (sy_call_t *)dup, AUE_DUP, NULL, 0, 0, 0 }, /* 41 = dup */ - { AS(linux_pipe_args), (sy_call_t *)linux_pipe, AUE_PIPE, NULL, 0, 0, 0 }, /* 42 = linux_pipe */ - { AS(linux_times_args), (sy_call_t *)linux_times, AUE_NULL, NULL, 0, 0, 0 }, /* 43 = linux_times */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 44 = prof */ - { AS(linux_brk_args), (sy_call_t *)linux_brk, AUE_NULL, NULL, 0, 0, 0 }, /* 45 = linux_brk */ - { AS(linux_setgid16_args), (sy_call_t *)linux_setgid16, AUE_SETGID, NULL, 0, 0, 0 }, /* 46 = linux_setgid16 */ - { 0, (sy_call_t *)linux_getgid16, AUE_GETGID, NULL, 0, 0, 0 }, /* 47 = linux_getgid16 */ - { AS(linux_signal_args), (sy_call_t *)linux_signal, AUE_NULL, NULL, 0, 0, 0 }, /* 48 = linux_signal */ - { 0, (sy_call_t *)linux_geteuid16, AUE_GETEUID, NULL, 0, 0, 0 }, /* 49 = linux_geteuid16 */ - { 0, (sy_call_t *)linux_getegid16, AUE_GETEGID, NULL, 0, 0, 0 }, /* 50 = linux_getegid16 */ - { AS(acct_args), (sy_call_t *)acct, AUE_ACCT, NULL, 0, 0, 0 }, /* 51 = acct */ - { AS(linux_umount_args), (sy_call_t *)linux_umount, AUE_UMOUNT, NULL, 0, 0, 0 }, /* 52 = linux_umount */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 53 = lock */ - { AS(linux_ioctl_args), (sy_call_t *)linux_ioctl, AUE_IOCTL, NULL, 0, 0, 0 }, /* 54 = linux_ioctl */ - { AS(linux_fcntl_args), (sy_call_t *)linux_fcntl, AUE_FCNTL, NULL, 0, 0, 0 }, /* 55 = linux_fcntl */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 56 = mpx */ - { AS(setpgid_args), (sy_call_t *)setpgid, AUE_SETPGRP, NULL, 0, 0, 0 }, /* 57 = setpgid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 58 = ulimit */ - { 0, (sy_call_t *)linux_olduname, AUE_NULL, NULL, 0, 0, 0 }, /* 59 = linux_olduname */ - { AS(umask_args), (sy_call_t *)umask, AUE_UMASK, NULL, 0, 0, 0 }, /* 60 = umask */ - { AS(chroot_args), (sy_call_t *)chroot, AUE_CHROOT, NULL, 0, 0, 0 }, /* 61 = chroot */ - { AS(linux_ustat_args), (sy_call_t *)linux_ustat, AUE_NULL, NULL, 0, 0, 0 }, /* 62 = linux_ustat */ - { AS(dup2_args), (sy_call_t *)dup2, AUE_DUP2, NULL, 0, 0, 0 }, /* 63 = dup2 */ - { 0, (sy_call_t *)linux_getppid, AUE_GETPPID, NULL, 0, 0, 0 }, /* 64 = linux_getppid */ - { 0, (sy_call_t *)getpgrp, AUE_GETPGRP, NULL, 0, 0, 0 }, /* 65 = getpgrp */ - { 0, (sy_call_t *)setsid, AUE_SETSID, NULL, 0, 0, 0 }, /* 66 = setsid */ - { AS(linux_sigaction_args), (sy_call_t *)linux_sigaction, AUE_NULL, NULL, 0, 0, 0 }, /* 67 = linux_sigaction */ - { 0, (sy_call_t *)linux_sgetmask, AUE_NULL, NULL, 0, 0, 0 }, /* 68 = linux_sgetmask */ - { AS(linux_ssetmask_args), (sy_call_t *)linux_ssetmask, AUE_NULL, NULL, 0, 0, 0 }, /* 69 = linux_ssetmask */ - { AS(linux_setreuid16_args), (sy_call_t *)linux_setreuid16, AUE_SETREUID, NULL, 0, 0, 0 }, /* 70 = linux_setreuid16 */ - { AS(linux_setregid16_args), (sy_call_t *)linux_setregid16, AUE_SETREGID, NULL, 0, 0, 0 }, /* 71 = linux_setregid16 */ - { AS(linux_sigsuspend_args), (sy_call_t *)linux_sigsuspend, AUE_NULL, NULL, 0, 0, 0 }, /* 72 = linux_sigsuspend */ - { AS(linux_sigpending_args), (sy_call_t *)linux_sigpending, AUE_NULL, NULL, 0, 0, 0 }, /* 73 = linux_sigpending */ - { AS(linux_sethostname_args), (sy_call_t *)linux_sethostname, AUE_SYSCTL, NULL, 0, 0, 0 }, /* 74 = linux_sethostname */ - { AS(linux_setrlimit_args), (sy_call_t *)linux_setrlimit, AUE_SETRLIMIT, NULL, 0, 0, 0 }, /* 75 = linux_setrlimit */ - { AS(linux_old_getrlimit_args), (sy_call_t *)linux_old_getrlimit, AUE_GETRLIMIT, NULL, 0, 0, 0 }, /* 76 = linux_old_getrlimit */ - { AS(linux_getrusage_args), (sy_call_t *)linux_getrusage, AUE_GETRUSAGE, NULL, 0, 0, 0 }, /* 77 = linux_getrusage */ - { AS(linux_gettimeofday_args), (sy_call_t *)linux_gettimeofday, AUE_NULL, NULL, 0, 0, 0 }, /* 78 = linux_gettimeofday */ - { AS(linux_settimeofday_args), (sy_call_t *)linux_settimeofday, AUE_SETTIMEOFDAY, NULL, 0, 0, 0 }, /* 79 = linux_settimeofday */ - { AS(linux_getgroups16_args), (sy_call_t *)linux_getgroups16, AUE_GETGROUPS, NULL, 0, 0, 0 }, /* 80 = linux_getgroups16 */ - { AS(linux_setgroups16_args), (sy_call_t *)linux_setgroups16, AUE_SETGROUPS, NULL, 0, 0, 0 }, /* 81 = linux_setgroups16 */ - { AS(linux_old_select_args), (sy_call_t *)linux_old_select, AUE_SELECT, NULL, 0, 0, 0 }, /* 82 = linux_old_select */ - { AS(linux_symlink_args), (sy_call_t *)linux_symlink, AUE_SYMLINK, NULL, 0, 0, 0 }, /* 83 = linux_symlink */ - { AS(linux_lstat_args), (sy_call_t *)linux_lstat, AUE_LSTAT, NULL, 0, 0, 0 }, /* 84 = linux_lstat */ - { AS(linux_readlink_args), (sy_call_t *)linux_readlink, AUE_READLINK, NULL, 0, 0, 0 }, /* 85 = linux_readlink */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 86 = linux_uselib */ - { AS(swapon_args), (sy_call_t *)swapon, AUE_SWAPON, NULL, 0, 0, 0 }, /* 87 = swapon */ - { AS(linux_reboot_args), (sy_call_t *)linux_reboot, AUE_REBOOT, NULL, 0, 0, 0 }, /* 88 = linux_reboot */ - { AS(linux_readdir_args), (sy_call_t *)linux_readdir, AUE_GETDIRENTRIES, NULL, 0, 0, 0 }, /* 89 = linux_readdir */ - { AS(linux_mmap_args), (sy_call_t *)linux_mmap, AUE_MMAP, NULL, 0, 0, 0 }, /* 90 = linux_mmap */ - { AS(munmap_args), (sy_call_t *)munmap, AUE_MUNMAP, NULL, 0, 0, 0 }, /* 91 = munmap */ - { AS(linux_truncate_args), (sy_call_t *)linux_truncate, AUE_TRUNCATE, NULL, 0, 0, 0 }, /* 92 = linux_truncate */ - { AS(linux_ftruncate_args), (sy_call_t *)linux_ftruncate, AUE_FTRUNCATE, NULL, 0, 0, 0 }, /* 93 = linux_ftruncate */ - { AS(fchmod_args), (sy_call_t *)fchmod, AUE_FCHMOD, NULL, 0, 0, 0 }, /* 94 = fchmod */ - { AS(fchown_args), (sy_call_t *)fchown, AUE_FCHOWN, NULL, 0, 0, 0 }, /* 95 = fchown */ - { AS(linux_getpriority_args), (sy_call_t *)linux_getpriority, AUE_GETPRIORITY, NULL, 0, 0, 0 }, /* 96 = linux_getpriority */ - { AS(setpriority_args), (sy_call_t *)setpriority, AUE_SETPRIORITY, NULL, 0, 0, 0 }, /* 97 = setpriority */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 98 = profil */ - { AS(linux_statfs_args), (sy_call_t *)linux_statfs, AUE_STATFS, NULL, 0, 0, 0 }, /* 99 = linux_statfs */ - { AS(linux_fstatfs_args), (sy_call_t *)linux_fstatfs, AUE_FSTATFS, NULL, 0, 0, 0 }, /* 100 = linux_fstatfs */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 101 = ioperm */ - { AS(linux_socketcall_args), (sy_call_t *)linux_socketcall, AUE_NULL, NULL, 0, 0, 0 }, /* 102 = linux_socketcall */ - { AS(linux_syslog_args), (sy_call_t *)linux_syslog, AUE_NULL, NULL, 0, 0, 0 }, /* 103 = linux_syslog */ - { AS(linux_setitimer_args), (sy_call_t *)linux_setitimer, AUE_SETITIMER, NULL, 0, 0, 0 }, /* 104 = linux_setitimer */ - { AS(linux_getitimer_args), (sy_call_t *)linux_getitimer, AUE_GETITIMER, NULL, 0, 0, 0 }, /* 105 = linux_getitimer */ - { AS(linux_newstat_args), (sy_call_t *)linux_newstat, AUE_STAT, NULL, 0, 0, 0 }, /* 106 = linux_newstat */ - { AS(linux_newlstat_args), (sy_call_t *)linux_newlstat, AUE_LSTAT, NULL, 0, 0, 0 }, /* 107 = linux_newlstat */ - { AS(linux_newfstat_args), (sy_call_t *)linux_newfstat, AUE_FSTAT, NULL, 0, 0, 0 }, /* 108 = linux_newfstat */ - { 0, (sy_call_t *)linux_uname, AUE_NULL, NULL, 0, 0, 0 }, /* 109 = linux_uname */ - { AS(linux_iopl_args), (sy_call_t *)linux_iopl, AUE_NULL, NULL, 0, 0, 0 }, /* 110 = linux_iopl */ - { 0, (sy_call_t *)linux_vhangup, AUE_NULL, NULL, 0, 0, 0 }, /* 111 = linux_vhangup */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 112 = idle */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 113 = vm86old */ - { AS(linux_wait4_args), (sy_call_t *)linux_wait4, AUE_WAIT4, NULL, 0, 0, 0 }, /* 114 = linux_wait4 */ - { 0, (sy_call_t *)linux_swapoff, AUE_SWAPOFF, NULL, 0, 0, 0 }, /* 115 = linux_swapoff */ - { AS(linux_sysinfo_args), (sy_call_t *)linux_sysinfo, AUE_NULL, NULL, 0, 0, 0 }, /* 116 = linux_sysinfo */ - { AS(linux_ipc_args), (sy_call_t *)linux_ipc, AUE_NULL, NULL, 0, 0, 0 }, /* 117 = linux_ipc */ - { AS(fsync_args), (sy_call_t *)fsync, AUE_FSYNC, NULL, 0, 0, 0 }, /* 118 = fsync */ - { AS(linux_sigreturn_args), (sy_call_t *)linux_sigreturn, AUE_SIGRETURN, NULL, 0, 0, 0 }, /* 119 = linux_sigreturn */ - { AS(linux_clone_args), (sy_call_t *)linux_clone, AUE_RFORK, NULL, 0, 0, 0 }, /* 120 = linux_clone */ - { AS(linux_setdomainname_args), (sy_call_t *)linux_setdomainname, AUE_SYSCTL, NULL, 0, 0, 0 }, /* 121 = linux_setdomainname */ - { AS(linux_newuname_args), (sy_call_t *)linux_newuname, AUE_NULL, NULL, 0, 0, 0 }, /* 122 = linux_newuname */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 123 = modify_ldt */ - { 0, (sy_call_t *)linux_adjtimex, AUE_ADJTIME, NULL, 0, 0, 0 }, /* 124 = linux_adjtimex */ - { AS(linux_mprotect_args), (sy_call_t *)linux_mprotect, AUE_MPROTECT, NULL, 0, 0, 0 }, /* 125 = linux_mprotect */ - { AS(linux_sigprocmask_args), (sy_call_t *)linux_sigprocmask, AUE_SIGPROCMASK, NULL, 0, 0, 0 }, /* 126 = linux_sigprocmask */ - { 0, (sy_call_t *)linux_create_module, AUE_NULL, NULL, 0, 0, 0 }, /* 127 = linux_create_module */ - { 0, (sy_call_t *)linux_init_module, AUE_NULL, NULL, 0, 0, 0 }, /* 128 = linux_init_module */ - { 0, (sy_call_t *)linux_delete_module, AUE_NULL, NULL, 0, 0, 0 }, /* 129 = linux_delete_module */ - { 0, (sy_call_t *)linux_get_kernel_syms, AUE_NULL, NULL, 0, 0, 0 }, /* 130 = linux_get_kernel_syms */ - { 0, (sy_call_t *)linux_quotactl, AUE_QUOTACTL, NULL, 0, 0, 0 }, /* 131 = linux_quotactl */ - { AS(getpgid_args), (sy_call_t *)getpgid, AUE_GETPGID, NULL, 0, 0, 0 }, /* 132 = getpgid */ - { AS(fchdir_args), (sy_call_t *)fchdir, AUE_FCHDIR, NULL, 0, 0, 0 }, /* 133 = fchdir */ - { 0, (sy_call_t *)linux_bdflush, AUE_BDFLUSH, NULL, 0, 0, 0 }, /* 134 = linux_bdflush */ - { AS(linux_sysfs_args), (sy_call_t *)linux_sysfs, AUE_NULL, NULL, 0, 0, 0 }, /* 135 = linux_sysfs */ - { AS(linux_personality_args), (sy_call_t *)linux_personality, AUE_PERSONALITY, NULL, 0, 0, 0 }, /* 136 = linux_personality */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0 }, /* 137 = afs_syscall */ - { AS(linux_setfsuid16_args), (sy_call_t *)linux_setfsuid16, AUE_SETFSUID, NULL, 0, 0, 0 }, /* 138 = linux_setfsuid16 */ - { AS(linux_setfsgid16_args), (sy_call_t *)linux_setfsgid16, AUE_SETFSGID, NULL, 0, 0, 0 }, /* 139 = linux_setfsgid16 */ - { AS(linux_llseek_args), (sy_call_t *)linux_llseek, AUE_LSEEK, NULL, 0, 0, 0 }, /* 140 = linux_llseek */ - { AS(linux_getdents_args), (sy_call_t *)linux_getdents, AUE_GETDIRENTRIES, NULL, 0, 0, 0 }, /* 141 = linux_getdents */ - { AS(linux_select_args), (sy_call_t *)linux_select, AUE_SELECT, NULL, 0, 0, 0 }, /* 142 = linux_select */ - { AS(flock_args), (sy_call_t *)flock, AUE_FLOCK, NULL, 0, 0, 0 }, /* 143 = flock */ - { AS(linux_msync_args), (sy_call_t *)linux_msync, AUE_MSYNC, NULL, 0, 0, 0 }, /* 144 = linux_msync */ - { AS(linux_readv_args), (sy_call_t *)linux_readv, AUE_READV, NULL, 0, 0, 0 }, /* 145 = linux_readv */ - { AS(linux_writev_args), (sy_call_t *)linux_writev, AUE_WRITEV, NULL, 0, 0, 0 }, /* 146 = linux_writev */ - { AS(linux_getsid_args), (sy_call_t *)linux_getsid, AUE_GETSID, NULL, 0, 0, 0 }, /* 147 = linux_getsid */ - { AS(linux_fdatasync_args), (sy_call_t *)linux_fdatasync, AUE_NULL, NULL, 0, 0, 0 }, /* 148 = linux_fdatasync */ - { AS(linux_sysctl_args), (sy_call_t *)linux_sysctl, AUE_SYSCTL, NULL, 0, 0, 0 }, /* 149 = linux_sysctl */ - { AS(mlock_args), (sy_call_t *)mlock, AUE_MLOCK, NULL, 0, 0, 0 }, /* 150 = mlock */ - { AS(munlock_args), (sy_call_t *)munlock, AUE_MUNLOCK, NULL, 0, 0, 0 }, /* 151 = munlock */ - { AS(mlockall_args), (sy_call_t *)mlockall, AUE_MLOCKALL, NULL, 0, 0, 0 }, /* 152 = mlockall */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Jul 7 02:16:47 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 69195106564A; Wed, 7 Jul 2010 02:16:47 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 561038FC08; Wed, 7 Jul 2010 02:16:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o672GlF1051970; Wed, 7 Jul 2010 02:16:47 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o672GlV6051965; Wed, 7 Jul 2010 02:16:47 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201007070216.o672GlV6051965@svn.freebsd.org> From: Marcel Moolenaar Date: Wed, 7 Jul 2010 02:16:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209754 - in projects/altix/sys: ia64/ia64 ia64/include kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jul 2010 02:16:47 -0000 Author: marcel Date: Wed Jul 7 02:16:47 2010 New Revision: 209754 URL: http://svn.freebsd.org/changeset/base/209754 Log: Switch ia64 to the unified busdma implementation. Modified: projects/altix/sys/ia64/ia64/busdma_machdep.c projects/altix/sys/ia64/include/bus_dma.h projects/altix/sys/ia64/include/md_var.h projects/altix/sys/kern/subr_busdma.c Modified: projects/altix/sys/ia64/ia64/busdma_machdep.c ============================================================================== --- projects/altix/sys/ia64/ia64/busdma_machdep.c Wed Jul 7 00:03:06 2010 (r209753) +++ projects/altix/sys/ia64/ia64/busdma_machdep.c Wed Jul 7 02:16:47 2010 (r209754) @@ -26,980 +26,3 @@ #include __FBSDID("$FreeBSD$"); - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#define MAX_BPAGES 1024 - -struct bus_dma_tag { - bus_dma_tag_t parent; - bus_size_t alignment; - bus_size_t boundary; - bus_addr_t lowaddr; - bus_addr_t highaddr; - bus_dma_filter_t *filter; - void *filterarg; - bus_size_t maxsize; - u_int nsegments; - bus_size_t maxsegsz; - int flags; - int ref_count; - int map_count; - bus_dma_lock_t *lockfunc; - void *lockfuncarg; - bus_dma_segment_t *segments; -}; - -struct bounce_page { - vm_offset_t vaddr; /* kva of bounce buffer */ - bus_addr_t busaddr; /* Physical address */ - vm_offset_t datavaddr; /* kva of client data */ - bus_size_t datacount; /* client data count */ - STAILQ_ENTRY(bounce_page) links; -}; - -u_int busdma_swi_pending; - -static struct mtx bounce_lock; -static STAILQ_HEAD(bp_list, bounce_page) bounce_page_list; -static int free_bpages; -static int reserved_bpages; -static int active_bpages; -static int total_bpages; -static int total_bounced; -static int total_deferred; - -SYSCTL_NODE(_hw, OID_AUTO, busdma, CTLFLAG_RD, 0, "Busdma parameters"); -SYSCTL_INT(_hw_busdma, OID_AUTO, free_bpages, CTLFLAG_RD, &free_bpages, 0, - "Free bounce pages"); -SYSCTL_INT(_hw_busdma, OID_AUTO, reserved_bpages, CTLFLAG_RD, &reserved_bpages, - 0, "Reserved bounce pages"); -SYSCTL_INT(_hw_busdma, OID_AUTO, active_bpages, CTLFLAG_RD, &active_bpages, 0, - "Active bounce pages"); -SYSCTL_INT(_hw_busdma, OID_AUTO, total_bpages, CTLFLAG_RD, &total_bpages, 0, - "Total bounce pages"); -SYSCTL_INT(_hw_busdma, OID_AUTO, total_bounced, CTLFLAG_RD, &total_bounced, 0, - "Total bounce requests"); -SYSCTL_INT(_hw_busdma, OID_AUTO, total_deferred, CTLFLAG_RD, &total_deferred, 0, - "Total bounce requests that were deferred"); - -struct bus_dmamap { - struct bp_list bpages; - int pagesneeded; - int pagesreserved; - bus_dma_tag_t dmat; - void *buf; /* unmapped buffer pointer */ - bus_size_t buflen; /* unmapped buffer length */ - bus_dmamap_callback_t *callback; - void *callback_arg; - STAILQ_ENTRY(bus_dmamap) links; -}; - -static STAILQ_HEAD(, bus_dmamap) bounce_map_waitinglist; -static STAILQ_HEAD(, bus_dmamap) bounce_map_callbacklist; -static struct bus_dmamap nobounce_dmamap; - -static void init_bounce_pages(void *dummy); -static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages); -static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, - int commit); -static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, - vm_offset_t vaddr, bus_size_t size); -static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage); -static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr, - bus_size_t len); - -/* - * Return true if a match is made. - * - * To find a match walk the chain of bus_dma_tag_t's looking for 'paddr'. - * - * If paddr is within the bounds of the dma tag then call the filter callback - * to check for a match, if there is no filter callback then assume a match. - */ -static __inline int -run_filter(bus_dma_tag_t dmat, bus_addr_t paddr, bus_size_t len) -{ - bus_size_t bndy; - int retval; - - retval = 0; - bndy = dmat->boundary; - - do { - if (((paddr > dmat->lowaddr && paddr <= dmat->highaddr) - || ((paddr & (dmat->alignment - 1)) != 0) - || ((paddr & bndy) != ((paddr + len) & bndy))) - && (dmat->filter == NULL - || (*dmat->filter)(dmat->filterarg, paddr) != 0)) - retval = 1; - - dmat = dmat->parent; - } while (retval == 0 && dmat != NULL); - return (retval); -} - -/* - * Convenience function for manipulating driver locks from busdma (during - * busdma_swi, for example). Drivers that don't provide their own locks - * should specify &Giant to dmat->lockfuncarg. Drivers that use their own - * non-mutex locking scheme don't have to use this at all. - */ -void -busdma_lock_mutex(void *arg, bus_dma_lock_op_t op) -{ - struct mtx *dmtx; - - dmtx = (struct mtx *)arg; - switch (op) { - case BUS_DMA_LOCK: - mtx_lock(dmtx); - break; - case BUS_DMA_UNLOCK: - mtx_unlock(dmtx); - break; - default: - panic("Unknown operation 0x%x for busdma_lock_mutex!", op); - } -} - -/* - * dflt_lock should never get called. It gets put into the dma tag when - * lockfunc == NULL, which is only valid if the maps that are associated - * with the tag are meant to never be defered. - * XXX Should have a way to identify which driver is responsible here. - */ -static void -dflt_lock(void *arg, bus_dma_lock_op_t op) -{ - panic("driver error: busdma dflt_lock called"); -} - -#define BUS_DMA_MIN_ALLOC_COMP BUS_DMA_BUS4 -/* - * Allocate a device specific dma_tag. - */ -int -bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment, - bus_size_t boundary, bus_addr_t lowaddr, - bus_addr_t highaddr, bus_dma_filter_t *filter, - void *filterarg, bus_size_t maxsize, int nsegments, - bus_size_t maxsegsz, int flags, bus_dma_lock_t *lockfunc, - void *lockfuncarg, bus_dma_tag_t *dmat) -{ - bus_dma_tag_t newtag; - int error = 0; - - /* Basic sanity checking */ - if (boundary != 0 && boundary < maxsegsz) - maxsegsz = boundary; - - /* Return a NULL tag on failure */ - *dmat = NULL; - - newtag = (bus_dma_tag_t)malloc(sizeof(*newtag), M_DEVBUF, M_NOWAIT); - if (newtag == NULL) - return (ENOMEM); - - newtag->parent = parent; - newtag->alignment = alignment; - newtag->boundary = boundary; - newtag->lowaddr = trunc_page(lowaddr) + (PAGE_SIZE - 1); - newtag->highaddr = trunc_page(highaddr) + (PAGE_SIZE - 1); - newtag->filter = filter; - newtag->filterarg = filterarg; - newtag->maxsize = maxsize; - newtag->nsegments = nsegments; - newtag->maxsegsz = maxsegsz; - newtag->flags = flags; - newtag->ref_count = 1; /* Count ourself */ - newtag->map_count = 0; - if (lockfunc != NULL) { - newtag->lockfunc = lockfunc; - newtag->lockfuncarg = lockfuncarg; - } else { - newtag->lockfunc = dflt_lock; - newtag->lockfuncarg = NULL; - } - newtag->segments = NULL; - - /* Take into account any restrictions imposed by our parent tag */ - if (parent != NULL) { - newtag->lowaddr = MIN(parent->lowaddr, newtag->lowaddr); - newtag->highaddr = MAX(parent->highaddr, newtag->highaddr); - if (newtag->boundary == 0) - newtag->boundary = parent->boundary; - else if (parent->boundary != 0) - newtag->boundary = MIN(parent->boundary, - newtag->boundary); - if (newtag->filter == NULL) { - /* - * Short circuit looking at our parent directly - * since we have encapsulated all of its information - */ - newtag->filter = parent->filter; - newtag->filterarg = parent->filterarg; - newtag->parent = parent->parent; - } - if (newtag->parent != NULL) - atomic_add_int(&parent->ref_count, 1); - } - - if (newtag->lowaddr < ptoa(Maxmem) && (flags & BUS_DMA_ALLOCNOW) != 0) { - /* Must bounce */ - - if (ptoa(total_bpages) < maxsize) { - int pages; - - pages = atop(maxsize) - total_bpages; - - /* Add pages to our bounce pool */ - if (alloc_bounce_pages(newtag, pages) < pages) - error = ENOMEM; - } - /* Performed initial allocation */ - newtag->flags |= BUS_DMA_MIN_ALLOC_COMP; - } - - if (error != 0) { - free(newtag, M_DEVBUF); - } else { - *dmat = newtag; - } - return (error); -} - -int -bus_dma_tag_destroy(bus_dma_tag_t dmat) -{ - if (dmat != NULL) { - - if (dmat->map_count != 0) - return (EBUSY); - - while (dmat != NULL) { - bus_dma_tag_t parent; - - parent = dmat->parent; - atomic_subtract_int(&dmat->ref_count, 1); - if (dmat->ref_count == 0) { - if (dmat->segments != NULL) - free(dmat->segments, M_DEVBUF); - free(dmat, M_DEVBUF); - /* - * Last reference count, so - * release our reference - * count on our parent. - */ - dmat = parent; - } else - dmat = NULL; - } - } - return (0); -} - -/* - * Allocate a handle for mapping from kva/uva/physical - * address space into bus device space. - */ -int -bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp) -{ - int error; - - error = 0; - - if (dmat->segments == NULL) { - dmat->segments = (bus_dma_segment_t *)malloc( - sizeof(bus_dma_segment_t) * dmat->nsegments, M_DEVBUF, - M_NOWAIT); - if (dmat->segments == NULL) - return (ENOMEM); - } - - /* - * Bouncing might be required if the driver asks for an active - * exclusion region, a data alignment that is stricter than 1, and/or - * an active address boundary. - */ - if (dmat->lowaddr < ptoa(Maxmem)) { - /* Must bounce */ - int maxpages; - - *mapp = (bus_dmamap_t)malloc(sizeof(**mapp), M_DEVBUF, - M_NOWAIT | M_ZERO); - if (*mapp == NULL) - return (ENOMEM); - - /* Initialize the new map */ - STAILQ_INIT(&((*mapp)->bpages)); - - /* - * Attempt to add pages to our pool on a per-instance - * basis up to a sane limit. - */ - maxpages = MIN(MAX_BPAGES, Maxmem - atop(dmat->lowaddr)); - if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 - || (dmat->map_count > 0 && total_bpages < maxpages)) { - int pages; - - pages = MAX(atop(dmat->maxsize), 1); - pages = MIN(maxpages - total_bpages, pages); - if (alloc_bounce_pages(dmat, pages) < pages) - error = ENOMEM; - - if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0) { - if (error == 0) - dmat->flags |= BUS_DMA_MIN_ALLOC_COMP; - } else { - error = 0; - } - } - } else { - *mapp = NULL; - } - if (error == 0) - dmat->map_count++; - return (error); -} - -/* - * Destroy a handle for mapping from kva/uva/physical - * address space into bus device space. - */ -int -bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmamap_t map) -{ - - if (map != NULL && map != &nobounce_dmamap) { - if (STAILQ_FIRST(&map->bpages) != NULL) - return (EBUSY); - free(map, M_DEVBUF); - } - dmat->map_count--; - return (0); -} - - -/* - * Allocate a piece of memory that can be efficiently mapped into - * bus device space based on the constraints lited in the dma tag. - * A dmamap to for use with dmamap_load is also allocated. - */ -int -bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags, - bus_dmamap_t *mapp) -{ - int mflags; - - if (flags & BUS_DMA_NOWAIT) - mflags = M_NOWAIT; - else - mflags = M_WAITOK; - - /* If we succeed, no mapping/bouncing will be required */ - *mapp = NULL; - - if (dmat->segments == NULL) { - dmat->segments = (bus_dma_segment_t *)malloc( - sizeof(bus_dma_segment_t) * dmat->nsegments, M_DEVBUF, - mflags); - if (dmat->segments == NULL) - return (ENOMEM); - } - if (flags & BUS_DMA_ZERO) - mflags |= M_ZERO; - - /* - * XXX: - * (dmat->alignment < dmat->maxsize) is just a quick hack; the exact - * alignment guarantees of malloc need to be nailed down, and the - * code below should be rewritten to take that into account. - * - * In the meantime, we'll warn the user if malloc gets it wrong. - */ - if ((dmat->maxsize <= PAGE_SIZE) && - (dmat->alignment < dmat->maxsize) && - dmat->lowaddr >= ptoa(Maxmem)) { - *vaddr = malloc(dmat->maxsize, M_DEVBUF, mflags); - } else { - /* - * XXX Use Contigmalloc until it is merged into this facility - * and handles multi-seg allocations. Nobody is doing - * multi-seg allocations yet though. - * XXX Certain AGP hardware does. - */ - *vaddr = contigmalloc(dmat->maxsize, M_DEVBUF, mflags, - 0ul, dmat->lowaddr, dmat->alignment? dmat->alignment : 1ul, - dmat->boundary); - } - if (*vaddr == NULL) - return (ENOMEM); - else if ((uintptr_t)*vaddr & (dmat->alignment - 1)) - printf("bus_dmamem_alloc failed to align memory properly.\n"); - return (0); -} - -/* - * Free a piece of memory and it's allociated dmamap, that was allocated - * via bus_dmamem_alloc. Make the same choice for free/contigfree. - */ -void -bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr, bus_dmamap_t map) -{ - /* - * dmamem does not need to be bounced, so the map should be - * NULL - */ - if (map != NULL) - panic("bus_dmamem_free: Invalid map freed\n"); - if ((dmat->maxsize <= PAGE_SIZE) && - (dmat->alignment < dmat->maxsize) && - dmat->lowaddr >= ptoa(Maxmem)) - free(vaddr, M_DEVBUF); - else { - contigfree(vaddr, dmat->maxsize, M_DEVBUF); - } -} - -/* - * Utility function to load a linear buffer. lastaddrp holds state - * between invocations (for multiple-buffer loads). segp contains - * the starting segment on entrace, and the ending segment on exit. - * first indicates if this is the first invocation of this function. - */ -static int -_bus_dmamap_load_buffer(bus_dma_tag_t dmat, - bus_dmamap_t map, - void *buf, bus_size_t buflen, - struct thread *td, - int flags, - bus_addr_t *lastaddrp, - bus_dma_segment_t *segs, - int *segp, - int first) -{ - bus_size_t sgsize; - bus_addr_t curaddr, lastaddr, baddr, bmask; - vm_offset_t vaddr; - bus_addr_t paddr; - int seg; - pmap_t pmap; - - if (map == NULL) - map = &nobounce_dmamap; - - if (td != NULL) - pmap = vmspace_pmap(td->td_proc->p_vmspace); - else - pmap = NULL; - - if ((dmat->lowaddr < ptoa(Maxmem) || dmat->boundary > 0 || - dmat->alignment > 1) && map != &nobounce_dmamap && - map->pagesneeded == 0) { - vm_offset_t vendaddr; - - /* - * Count the number of bounce pages - * needed in order to complete this transfer - */ - vaddr = trunc_page((vm_offset_t)buf); - vendaddr = (vm_offset_t)buf + buflen; - - while (vaddr < vendaddr) { - if (pmap != NULL) - paddr = pmap_extract(pmap, vaddr); - else - paddr = pmap_kextract(vaddr); - if (run_filter(dmat, paddr, 0) != 0) - map->pagesneeded++; - vaddr += PAGE_SIZE; - } - } - - vaddr = (vm_offset_t)buf; - - /* Reserve Necessary Bounce Pages */ - if (map->pagesneeded != 0) { - mtx_lock(&bounce_lock); - if (flags & BUS_DMA_NOWAIT) { - if (reserve_bounce_pages(dmat, map, 0) != 0) { - mtx_unlock(&bounce_lock); - return (ENOMEM); - } - } else { - if (reserve_bounce_pages(dmat, map, 1) != 0) { - /* Queue us for resources */ - map->dmat = dmat; - map->buf = buf; - map->buflen = buflen; - STAILQ_INSERT_TAIL(&bounce_map_waitinglist, - map, links); - mtx_unlock(&bounce_lock); - return (EINPROGRESS); - } - } - mtx_unlock(&bounce_lock); - } - - lastaddr = *lastaddrp; - bmask = ~(dmat->boundary - 1); - - for (seg = *segp; buflen > 0 ; ) { - /* - * Get the physical address for this segment. - */ - if (pmap) - curaddr = pmap_extract(pmap, vaddr); - else - curaddr = pmap_kextract(vaddr); - - /* - * Compute the segment size, and adjust counts. - */ - sgsize = PAGE_SIZE - ((u_long)curaddr & PAGE_MASK); - if (sgsize > dmat->maxsegsz) - sgsize = dmat->maxsegsz; - if (buflen < sgsize) - sgsize = buflen; - - /* - * Make sure we don't cross any boundaries. - */ - if (dmat->boundary > 0) { - baddr = (curaddr + dmat->boundary) & bmask; - if (sgsize > (baddr - curaddr)) - sgsize = (baddr - curaddr); - } - - if (map->pagesneeded != 0 && run_filter(dmat, curaddr, sgsize)) - curaddr = add_bounce_page(dmat, map, vaddr, sgsize); - - /* - * Insert chunk into a segment, coalescing with - * previous segment if possible. - */ - if (first) { - segs[seg].ds_addr = curaddr; - segs[seg].ds_len = sgsize; - first = 0; - } else { - if (curaddr == lastaddr && - (segs[seg].ds_len + sgsize) <= dmat->maxsegsz && - (dmat->boundary == 0 || - (segs[seg].ds_addr & bmask) == (curaddr & bmask))) - segs[seg].ds_len += sgsize; - else { - if (++seg >= dmat->nsegments) - break; - segs[seg].ds_addr = curaddr; - segs[seg].ds_len = sgsize; - } - } - - lastaddr = curaddr + sgsize; - vaddr += sgsize; - buflen -= sgsize; - } - - *segp = seg; - *lastaddrp = lastaddr; - - /* - * Did we fit? - */ - return (buflen != 0 ? EFBIG : 0); /* XXX better return value here? */ -} - -/* - * Map the buffer buf into bus space using the dmamap map. - */ -int -bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, - bus_size_t buflen, bus_dmamap_callback_t *callback, - void *callback_arg, int flags) -{ - bus_addr_t lastaddr = 0; - int error, nsegs = 0; - - if (map != NULL) { - flags |= BUS_DMA_WAITOK; - map->callback = callback; - map->callback_arg = callback_arg; - } - - error = _bus_dmamap_load_buffer(dmat, map, buf, buflen, NULL, flags, - &lastaddr, dmat->segments, &nsegs, 1); - - if (error == EINPROGRESS) - return (error); - - if (error) - (*callback)(callback_arg, dmat->segments, 0, error); - else - (*callback)(callback_arg, dmat->segments, nsegs + 1, 0); - - return (0); -} - -/* - * Like _bus_dmamap_load(), but for mbufs. - */ -int -bus_dmamap_load_mbuf(bus_dma_tag_t dmat, bus_dmamap_t map, - struct mbuf *m0, - bus_dmamap_callback2_t *callback, void *callback_arg, - int flags) -{ - int nsegs, error; - - M_ASSERTPKTHDR(m0); - - flags |= BUS_DMA_NOWAIT; - nsegs = 0; - error = 0; - if (m0->m_pkthdr.len <= dmat->maxsize) { - int first = 1; - bus_addr_t lastaddr = 0; - struct mbuf *m; - - for (m = m0; m != NULL && error == 0; m = m->m_next) { - if (m->m_len > 0) { - error = _bus_dmamap_load_buffer(dmat, map, - m->m_data, m->m_len, - NULL, flags, &lastaddr, - dmat->segments, &nsegs, first); - first = 0; - } - } - } else { - error = EINVAL; - } - - if (error) { - /* force "no valid mappings" in callback */ - (*callback)(callback_arg, dmat->segments, 0, 0, error); - } else { - (*callback)(callback_arg, dmat->segments, nsegs + 1, - m0->m_pkthdr.len, error); - } - return (error); -} - -int -bus_dmamap_load_mbuf_sg(bus_dma_tag_t dmat, bus_dmamap_t map, - struct mbuf *m0, bus_dma_segment_t *segs, - int *nsegs, int flags) -{ - int error; - - M_ASSERTPKTHDR(m0); - - flags |= BUS_DMA_NOWAIT; - *nsegs = 0; - error = 0; - if (m0->m_pkthdr.len <= dmat->maxsize) { - int first = 1; - bus_addr_t lastaddr = 0; - struct mbuf *m; - - for (m = m0; m != NULL && error == 0; m = m->m_next) { - if (m->m_len > 0) { - error = _bus_dmamap_load_buffer(dmat, map, - m->m_data, m->m_len, - NULL, flags, &lastaddr, - segs, nsegs, first); - first = 0; - } - } - ++*nsegs; - } else { - error = EINVAL; - } - - return (error); -} - -/* - * Like _bus_dmamap_load(), but for uios. - */ -int -bus_dmamap_load_uio(bus_dma_tag_t dmat, bus_dmamap_t map, - struct uio *uio, - bus_dmamap_callback2_t *callback, void *callback_arg, - int flags) -{ - bus_addr_t lastaddr; - int nsegs, error, first, i; - bus_size_t resid; - struct iovec *iov; - struct thread *td = NULL; - - flags |= BUS_DMA_NOWAIT; - resid = uio->uio_resid; - iov = uio->uio_iov; - - if (uio->uio_segflg == UIO_USERSPACE) { - td = uio->uio_td; - KASSERT(td != NULL, - ("bus_dmamap_load_uio: USERSPACE but no proc")); - } - - nsegs = 0; - error = 0; - first = 1; - for (i = 0; i < uio->uio_iovcnt && resid != 0 && !error; i++) { - /* - * Now at the first iovec to load. Load each iovec - * until we have exhausted the residual count. - */ - bus_size_t minlen = - resid < iov[i].iov_len ? resid : iov[i].iov_len; - caddr_t addr = (caddr_t) iov[i].iov_base; - - if (minlen > 0) { - error = _bus_dmamap_load_buffer(dmat, map, addr, - minlen, td, flags, &lastaddr, dmat->segments, - &nsegs, first); - first = 0; - - resid -= minlen; - } - } - - if (error) { - /* force "no valid mappings" in callback */ - (*callback)(callback_arg, dmat->segments, 0, 0, error); - } else { - (*callback)(callback_arg, dmat->segments, nsegs + 1, - uio->uio_resid, error); - } - return (error); -} - -/* - * Release the mapping held by map. - */ -void -_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map) -{ - struct bounce_page *bpage; - - while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) { - STAILQ_REMOVE_HEAD(&map->bpages, links); - free_bounce_page(dmat, bpage); - } -} - -void -_bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op) -{ - struct bounce_page *bpage; - - if ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) { - /* - * Handle data bouncing. We might also - * want to add support for invalidating - * the caches on broken hardware - */ - - if (op & BUS_DMASYNC_PREWRITE) { - while (bpage != NULL) { - bcopy((void *)bpage->datavaddr, - (void *)bpage->vaddr, - bpage->datacount); - bpage = STAILQ_NEXT(bpage, links); - } - total_bounced++; - } - - if (op & BUS_DMASYNC_POSTREAD) { - while (bpage != NULL) { - bcopy((void *)bpage->vaddr, - (void *)bpage->datavaddr, - bpage->datacount); - bpage = STAILQ_NEXT(bpage, links); - } - total_bounced++; - } - } -} - -static void -init_bounce_pages(void *dummy __unused) -{ - - free_bpages = 0; - reserved_bpages = 0; - active_bpages = 0; - total_bpages = 0; - STAILQ_INIT(&bounce_page_list); - STAILQ_INIT(&bounce_map_waitinglist); - STAILQ_INIT(&bounce_map_callbacklist); - mtx_init(&bounce_lock, "bounce pages lock", NULL, MTX_DEF); -} -SYSINIT(bpages, SI_SUB_LOCK, SI_ORDER_ANY, init_bounce_pages, NULL); - -static int -alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages) -{ - int count; - - count = 0; - while (numpages > 0) { - struct bounce_page *bpage; - - bpage = (struct bounce_page *)malloc(sizeof(*bpage), M_DEVBUF, - M_NOWAIT | M_ZERO); - - if (bpage == NULL) - break; - bpage->vaddr = (vm_offset_t)contigmalloc(PAGE_SIZE, M_DEVBUF, - M_NOWAIT, 0ul, - dmat->lowaddr, - PAGE_SIZE, - dmat->boundary); - if (bpage->vaddr == 0) { - free(bpage, M_DEVBUF); - break; - } - bpage->busaddr = pmap_kextract(bpage->vaddr); - mtx_lock(&bounce_lock); - STAILQ_INSERT_TAIL(&bounce_page_list, bpage, links); - total_bpages++; - free_bpages++; - mtx_unlock(&bounce_lock); - count++; - numpages--; - } - return (count); -} - -static int -reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit) -{ - int pages; - - mtx_assert(&bounce_lock, MA_OWNED); - pages = MIN(free_bpages, map->pagesneeded - map->pagesreserved); - if (commit == 0 && map->pagesneeded > (map->pagesreserved + pages)) - return (map->pagesneeded - (map->pagesreserved + pages)); - free_bpages -= pages; - reserved_bpages += pages; - map->pagesreserved += pages; - pages = map->pagesneeded - map->pagesreserved; - - return (pages); -} - -static bus_addr_t -add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, - bus_size_t size) -{ - struct bounce_page *bpage; - - KASSERT(map != NULL && map != &nobounce_dmamap, - ("add_bounce_page: bad map %p", map)); - - if (map->pagesneeded == 0) - panic("add_bounce_page: map doesn't need any pages"); - map->pagesneeded--; - - if (map->pagesreserved == 0) - panic("add_bounce_page: map doesn't need any pages"); - map->pagesreserved--; - - mtx_lock(&bounce_lock); - bpage = STAILQ_FIRST(&bounce_page_list); - if (bpage == NULL) - panic("add_bounce_page: free page list is empty"); - - STAILQ_REMOVE_HEAD(&bounce_page_list, links); - reserved_bpages--; - active_bpages++; - mtx_unlock(&bounce_lock); - - if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) { - /* Page offset needs to be preserved. */ - bpage->vaddr |= vaddr & PAGE_MASK; - bpage->busaddr |= vaddr & PAGE_MASK; - } - bpage->datavaddr = vaddr; - bpage->datacount = size; - STAILQ_INSERT_TAIL(&(map->bpages), bpage, links); - return (bpage->busaddr); -} - -static void -free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage) -{ - struct bus_dmamap *map; - - bpage->datavaddr = 0; - bpage->datacount = 0; - if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) { - /* - * Reset the bounce page to start at offset 0. Other uses - * of this bounce page may need to store a full page of - * data and/or assume it starts on a page boundary. - */ - bpage->vaddr &= ~PAGE_MASK; - bpage->busaddr &= ~PAGE_MASK; - } - - mtx_lock(&bounce_lock); - STAILQ_INSERT_HEAD(&bounce_page_list, bpage, links); - free_bpages++; - active_bpages--; - if ((map = STAILQ_FIRST(&bounce_map_waitinglist)) != NULL) { - if (reserve_bounce_pages(map->dmat, map, 1) == 0) { - STAILQ_REMOVE_HEAD(&bounce_map_waitinglist, links); - STAILQ_INSERT_TAIL(&bounce_map_callbacklist, - map, links); - busdma_swi_pending = 1; - total_deferred++; - swi_sched(vm_ih, 0); - } - } - mtx_unlock(&bounce_lock); -} - -void -busdma_swi(void) -{ - bus_dma_tag_t dmat; - struct bus_dmamap *map; - - mtx_lock(&bounce_lock); - while ((map = STAILQ_FIRST(&bounce_map_callbacklist)) != NULL) { - STAILQ_REMOVE_HEAD(&bounce_map_callbacklist, links); - mtx_unlock(&bounce_lock); - dmat = map->dmat; - (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_LOCK); - bus_dmamap_load(map->dmat, map, map->buf, map->buflen, - map->callback, map->callback_arg, /*flags*/0); - (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_UNLOCK); - mtx_lock(&bounce_lock); - } - mtx_unlock(&bounce_lock); -} Modified: projects/altix/sys/ia64/include/bus_dma.h ============================================================================== --- projects/altix/sys/ia64/include/bus_dma.h Wed Jul 7 00:03:06 2010 (r209753) +++ projects/altix/sys/ia64/include/bus_dma.h Wed Jul 7 02:16:47 2010 (r209754) @@ -30,4 +30,8 @@ #include +#define BUSDMA_MAX_BPAGES 1024 + +#define bus_dma_tag_parent(x) x + #endif /* _IA64_BUS_DMA_H_ */ Modified: projects/altix/sys/ia64/include/md_var.h ============================================================================== --- projects/altix/sys/ia64/include/md_var.h Wed Jul 7 00:03:06 2010 (r209753) +++ projects/altix/sys/ia64/include/md_var.h Wed Jul 7 02:16:47 2010 (r209754) @@ -76,7 +76,7 @@ struct ia64_init_return { extern uint64_t ia64_lapic_addr; extern long Maxmem; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Wed Jul 7 04:06:38 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D31961065673; Wed, 7 Jul 2010 04:06:38 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C1F578FC12; Wed, 7 Jul 2010 04:06:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6746c8i076457; Wed, 7 Jul 2010 04:06:38 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6746cKb076454; Wed, 7 Jul 2010 04:06:38 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201007070406.o6746cKb076454@svn.freebsd.org> From: Marcel Moolenaar Date: Wed, 7 Jul 2010 04:06:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209755 - in projects/altix/sys: dev/uart ia64/include X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jul 2010 04:06:38 -0000 Author: marcel Date: Wed Jul 7 04:06:38 2010 New Revision: 209755 URL: http://svn.freebsd.org/changeset/base/209755 Log: Use an unbuffered transmit function for low-level console output. Modified: projects/altix/sys/dev/uart/uart_dev_sgisn.c projects/altix/sys/ia64/include/sal.h Modified: projects/altix/sys/dev/uart/uart_dev_sgisn.c ============================================================================== --- projects/altix/sys/dev/uart/uart_dev_sgisn.c Wed Jul 7 02:16:47 2010 (r209754) +++ projects/altix/sys/dev/uart/uart_dev_sgisn.c Wed Jul 7 04:06:38 2010 (r209755) @@ -84,8 +84,11 @@ static void sgisn_putc(struct uart_bas *bas, int c) { struct ia64_sal_result result; + char buf[1]; - result = ia64_sal_entry(SAL_SGISN_PUTC, c, 0, 0, 0, 0, 0, 0); + buf[0] = c; + result = ia64_sal_entry(SAL_SGISN_TXBUF, (uintptr_t)buf, 1UL, 0, 0, 0, + 0, 0); } static int Modified: projects/altix/sys/ia64/include/sal.h ============================================================================== --- projects/altix/sys/ia64/include/sal.h Wed Jul 7 02:16:47 2010 (r209754) +++ projects/altix/sys/ia64/include/sal.h Wed Jul 7 04:06:38 2010 (r209755) @@ -119,6 +119,7 @@ struct sal_ap_wakeup_descriptor { #define SAL_SGISN_PUTC 0x02000021 #define SAL_SGISN_GETC 0x02000022 #define SAL_SGISN_POLL 0x02000026 +#define SAL_SGISN_TXBUF 0x02000028 #define SAL_SGISN_IOHUB_INFO 0x02000055 #define SAL_SGISN_IOBUS_INFO 0x02000056 From owner-svn-src-projects@FreeBSD.ORG Wed Jul 7 20:21:25 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 28EBB106564A; Wed, 7 Jul 2010 20:21:25 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 17C638FC1A; Wed, 7 Jul 2010 20:21:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o67KLOJL094691; Wed, 7 Jul 2010 20:21:24 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o67KLOOM094684; Wed, 7 Jul 2010 20:21:24 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201007072021.o67KLOOM094684@svn.freebsd.org> From: Marcel Moolenaar Date: Wed, 7 Jul 2010 20:21:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209780 - in projects/altix/sys: amd64/conf amd64/include boot/ia64/efi kern mips/atheros X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jul 2010 20:21:25 -0000 Author: marcel Date: Wed Jul 7 20:21:24 2010 New Revision: 209780 URL: http://svn.freebsd.org/changeset/base/209780 Log: Merge svn+ssh://svn.freebsd.org/base/head@209779 Modified: projects/altix/sys/amd64/conf/GENERIC projects/altix/sys/amd64/include/segments.h projects/altix/sys/boot/ia64/efi/version projects/altix/sys/kern/kern_clock.c projects/altix/sys/mips/atheros/ar71xxreg.h Directory Properties: projects/altix/lib/libstand/ (props changed) projects/altix/sys/ (props changed) projects/altix/sys/amd64/include/xen/ (props changed) projects/altix/sys/cddl/contrib/opensolaris/ (props changed) projects/altix/sys/contrib/dev/acpica/ (props changed) projects/altix/sys/contrib/x86emu/ (props changed) projects/altix/sys/dev/xen/xenpci/ (props changed) Modified: projects/altix/sys/amd64/conf/GENERIC ============================================================================== --- projects/altix/sys/amd64/conf/GENERIC Wed Jul 7 20:07:33 2010 (r209779) +++ projects/altix/sys/amd64/conf/GENERIC Wed Jul 7 20:21:24 2010 (r209780) @@ -294,6 +294,7 @@ device umass # Disks/Mass storage - Re device ums # Mouse device urio # Diamond Rio 500 MP3 player # USB Serial devices +device u3g # USB-based 3G modems (Option, Huawei, Sierra) device uark # Technologies ARK3116 based serial adapters device ubsa # Belkin F5U103 and compatible serial adapters device uftdi # For FTDI usb serial adapters Modified: projects/altix/sys/amd64/include/segments.h ============================================================================== --- projects/altix/sys/amd64/include/segments.h Wed Jul 7 20:07:33 2010 (r209779) +++ projects/altix/sys/amd64/include/segments.h Wed Jul 7 20:21:24 2010 (r209780) @@ -74,12 +74,12 @@ struct user_segment_descriptor { u_int64_t sd_hibase:8; /* segment base address (msb) */ } __packed; -#define USD_GETBASE(_sd) (((_sd)->sd_lobase) | (_sd)->sd_hibase << 24) -#define USD_SETBASE(_sd, _b) (_sd)->sd_lobase = (_b); \ - (_sd)->sd_hibase = ((_b) >> 24); -#define USD_GETLIMIT(_sd) (((_sd)->sd_lolimit) | (_sd)->sd_hilimit << 16) -#define USD_SETLIMIT(_sd, _l) (_sd)->sd_lolimit = (_l); \ - (_sd)->sd_hilimit = ((_l) >> 16); +#define USD_GETBASE(sd) (((sd)->sd_lobase) | (sd)->sd_hibase << 24) +#define USD_SETBASE(sd, b) (sd)->sd_lobase = (b); \ + (sd)->sd_hibase = ((b) >> 24); +#define USD_GETLIMIT(sd) (((sd)->sd_lolimit) | (sd)->sd_hilimit << 16) +#define USD_SETLIMIT(sd, l) (sd)->sd_lolimit = (l); \ + (sd)->sd_hilimit = ((l) >> 16); /* * System segment descriptors (128 bit wide) Modified: projects/altix/sys/boot/ia64/efi/version ============================================================================== --- projects/altix/sys/boot/ia64/efi/version Wed Jul 7 20:07:33 2010 (r209779) +++ projects/altix/sys/boot/ia64/efi/version Wed Jul 7 20:21:24 2010 (r209780) @@ -3,6 +3,8 @@ $FreeBSD$ NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this file is important. Make sure the current version number is on line 6. +2.2: Create direct mapping based on start address instead of mapping + first 256M. 2.1: Add support for "-dev " argument parsing. 2.0: Provide devices based on the block I/O protocol, rather than the simple file services protocol. Use the FreeBSD file system code Modified: projects/altix/sys/kern/kern_clock.c ============================================================================== --- projects/altix/sys/kern/kern_clock.c Wed Jul 7 20:07:33 2010 (r209779) +++ projects/altix/sys/kern/kern_clock.c Wed Jul 7 20:21:24 2010 (r209780) @@ -202,8 +202,14 @@ deadlkres(void) FOREACH_PROC_IN_SYSTEM(p) { PROC_LOCK(p); FOREACH_THREAD_IN_PROC(p, td) { + + /* + * Once a thread is found in "interesting" + * state a possible ticks wrap-up needs to be + * checked. + */ thread_lock(td); - if (TD_ON_LOCK(td)) { + if (TD_ON_LOCK(td) && ticks < td->td_blktick) { /* * The thread should be blocked on a @@ -212,11 +218,6 @@ deadlkres(void) */ MPASS(td->td_blocked != NULL); - /* Handle ticks wrap-up. */ - if (ticks < td->td_blktick) { - thread_unlock(td); - continue; - } tticks = ticks - td->td_blktick; thread_unlock(td); if (tticks > blkticks) { @@ -232,13 +233,9 @@ deadlkres(void) panic("%s: possible deadlock detected for %p, blocked for %d ticks\n", __func__, td, tticks); } - } else if (TD_IS_SLEEPING(td)) { - - /* Handle ticks wrap-up. */ - if (ticks < td->td_blktick) { - thread_unlock(td); - continue; - } + } else if (TD_IS_SLEEPING(td) && + TD_ON_SLEEPQ(td) && + ticks < td->td_blktick) { /* * Check if the thread is sleeping on a Modified: projects/altix/sys/mips/atheros/ar71xxreg.h ============================================================================== --- projects/altix/sys/mips/atheros/ar71xxreg.h Wed Jul 7 20:07:33 2010 (r209779) +++ projects/altix/sys/mips/atheros/ar71xxreg.h Wed Jul 7 20:21:24 2010 (r209780) @@ -151,10 +151,10 @@ #define AR71XX_GPIO_FUNCTION 0x28 #define GPIO_FUNC_STEREO_EN (1 << 17) #define GPIO_FUNC_SLIC_EN (1 << 16) -#define GPIO_FUNC_SPI_CS1_EN (1 << 15) - /* CS1 is shared with GPIO_1 */ -#define GPIO_FUNC_SPI_CS0_EN (1 << 14) - /* CS0 is shared with GPIO_0 */ +#define GPIO_FUNC_SPI_CS2_EN (1 << 15) + /* CS2 is shared with GPIO_1 */ +#define GPIO_FUNC_SPI_CS1_EN (1 << 14) + /* CS1 is shared with GPIO_0 */ #define GPIO_FUNC_SPI_EN (1 << 13) #define GPIO_FUNC_UART_EN (1 << 8) #define GPIO_FUNC_USB_OC_EN (1 << 4) From owner-svn-src-projects@FreeBSD.ORG Thu Jul 8 15:47:04 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 296AA106564A; Thu, 8 Jul 2010 15:47:04 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1781E8FC08; Thu, 8 Jul 2010 15:47:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o68Fl3kW054740; Thu, 8 Jul 2010 15:47:03 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o68Fl3Sj054729; Thu, 8 Jul 2010 15:47:03 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007081547.o68Fl3Sj054729@svn.freebsd.org> From: Nathan Whitehorn Date: Thu, 8 Jul 2010 15:47:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209813 - in projects/ppc64/sys: modules powerpc/aim powerpc/cell powerpc/mambo powerpc/powermac powerpc/powerpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Jul 2010 15:47:04 -0000 Author: nwhitehorn Date: Thu Jul 8 15:47:03 2010 New Revision: 209813 URL: http://svn.freebsd.org/changeset/base/209813 Log: Diff reduction with HEAD. Modified: projects/ppc64/sys/modules/Makefile projects/ppc64/sys/powerpc/aim/locore.S (contents, props changed) projects/ppc64/sys/powerpc/cell/celliic.c (contents, props changed) projects/ppc64/sys/powerpc/mambo/mambo.c (contents, props changed) projects/ppc64/sys/powerpc/mambo/mambo_console.c (contents, props changed) projects/ppc64/sys/powerpc/mambo/mambo_disk.c (contents, props changed) projects/ppc64/sys/powerpc/mambo/mambo_openpic.c (contents, props changed) projects/ppc64/sys/powerpc/mambo/mambocall.h (contents, props changed) projects/ppc64/sys/powerpc/powermac/uninorthpci.c (contents, props changed) projects/ppc64/sys/powerpc/powerpc/exec_machdep.c (contents, props changed) Directory Properties: projects/ppc64/sys/powerpc/aim/slb.c (props changed) projects/ppc64/sys/powerpc/mambo/mambocall.S (props changed) Modified: projects/ppc64/sys/modules/Makefile ============================================================================== --- projects/ppc64/sys/modules/Makefile Thu Jul 8 15:38:55 2010 (r209812) +++ projects/ppc64/sys/modules/Makefile Thu Jul 8 15:47:03 2010 (r209813) @@ -622,7 +622,6 @@ _cpufreq= cpufreq _nvram= powermac_nvram _smbfs= smbfs _sound= sound -_tmpfs= tmpfs .endif .if ${MACHINE_ARCH} == "powerpc64" Modified: projects/ppc64/sys/powerpc/aim/locore.S ============================================================================== --- projects/ppc64/sys/powerpc/aim/locore.S Thu Jul 8 15:38:55 2010 (r209812) +++ projects/ppc64/sys/powerpc/aim/locore.S Thu Jul 8 15:47:03 2010 (r209813) @@ -1,4 +1,4 @@ -/* $FreeBSD: projects/ppc64/sys/powerpc/aim/locore32.S -1 $ */ +/* $FreeBSD$ */ #ifdef __powerpc64__ #include Modified: projects/ppc64/sys/powerpc/cell/celliic.c ============================================================================== --- projects/ppc64/sys/powerpc/cell/celliic.c Thu Jul 8 15:38:55 2010 (r209812) +++ projects/ppc64/sys/powerpc/cell/celliic.c Thu Jul 8 15:47:03 2010 (r209813) @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: projects/ppc64/sys/powerpc/powermac/celliic.c 183882 2008-10-14 14:54:14Z nwhitehorn $ + * $FreeBSD$ */ /* Modified: projects/ppc64/sys/powerpc/mambo/mambo.c ============================================================================== --- projects/ppc64/sys/powerpc/mambo/mambo.c Thu Jul 8 15:38:55 2010 (r209812) +++ projects/ppc64/sys/powerpc/mambo/mambo.c Thu Jul 8 15:47:03 2010 (r209813) @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/powerpc/powermac/openpic_macio.c,v 1.13 2008/10/14 14:54:14 nwhitehorn Exp $"); +__FBSDID("$FreeBSD$"); #include #include Modified: projects/ppc64/sys/powerpc/mambo/mambo_console.c ============================================================================== --- projects/ppc64/sys/powerpc/mambo/mambo_console.c Thu Jul 8 15:38:55 2010 (r209812) +++ projects/ppc64/sys/powerpc/mambo/mambo_console.c Thu Jul 8 15:47:03 2010 (r209813) @@ -24,7 +24,7 @@ */ #include -__FBSDID("$FreeBSD: head/sys/dev/mambo/mambo_console.c 193018 2009-05-29 06:41:23Z ed $"); +__FBSDID("$FreeBSD$"); #include "opt_comconsole.h" Modified: projects/ppc64/sys/powerpc/mambo/mambo_disk.c ============================================================================== --- projects/ppc64/sys/powerpc/mambo/mambo_disk.c Thu Jul 8 15:38:55 2010 (r209812) +++ projects/ppc64/sys/powerpc/mambo/mambo_disk.c Thu Jul 8 15:47:03 2010 (r209813) @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: head/sys/dev/mmc/mambodisk.c 183805 2008-10-12 19:19:26Z mav $"); +__FBSDID("$FreeBSD$"); #include #include Modified: projects/ppc64/sys/powerpc/mambo/mambo_openpic.c ============================================================================== --- projects/ppc64/sys/powerpc/mambo/mambo_openpic.c Thu Jul 8 15:38:55 2010 (r209812) +++ projects/ppc64/sys/powerpc/mambo/mambo_openpic.c Thu Jul 8 15:47:03 2010 (r209813) @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/powerpc/powermac/openpic_macio.c,v 1.13 2008/10/14 14:54:14 nwhitehorn Exp $"); +__FBSDID("$FreeBSD$"); #include #include Modified: projects/ppc64/sys/powerpc/mambo/mambocall.h ============================================================================== --- projects/ppc64/sys/powerpc/mambo/mambocall.h Thu Jul 8 15:38:55 2010 (r209812) +++ projects/ppc64/sys/powerpc/mambo/mambocall.h Thu Jul 8 15:47:03 2010 (r209813) @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/powerpc/powermac/maciovar.h,v 1.8 2008/04/26 18:35:44 marcel Exp $ + * $FreeBSD$ */ #ifndef _MAMBO_MAMBOCALL_H_ Modified: projects/ppc64/sys/powerpc/powermac/uninorthpci.c ============================================================================== --- projects/ppc64/sys/powerpc/powermac/uninorthpci.c Thu Jul 8 15:38:55 2010 (r209812) +++ projects/ppc64/sys/powerpc/powermac/uninorthpci.c Thu Jul 8 15:47:03 2010 (r209813) @@ -22,7 +22,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: projects/ppc64/sys/powerpc/powermac/uninorth.c 205374 2010-03-20 14:53:52Z nwhitehorn $ + * $FreeBSD$ */ #include Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c ============================================================================== --- projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Thu Jul 8 15:38:55 2010 (r209812) +++ projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Thu Jul 8 15:47:03 2010 (r209813) @@ -55,7 +55,7 @@ */ #include -__FBSDID("$FreeBSD: projects/ppc64/sys/powerpc/aim/machdep.c 198753 2009-11-01 16:54:20Z nwhitehorn $"); +__FBSDID("$FreeBSD$"); #include "opt_compat.h" From owner-svn-src-projects@FreeBSD.ORG Fri Jul 9 13:49:20 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA3161065672; Fri, 9 Jul 2010 13:49:20 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9A9748FC13; Fri, 9 Jul 2010 13:49:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o69DnKDi051075; Fri, 9 Jul 2010 13:49:20 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o69DnK9t051072; Fri, 9 Jul 2010 13:49:20 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007091349.o69DnK9t051072@svn.freebsd.org> From: Nathan Whitehorn Date: Fri, 9 Jul 2010 13:49:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209846 - projects/ppc64/crypto/openssl/engines X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jul 2010 13:49:20 -0000 Author: nwhitehorn Date: Fri Jul 9 13:49:20 2010 New Revision: 209846 URL: http://svn.freebsd.org/changeset/base/209846 Log: SVN missed these files somehow. Added: projects/ppc64/crypto/openssl/engines/alpha.opt projects/ppc64/crypto/openssl/engines/ia64.opt Added: projects/ppc64/crypto/openssl/engines/alpha.opt ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/crypto/openssl/engines/alpha.opt Fri Jul 9 13:49:20 2010 (r209846) @@ -0,0 +1 @@ +SYMBOL_VECTOR=(bind_engine=PROCEDURE,v_check=PROCEDURE) Added: projects/ppc64/crypto/openssl/engines/ia64.opt ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/crypto/openssl/engines/ia64.opt Fri Jul 9 13:49:20 2010 (r209846) @@ -0,0 +1 @@ +SYMBOL_VECTOR=(bind_engine=PROCEDURE,v_check=PROCEDURE) From owner-svn-src-projects@FreeBSD.ORG Fri Jul 9 14:12:19 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 46C5A106564A; Fri, 9 Jul 2010 14:12:19 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3227B8FC15; Fri, 9 Jul 2010 14:12:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o69ECJsD056880; Fri, 9 Jul 2010 14:12:19 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o69ECI7V056856; Fri, 9 Jul 2010 14:12:18 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007091412.o69ECI7V056856@svn.freebsd.org> From: Nathan Whitehorn Date: Fri, 9 Jul 2010 14:12:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209854 - in projects/ppc64: cddl/compat/opensolaris/misc gnu/usr.bin/dialog lib/libc/net lib/libc/posix1e lib/libstand sbin/dhclient share/mk sys/amd64/amd64 sys/amd64/conf sys/amd64/i... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jul 2010 14:12:19 -0000 Author: nwhitehorn Date: Fri Jul 9 14:12:18 2010 New Revision: 209854 URL: http://svn.freebsd.org/changeset/base/209854 Log: IFC @ 209853 to profit from recent diff reduction. Slowly, the merge progresses... Added: projects/ppc64/sys/conf/ldscript.mips.64 - copied unchanged from r209853, head/sys/conf/ldscript.mips.64 projects/ppc64/sys/contrib/dev/acpica/compiler/dtcompile.c - copied unchanged from r209853, head/sys/contrib/dev/acpica/compiler/dtcompile.c projects/ppc64/sys/contrib/dev/acpica/compiler/dtcompiler.h - copied unchanged from r209853, head/sys/contrib/dev/acpica/compiler/dtcompiler.h projects/ppc64/sys/contrib/dev/acpica/compiler/dtfield.c - copied unchanged from r209853, head/sys/contrib/dev/acpica/compiler/dtfield.c projects/ppc64/sys/contrib/dev/acpica/compiler/dtio.c - copied unchanged from r209853, head/sys/contrib/dev/acpica/compiler/dtio.c projects/ppc64/sys/contrib/dev/acpica/compiler/dtsubtable.c - copied unchanged from r209853, head/sys/contrib/dev/acpica/compiler/dtsubtable.c projects/ppc64/sys/contrib/dev/acpica/compiler/dttable.c - copied unchanged from r209853, head/sys/contrib/dev/acpica/compiler/dttable.c projects/ppc64/sys/contrib/dev/acpica/compiler/dttemplate.c - copied unchanged from r209853, head/sys/contrib/dev/acpica/compiler/dttemplate.c projects/ppc64/sys/contrib/dev/acpica/compiler/dttemplate.h - copied unchanged from r209853, head/sys/contrib/dev/acpica/compiler/dttemplate.h projects/ppc64/sys/contrib/dev/acpica/compiler/dtutils.c - copied unchanged from r209853, head/sys/contrib/dev/acpica/compiler/dtutils.c projects/ppc64/sys/mips/conf/XLR64 - copied unchanged from r209853, head/sys/mips/conf/XLR64 projects/ppc64/usr.sbin/pc-sysinstall/backend-query/detect-emulation.sh - copied unchanged from r209853, head/usr.sbin/pc-sysinstall/backend-query/detect-emulation.sh Deleted: projects/ppc64/usr.sbin/pc-sysinstall/backend-query/detect-vmware.sh Modified: projects/ppc64/cddl/compat/opensolaris/misc/fsshare.c projects/ppc64/gnu/usr.bin/dialog/dialog.1 projects/ppc64/lib/libc/net/sctp_sys_calls.c projects/ppc64/lib/libc/posix1e/acl_from_text.c projects/ppc64/lib/libc/posix1e/acl_from_text_nfs4.c projects/ppc64/lib/libc/posix1e/acl_support.h projects/ppc64/lib/libstand/printf.c projects/ppc64/sbin/dhclient/dhclient.c projects/ppc64/share/mk/Makefile projects/ppc64/sys/amd64/amd64/cpu_switch.S projects/ppc64/sys/amd64/amd64/pmap.c projects/ppc64/sys/amd64/conf/GENERIC projects/ppc64/sys/amd64/include/segments.h projects/ppc64/sys/boot/ia64/common/exec.c projects/ppc64/sys/boot/ia64/efi/version projects/ppc64/sys/cam/ata/ata_xpt.c projects/ppc64/sys/contrib/dev/acpica/acpica_prep.sh projects/ppc64/sys/contrib/dev/acpica/changes.txt projects/ppc64/sys/contrib/dev/acpica/common/adisasm.c projects/ppc64/sys/contrib/dev/acpica/common/adwalk.c projects/ppc64/sys/contrib/dev/acpica/common/dmextern.c projects/ppc64/sys/contrib/dev/acpica/common/dmrestag.c projects/ppc64/sys/contrib/dev/acpica/common/dmtable.c projects/ppc64/sys/contrib/dev/acpica/common/dmtbdump.c projects/ppc64/sys/contrib/dev/acpica/common/dmtbinfo.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslcompile.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/ppc64/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/ppc64/sys/contrib/dev/acpica/compiler/aslcompiler.y projects/ppc64/sys/contrib/dev/acpica/compiler/asldefine.h projects/ppc64/sys/contrib/dev/acpica/compiler/aslerror.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslfiles.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslglobal.h projects/ppc64/sys/contrib/dev/acpica/compiler/asllookup.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslmain.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslopt.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslpredef.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslstartup.c projects/ppc64/sys/contrib/dev/acpica/compiler/asltransform.c projects/ppc64/sys/contrib/dev/acpica/compiler/asltree.c projects/ppc64/sys/contrib/dev/acpica/compiler/asltypes.h projects/ppc64/sys/contrib/dev/acpica/compiler/aslutils.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbcmds.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbdisply.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbexec.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbfileio.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbhistry.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbinput.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbutils.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmobject.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmopcode.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmresrc.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsinit.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsmethod.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsmthdat.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsobject.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsopcode.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsutils.c projects/ppc64/sys/contrib/dev/acpica/events/evgpe.c projects/ppc64/sys/contrib/dev/acpica/events/evgpeblk.c projects/ppc64/sys/contrib/dev/acpica/events/evgpeinit.c projects/ppc64/sys/contrib/dev/acpica/events/evgpeutil.c projects/ppc64/sys/contrib/dev/acpica/events/evrgnini.c projects/ppc64/sys/contrib/dev/acpica/events/evxface.c projects/ppc64/sys/contrib/dev/acpica/events/evxfevnt.c projects/ppc64/sys/contrib/dev/acpica/executer/exdump.c projects/ppc64/sys/contrib/dev/acpica/executer/exfldio.c projects/ppc64/sys/contrib/dev/acpica/executer/exprep.c projects/ppc64/sys/contrib/dev/acpica/executer/exregion.c projects/ppc64/sys/contrib/dev/acpica/executer/exsystem.c projects/ppc64/sys/contrib/dev/acpica/hardware/hwgpe.c projects/ppc64/sys/contrib/dev/acpica/hardware/hwsleep.c projects/ppc64/sys/contrib/dev/acpica/hardware/hwvalid.c projects/ppc64/sys/contrib/dev/acpica/include/acconfig.h projects/ppc64/sys/contrib/dev/acpica/include/acdisasm.h projects/ppc64/sys/contrib/dev/acpica/include/acevents.h projects/ppc64/sys/contrib/dev/acpica/include/acexcep.h projects/ppc64/sys/contrib/dev/acpica/include/acglobal.h projects/ppc64/sys/contrib/dev/acpica/include/achware.h projects/ppc64/sys/contrib/dev/acpica/include/aclocal.h projects/ppc64/sys/contrib/dev/acpica/include/acnamesp.h projects/ppc64/sys/contrib/dev/acpica/include/acobject.h projects/ppc64/sys/contrib/dev/acpica/include/acoutput.h projects/ppc64/sys/contrib/dev/acpica/include/acpixf.h projects/ppc64/sys/contrib/dev/acpica/include/acpredef.h projects/ppc64/sys/contrib/dev/acpica/include/acstruct.h projects/ppc64/sys/contrib/dev/acpica/include/actbl.h projects/ppc64/sys/contrib/dev/acpica/include/actbl2.h projects/ppc64/sys/contrib/dev/acpica/include/actypes.h projects/ppc64/sys/contrib/dev/acpica/include/acutils.h projects/ppc64/sys/contrib/dev/acpica/namespace/nsaccess.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsalloc.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsdump.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsinit.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsnames.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsparse.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsrepair.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsrepair2.c projects/ppc64/sys/contrib/dev/acpica/namespace/nssearch.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsutils.c projects/ppc64/sys/contrib/dev/acpica/namespace/nswalk.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsxfobj.c projects/ppc64/sys/contrib/dev/acpica/osunixxf.c projects/ppc64/sys/contrib/dev/acpica/utilities/utglobal.c projects/ppc64/sys/contrib/dev/acpica/utilities/utmisc.c projects/ppc64/sys/contrib/dev/acpica/utilities/uttrack.c projects/ppc64/sys/dev/acpica/acpi.c projects/ppc64/sys/dev/acpica/acpi_button.c projects/ppc64/sys/dev/acpica/acpi_ec.c projects/ppc64/sys/dev/acpica/acpi_lid.c projects/ppc64/sys/dev/agp/agp.c projects/ppc64/sys/dev/ath/if_ath.c projects/ppc64/sys/dev/bge/if_bge.c projects/ppc64/sys/dev/cxgb/common/cxgb_ael1002.c projects/ppc64/sys/dev/cxgb/common/cxgb_common.h projects/ppc64/sys/dev/cxgb/common/cxgb_t3_hw.c projects/ppc64/sys/dev/cxgb/cxgb_adapter.h projects/ppc64/sys/dev/cxgb/cxgb_main.c projects/ppc64/sys/dev/cxgb/cxgb_sge.c projects/ppc64/sys/dev/fb/vesa.c projects/ppc64/sys/dev/md/md.c projects/ppc64/sys/dev/sge/if_sge.c projects/ppc64/sys/dev/sge/if_sgereg.h projects/ppc64/sys/ia64/acpica/acpi_machdep.c projects/ppc64/sys/ia64/ia64/autoconf.c projects/ppc64/sys/ia64/ia64/mca.c projects/ppc64/sys/ia64/include/md_var.h projects/ppc64/sys/kern/kern_clock.c projects/ppc64/sys/kern/kern_exec.c projects/ppc64/sys/kern/kern_sig.c projects/ppc64/sys/kern/subr_prf.c projects/ppc64/sys/kern/subr_unit.c projects/ppc64/sys/kern/vfs_syscalls.c projects/ppc64/sys/mips/atheros/ar71xxreg.h projects/ppc64/sys/mips/atheros/if_arge.c projects/ppc64/sys/mips/atheros/if_argevar.h projects/ppc64/sys/mips/include/pmap.h projects/ppc64/sys/mips/include/pte.h projects/ppc64/sys/mips/include/runq.h projects/ppc64/sys/mips/mips/cache_mipsNN.c projects/ppc64/sys/mips/mips/exception.S projects/ppc64/sys/mips/mips/locore.S projects/ppc64/sys/mips/mips/pmap.c projects/ppc64/sys/mips/mips/vm_machdep.c projects/ppc64/sys/mips/rmi/dev/xlr/rge.c projects/ppc64/sys/mips/rmi/iodi.c projects/ppc64/sys/mips/rmi/on_chip.c projects/ppc64/sys/mips/rmi/xlr_machdep.c projects/ppc64/sys/mips/rmi/xlr_pci.c projects/ppc64/sys/netgraph/ng_source.c projects/ppc64/sys/netgraph/ng_source.h projects/ppc64/sys/netinet/ipfw/ip_fw_log.c projects/ppc64/sys/powerpc/aim/nexus.c projects/ppc64/sys/powerpc/aim/platform_chrp.c projects/ppc64/sys/sys/signalvar.h projects/ppc64/sys/vm/vm_page.c projects/ppc64/sys/vm/vm_page.h projects/ppc64/tools/tools/ncpus/biosmptable.c projects/ppc64/usr.bin/getopt/getopt.1 projects/ppc64/usr.sbin/acpi/acpidump/acpi_user.c projects/ppc64/usr.sbin/acpi/iasl/Makefile projects/ppc64/usr.sbin/jls/jls.c projects/ppc64/usr.sbin/pc-sysinstall/backend-query/Makefile projects/ppc64/usr.sbin/pc-sysinstall/backend-query/detect-laptop.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/detect-nics.sh projects/ppc64/usr.sbin/pc-sysinstall/doc/help-index projects/ppc64/usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.8 projects/ppc64/usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.sh projects/ppc64/usr.sbin/sysinstall/install.cfg projects/ppc64/usr.sbin/sysinstall/label.c projects/ppc64/usr.sbin/sysinstall/menus.c projects/ppc64/usr.sbin/sysinstall/msg.c projects/ppc64/usr.sbin/sysinstall/sysinstall.h Directory Properties: projects/ppc64/ (props changed) projects/ppc64/cddl/contrib/opensolaris/ (props changed) projects/ppc64/contrib/ee/ (props changed) projects/ppc64/contrib/expat/ (props changed) projects/ppc64/contrib/file/ (props changed) projects/ppc64/contrib/gdb/ (props changed) projects/ppc64/contrib/gnu-sort/ (props changed) projects/ppc64/contrib/groff/ (props changed) projects/ppc64/contrib/less/ (props changed) projects/ppc64/contrib/libpcap/ (props changed) projects/ppc64/contrib/ncurses/ (props changed) projects/ppc64/contrib/one-true-awk/ (props changed) projects/ppc64/contrib/openbsm/ (props changed) projects/ppc64/contrib/openpam/ (props changed) projects/ppc64/contrib/pf/ (props changed) projects/ppc64/contrib/tcpdump/ (props changed) projects/ppc64/contrib/tcsh/ (props changed) projects/ppc64/contrib/tzcode/stdtime/ (props changed) projects/ppc64/contrib/tzcode/zic/ (props changed) projects/ppc64/contrib/tzdata/ (props changed) projects/ppc64/contrib/wpa/ (props changed) projects/ppc64/lib/libutil/ (props changed) projects/ppc64/lib/libz/ (props changed) projects/ppc64/sbin/ (props changed) projects/ppc64/sbin/ipfw/ (props changed) projects/ppc64/share/mk/bsd.arch.inc.mk (props changed) projects/ppc64/sys/ (props changed) projects/ppc64/sys/amd64/include/xen/ (props changed) projects/ppc64/sys/arm/conf/SHEEVAPLUG (props changed) projects/ppc64/sys/cddl/contrib/opensolaris/ (props changed) projects/ppc64/sys/contrib/dev/acpica/ (props changed) projects/ppc64/sys/contrib/x86emu/ (props changed) projects/ppc64/sys/dev/xen/xenpci/ (props changed) projects/ppc64/usr.bin/csup/ (props changed) projects/ppc64/usr.bin/procstat/ (props changed) Modified: projects/ppc64/cddl/compat/opensolaris/misc/fsshare.c ============================================================================== --- projects/ppc64/cddl/compat/opensolaris/misc/fsshare.c Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/cddl/compat/opensolaris/misc/fsshare.c Fri Jul 9 14:12:18 2010 (r209854) @@ -110,11 +110,11 @@ getline(FILE *fd, const char *skip) * * Recognized keywords: * - * ro, maproot, mapall, mask, network, alldirs, public, webnfs, index, quiet + * ro, maproot, mapall, mask, network, sec, alldirs, public, webnfs, index, quiet * */ static const char *known_opts[] = { "ro", "maproot", "mapall", "mask", - "network", "alldirs", "public", "webnfs", "index", "quiet", NULL }; + "network", "sec", "alldirs", "public", "webnfs", "index", "quiet", NULL }; static char * translate_opts(const char *shareopts) { Modified: projects/ppc64/gnu/usr.bin/dialog/dialog.1 ============================================================================== --- projects/ppc64/gnu/usr.bin/dialog/dialog.1 Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/gnu/usr.bin/dialog/dialog.1 Fri Jul 9 14:12:18 2010 (r209854) @@ -30,6 +30,7 @@ types of dialog objects are currently su .BR yes/no " box," " menu" " box," " input" " box," .BR message " box," " text" " box," " info" " box," .BR checklist " box," " program" " box," +.BR radiolist " box," .BR ftree " and " tree " boxes." .SH OPTIONS .TP @@ -172,6 +173,15 @@ On exit, a list of the .I tag strings of those entries that are turned on will be printed on .IR stderr "." +.IP "\fB\-\-radiolist \fItext height width list-height \fR[ \fItag item status \fR] \fI..." +.RB "A " radiolist " box is similar to a " checklist " but it only allows" +a single entry to be selected. One entry may initially be turned on as +specified by +.IR status "." +On exit, the +.I tag +string of the entry that is turned on will be printed on +.IR stderr "." .IP "\fB\-\-ftree \fIfile FS text height width menu-height" .B ftree box is a dialog box showing the tree described by the data from the file Modified: projects/ppc64/lib/libc/net/sctp_sys_calls.c ============================================================================== --- projects/ppc64/lib/libc/net/sctp_sys_calls.c Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/lib/libc/net/sctp_sys_calls.c Fri Jul 9 14:12:18 2010 (r209854) @@ -724,6 +724,7 @@ sctp_sendx(int sd, const void *msg, size struct sctp_sndrcvinfo *sinfo, int flags) { + struct sctp_sndrcvinfo __sinfo; ssize_t ret; int i, cnt, *aa, saved_errno; char *buf; @@ -790,6 +791,10 @@ sctp_sendx(int sd, const void *msg, size return (ret); } continue_send: + if (sinfo == NULL) { + sinfo = &__sinfo; + memset(&__sinfo, 0, sizeof(__sinfo)); + } sinfo->sinfo_assoc_id = sctp_getassocid(sd, addrs); if (sinfo->sinfo_assoc_id == 0) { printf("Huh, can't get associd? TSNH!\n"); Modified: projects/ppc64/lib/libc/posix1e/acl_from_text.c ============================================================================== --- projects/ppc64/lib/libc/posix1e/acl_from_text.c Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/lib/libc/posix1e/acl_from_text.c Fri Jul 9 14:12:18 2010 (r209854) @@ -44,7 +44,6 @@ __FBSDID("$FreeBSD$"); #include "acl_support.h" -static int _posix1e_acl_name_to_id(acl_tag_t tag, char *name, uid_t *id); static acl_tag_t acl_string_to_tag(char *tag, char *qualifier); int _nfs4_acl_entry_from_text(acl_t aclp, char *entry); @@ -148,8 +147,7 @@ _posix1e_acl_entry_from_text(acl_t aclp, case ACL_USER: case ACL_GROUP: - error = _posix1e_acl_name_to_id(t, qualifier, - &id); + error = _acl_name_to_id(t, qualifier, &id); if (error == -1) return (-1); break; @@ -272,8 +270,8 @@ error_label: * XXX USES *PW* AND *GR* WHICH ARE STATEFUL AND THEREFORE THIS ROUTINE * MAY HAVE SIDE-EFFECTS */ -static int -_posix1e_acl_name_to_id(acl_tag_t tag, char *name, uid_t *id) +int +_acl_name_to_id(acl_tag_t tag, char *name, uid_t *id) { struct group *g; struct passwd *p; Modified: projects/ppc64/lib/libc/posix1e/acl_from_text_nfs4.c ============================================================================== --- projects/ppc64/lib/libc/posix1e/acl_from_text_nfs4.c Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/lib/libc/posix1e/acl_from_text_nfs4.c Fri Jul 9 14:12:18 2010 (r209854) @@ -79,16 +79,14 @@ parse_tag(const char *str, acl_entry_t e /* * Parse the qualifier field of ACL entry passed as "str". * If user or group name cannot be resolved, then the variable - * referenced by "need_qualifier" is set to 1. + * referenced by "need_qualifier" is set to 1; it will be checked + * later to figure out whether the appended_id is required. */ static int parse_qualifier(char *str, acl_entry_t entry, int *need_qualifier) { int qualifier_length, error; - id_t id; - char *end; - struct passwd *pwd; - struct group *grp; + uid_t id; acl_tag_t tag; assert(need_qualifier != NULL); @@ -101,44 +99,17 @@ parse_qualifier(char *str, acl_entry_t e return (-1); } - /* XXX: Can we assume that valid username never begins with a digit? */ - if (isdigit(str[0])) { - id = strtod(str, &end); - - if (end - str != qualifier_length) { - warnx("malformed ACL: trailing characters " - "after numerical id"); - return (-1); - } - - return (acl_set_qualifier(entry, &id)); - } - error = acl_get_tag_type(entry, &tag); if (error) return (error); - assert(tag == ACL_USER || tag == ACL_GROUP); - - if (tag == ACL_USER) { - /* XXX: Thread-unsafe. */ - pwd = getpwnam(str); - if (pwd == NULL) { - *need_qualifier = 1; - return (0); - } - - return (acl_set_qualifier(entry, &(pwd->pw_uid))); - } - - /* XXX: Thread-unsafe. */ - grp = getgrnam(str); - if (grp == NULL) { + error = _acl_name_to_id(tag, str, &id); + if (error) { *need_qualifier = 1; return (0); } - return (acl_set_qualifier(entry, &(grp->gr_gid))); + return (acl_set_qualifier(entry, &id)); } static int Modified: projects/ppc64/lib/libc/posix1e/acl_support.h ============================================================================== --- projects/ppc64/lib/libc/posix1e/acl_support.h Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/lib/libc/posix1e/acl_support.h Fri Jul 9 14:12:18 2010 (r209854) @@ -61,5 +61,6 @@ int _posix1e_acl_add_entry(acl_t acl, ac acl_perm_t perm); char *string_skip_whitespace(char *string); void string_trim_trailing_whitespace(char *string); +int _acl_name_to_id(acl_tag_t tag, char *name, uid_t *id); #endif Modified: projects/ppc64/lib/libstand/printf.c ============================================================================== --- projects/ppc64/lib/libstand/printf.c Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/lib/libstand/printf.c Fri Jul 9 14:12:18 2010 (r209854) @@ -151,6 +151,7 @@ ksprintn(char *nbuf, uintmax_t num, int static int kvprintf(char const *fmt, void (*func)(int), void *arg, int radix, va_list ap) { +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) #define PCHAR(c) {int cc=(c); if (func) (*func)(cc); else *d++ = cc; retval++; } char nbuf[MAXNBUF]; char *d; @@ -159,10 +160,10 @@ kvprintf(char const *fmt, void (*func)(i int ch, n; uintmax_t num; int base, lflag, qflag, tmp, width, ladjust, sharpflag, neg, sign, dot; - int jflag, tflag, zflag; + int cflag, hflag, jflag, tflag, zflag; int dwidth, upper; char padc; - int retval = 0; + int stop = 0, retval = 0; num = 0; if (!func) @@ -179,7 +180,7 @@ kvprintf(char const *fmt, void (*func)(i for (;;) { padc = ' '; width = 0; - while ((ch = (u_char)*fmt++) != '%') { + while ((ch = (u_char)*fmt++) != '%' || stop) { if (ch == '\0') return (retval); PCHAR(ch); @@ -187,7 +188,7 @@ kvprintf(char const *fmt, void (*func)(i percent = fmt - 1; qflag = 0; lflag = 0; ladjust = 0; sharpflag = 0; neg = 0; sign = 0; dot = 0; dwidth = 0; upper = 0; - jflag = 0; tflag = 0; zflag = 0; + cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0; reswitch: switch (ch = (u_char)*fmt++) { case '.': dot = 1; @@ -234,7 +235,7 @@ reswitch: switch (ch = (u_char)*fmt++) { width = n; goto reswitch; case 'b': - num = va_arg(ap, int); + num = (u_int)va_arg(ap, int); p = va_arg(ap, char *); for (q = ksprintn(nbuf, num, *p++, NULL, 0); *q;) PCHAR(*q--); @@ -278,6 +279,13 @@ reswitch: switch (ch = (u_char)*fmt++) { base = 10; sign = 1; goto handle_sign; + case 'h': + if (hflag) { + hflag = 0; + cflag = 1; + } else + hflag = 1; + goto reswitch; case 'j': jflag = 1; goto reswitch; @@ -297,6 +305,10 @@ reswitch: switch (ch = (u_char)*fmt++) { *(va_arg(ap, long *)) = retval; else if (zflag) *(va_arg(ap, size_t *)) = retval; + else if (hflag) + *(va_arg(ap, short *)) = retval; + else if (cflag) + *(va_arg(ap, char *)) = retval; else *(va_arg(ap, int *)) = retval; break; @@ -368,6 +380,10 @@ handle_nosign: num = va_arg(ap, u_long); else if (zflag) num = va_arg(ap, size_t); + else if (hflag) + num = (u_short)va_arg(ap, int); + else if (cflag) + num = (u_char)va_arg(ap, int); else num = va_arg(ap, u_int); goto number; @@ -382,6 +398,10 @@ handle_sign: num = va_arg(ap, long); else if (zflag) num = va_arg(ap, ssize_t); + else if (hflag) + num = (short)va_arg(ap, int); + else if (cflag) + num = (char)va_arg(ap, int); else num = va_arg(ap, int); number: @@ -389,7 +409,8 @@ number: neg = 1; num = -(intmax_t)num; } - p = ksprintn(nbuf, num, base, &tmp, upper); + p = ksprintn(nbuf, num, base, &n, upper); + tmp = 0; if (sharpflag && num != 0) { if (base == 8) tmp++; @@ -399,9 +420,13 @@ number: if (neg) tmp++; - if (!ladjust && width && (width -= tmp) > 0) - while (width--) - PCHAR(padc); + if (!ladjust && padc == '0') + dwidth = width - tmp; + width -= tmp + MAX(dwidth, n); + dwidth -= n; + if (!ladjust) + while (width-- > 0) + PCHAR(' '); if (neg) PCHAR('-'); if (sharpflag && num != 0) { @@ -412,18 +437,27 @@ number: PCHAR('x'); } } + while (dwidth-- > 0) + PCHAR('0'); while (*p) PCHAR(*p--); - if (ladjust && width && (width -= tmp) > 0) - while (width--) - PCHAR(padc); + if (ladjust) + while (width-- > 0) + PCHAR(' '); break; default: while (percent < fmt) PCHAR(*percent++); + /* + * Since we ignore an formatting argument it is no + * longer safe to obey the remaining formatting + * arguments as the arguments will no longer match + * the format specs. + */ + stop = 1; break; } } Modified: projects/ppc64/sbin/dhclient/dhclient.c ============================================================================== --- projects/ppc64/sbin/dhclient/dhclient.c Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/sbin/dhclient/dhclient.c Fri Jul 9 14:12:18 2010 (r209854) @@ -126,7 +126,7 @@ int fork_privchld(int, int); ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long)) #define ADVANCE(x, n) (x += ROUNDUP((n)->sa_len)) -time_t scripttime; +static time_t scripttime; int findproto(char *cp, int n) @@ -204,7 +204,7 @@ disassoc(void *arg) void routehandler(struct protocol *p) { - char msg[2048]; + char msg[2048], *addr; struct rt_msghdr *rtm; struct if_msghdr *ifm; struct ifa_msghdr *ifam; @@ -224,13 +224,6 @@ routehandler(struct protocol *p) switch (rtm->rtm_type) { case RTM_NEWADDR: - /* - * XXX: If someone other than us adds our address, - * we should assume they are taking over from us, - * delete the lease record, and exit without modifying - * the interface. - */ - break; case RTM_DELADDR: ifam = (struct ifa_msghdr *)rtm; @@ -243,7 +236,7 @@ routehandler(struct protocol *p) sa = get_ifa((char *)(ifam + 1), ifam->ifam_addrs); if (sa == NULL) - goto die; + break; if ((a.len = sizeof(struct in_addr)) > sizeof(a.iabuf)) error("king bula sez: len mismatch"); @@ -255,21 +248,42 @@ routehandler(struct protocol *p) if (addr_eq(a, l->address)) break; - if (l == NULL) /* deleted addr is not the one we set */ + if (l == NULL) /* added/deleted addr is not the one we set */ break; - goto die; + + addr = inet_ntoa(((struct sockaddr_in *)sa)->sin_addr); + if (rtm->rtm_type == RTM_NEWADDR) { + /* + * XXX: If someone other than us adds our address, + * should we assume they are taking over from us, + * delete the lease record, and exit without modifying + * the interface? + */ + warning("My address (%s) was re-added", addr); + } else { + warning("My address (%s) was deleted, dhclient exiting", + addr); + goto die; + } + break; case RTM_IFINFO: ifm = (struct if_msghdr *)rtm; if (ifm->ifm_index != ifi->index) break; - if ((rtm->rtm_flags & RTF_UP) == 0) + if ((rtm->rtm_flags & RTF_UP) == 0) { + warning("Interface %s is down, dhclient exiting", + ifi->name); goto die; + } break; case RTM_IFANNOUNCE: ifan = (struct if_announcemsghdr *)rtm; if (ifan->ifan_what == IFAN_DEPARTURE && - ifan->ifan_index == ifi->index) + ifan->ifan_index == ifi->index) { + warning("Interface %s is gone, dhclient exiting", + ifi->name); goto die; + } break; case RTM_IEEE80211: ifan = (struct if_announcemsghdr *)rtm; @@ -2110,8 +2124,6 @@ script_go(void) struct buf *buf; int ret; - scripttime = time(NULL); - hdr.code = IMSG_SCRIPT_GO; hdr.len = sizeof(struct imsg_hdr); @@ -2132,6 +2144,8 @@ script_go(void) error("received corrupted message"); buf_read(privfd, &ret, sizeof(ret)); + scripttime = time(NULL); + return (ret); } Modified: projects/ppc64/share/mk/Makefile ============================================================================== --- projects/ppc64/share/mk/Makefile Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/share/mk/Makefile Fri Jul 9 14:12:18 2010 (r209854) @@ -2,6 +2,7 @@ # @(#)Makefile 8.1 (Berkeley) 6/8/93 FILES= bsd.README +FILES+= bsd.arch.inc.mk FILES+= bsd.compat.mk bsd.cpu.mk bsd.dep.mk bsd.doc.mk bsd.endian.mk FILES+= bsd.files.mk bsd.incs.mk bsd.info.mk bsd.init.mk FILES+= bsd.kmod.mk Modified: projects/ppc64/sys/amd64/amd64/cpu_switch.S ============================================================================== --- projects/ppc64/sys/amd64/amd64/cpu_switch.S Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/sys/amd64/amd64/cpu_switch.S Fri Jul 9 14:12:18 2010 (r209854) @@ -69,16 +69,13 @@ * %rsi = newtd */ ENTRY(cpu_throw) + movl PCPU(CPUID),%eax testq %rdi,%rdi - jnz 1f - movq PCPU(IDLETHREAD),%rdi -1: - movq TD_PCB(%rdi),%r8 /* Old pcb */ - movl PCPU(CPUID), %eax + jz 1f /* release bit from old pm_active */ - movq TD_PROC(%rdi), %rdx /* oldtd->td_proc */ - movq P_VMSPACE(%rdx), %rdx /* proc->p_vmspace */ - LK btrl %eax, VM_PMAP+PM_ACTIVE(%rdx) /* clear old */ + movq PCPU(CURPMAP),%rdx + LK btrl %eax,PM_ACTIVE(%rdx) /* clear old */ +1: movq TD_PCB(%rsi),%r8 /* newtd->td_proc */ movq PCB_CR3(%r8),%rdx movq %rdx,%cr3 /* new address space */ @@ -140,15 +137,16 @@ swinact: movq %rcx,%cr3 /* new address space */ movl PCPU(CPUID), %eax /* Release bit from old pmap->pm_active */ - movq TD_PROC(%rdi), %rcx /* oldproc */ - movq P_VMSPACE(%rcx), %rcx - LK btrl %eax, VM_PMAP+PM_ACTIVE(%rcx) /* clear old */ + movq PCPU(CURPMAP),%rcx + LK btrl %eax,PM_ACTIVE(%rcx) /* clear old */ SETLK %rdx, TD_LOCK(%rdi) /* Release the old thread */ swact: /* Set bit in new pmap->pm_active */ movq TD_PROC(%rsi),%rdx /* newproc */ movq P_VMSPACE(%rdx), %rdx - LK btsl %eax, VM_PMAP+PM_ACTIVE(%rdx) /* set new */ + addq $VM_PMAP,%rdx + LK btsl %eax,PM_ACTIVE(%rdx) /* set new */ + movq %rdx,PCPU(CURPMAP) sw1: #if defined(SCHED_ULE) && defined(SMP) Modified: projects/ppc64/sys/amd64/amd64/pmap.c ============================================================================== --- projects/ppc64/sys/amd64/amd64/pmap.c Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/sys/amd64/amd64/pmap.c Fri Jul 9 14:12:18 2010 (r209854) @@ -1574,6 +1574,7 @@ pmap_pinit0(pmap_t pmap) pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(KPML4phys); pmap->pm_root = NULL; pmap->pm_active = 0; + PCPU_SET(curpmap, pmap); TAILQ_INIT(&pmap->pm_pvchunk); bzero(&pmap->pm_stats, sizeof pmap->pm_stats); } @@ -5008,6 +5009,7 @@ if (oldpmap) /* XXX FIXME */ cr3 = DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4); td->td_pcb->pcb_cr3 = cr3; load_cr3(cr3); + PCPU_SET(curpmap, pmap); critical_exit(); } Modified: projects/ppc64/sys/amd64/conf/GENERIC ============================================================================== --- projects/ppc64/sys/amd64/conf/GENERIC Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/sys/amd64/conf/GENERIC Fri Jul 9 14:12:18 2010 (r209854) @@ -294,6 +294,7 @@ device umass # Disks/Mass storage - Re device ums # Mouse device urio # Diamond Rio 500 MP3 player # USB Serial devices +device u3g # USB-based 3G modems (Option, Huawei, Sierra) device uark # Technologies ARK3116 based serial adapters device ubsa # Belkin F5U103 and compatible serial adapters device uftdi # For FTDI usb serial adapters Modified: projects/ppc64/sys/amd64/include/segments.h ============================================================================== --- projects/ppc64/sys/amd64/include/segments.h Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/sys/amd64/include/segments.h Fri Jul 9 14:12:18 2010 (r209854) @@ -74,6 +74,13 @@ struct user_segment_descriptor { u_int64_t sd_hibase:8; /* segment base address (msb) */ } __packed; +#define USD_GETBASE(sd) (((sd)->sd_lobase) | (sd)->sd_hibase << 24) +#define USD_SETBASE(sd, b) (sd)->sd_lobase = (b); \ + (sd)->sd_hibase = ((b) >> 24); +#define USD_GETLIMIT(sd) (((sd)->sd_lolimit) | (sd)->sd_hilimit << 16) +#define USD_SETLIMIT(sd, l) (sd)->sd_lolimit = (l); \ + (sd)->sd_hilimit = ((l) >> 16); + /* * System segment descriptors (128 bit wide) */ Modified: projects/ppc64/sys/boot/ia64/common/exec.c ============================================================================== --- projects/ppc64/sys/boot/ia64/common/exec.c Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/sys/boot/ia64/common/exec.c Fri Jul 9 14:12:18 2010 (r209854) @@ -106,11 +106,12 @@ elf64_exec(struct preloaded_file *fp) pte = PTE_PRESENT | PTE_MA_WB | PTE_ACCESSED | PTE_DIRTY | PTE_PL_KERN | PTE_AR_RWX | PTE_ED; + pte |= IA64_RR_MASK(hdr->e_entry) & PTE_PPN_MASK; - __asm __volatile("mov cr.ifa=%0" :: "r"(IA64_RR_BASE(7))); + __asm __volatile("mov cr.ifa=%0" :: "r"(hdr->e_entry)); __asm __volatile("mov cr.itir=%0" :: "r"(28 << 2)); - __asm __volatile("ptr.i %0,%1" :: "r"(IA64_RR_BASE(7)), "r"(28<<2)); - __asm __volatile("ptr.d %0,%1" :: "r"(IA64_RR_BASE(7)), "r"(28<<2)); + __asm __volatile("ptr.i %0,%1" :: "r"(hdr->e_entry), "r"(28<<2)); + __asm __volatile("ptr.d %0,%1" :: "r"(hdr->e_entry), "r"(28<<2)); __asm __volatile("srlz.i;;"); __asm __volatile("itr.i itr[%0]=%1;;" :: "r"(0), "r"(pte)); __asm __volatile("srlz.i;;"); Modified: projects/ppc64/sys/boot/ia64/efi/version ============================================================================== --- projects/ppc64/sys/boot/ia64/efi/version Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/sys/boot/ia64/efi/version Fri Jul 9 14:12:18 2010 (r209854) @@ -3,6 +3,8 @@ $FreeBSD$ NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this file is important. Make sure the current version number is on line 6. +2.2: Create direct mapping based on start address instead of mapping + first 256M. 2.1: Add support for "-dev " argument parsing. 2.0: Provide devices based on the block I/O protocol, rather than the simple file services protocol. Use the FreeBSD file system code Modified: projects/ppc64/sys/cam/ata/ata_xpt.c ============================================================================== --- projects/ppc64/sys/cam/ata/ata_xpt.c Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/sys/cam/ata/ata_xpt.c Fri Jul 9 14:12:18 2010 (r209854) @@ -134,6 +134,7 @@ typedef struct { uint32_t pm_prv; int restart; int spinup; + int faults; u_int caps; struct cam_periph *periph; } probe_softc; @@ -738,14 +739,28 @@ probedone(struct cam_periph *periph, uni ident_buf = &path->device->ident_data; if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { -device_fail: if ((!softc->restart) && - cam_periph_error(done_ccb, 0, 0, NULL) == ERESTART) { + if (softc->restart) { + if (bootverbose) { + cam_error_print(done_ccb, + CAM_ESF_ALL, CAM_EPF_ALL); + } + } else if (cam_periph_error(done_ccb, 0, 0, NULL) == ERESTART) return; - } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { + if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { /* Don't wedge the queue */ xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, /*run_queue*/TRUE); } + if (softc->restart) { + softc->faults++; + if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) == + CAM_CMD_TIMEOUT) + softc->faults += 4; + if (softc->faults < 10) + goto done; + else + softc->restart = 0; + } else /* Old PIO2 devices may not support mode setting. */ if (softc->action == PROBE_SETMODE && ata_max_pmode(ident_buf) <= ATA_PIO2 && @@ -761,7 +776,7 @@ device_fail: if ((!softc->restart) && * already marked unconfigured, notify the peripheral * drivers that this device is no more. */ - if ((path->device->flags & CAM_DEV_UNCONFIGURED) == 0) +device_fail: if ((path->device->flags & CAM_DEV_UNCONFIGURED) == 0) xpt_async(AC_LOST_DEVICE, path, NULL); found = 0; goto done; Copied: projects/ppc64/sys/conf/ldscript.mips.64 (from r209853, head/sys/conf/ldscript.mips.64) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/sys/conf/ldscript.mips.64 Fri Jul 9 14:12:18 2010 (r209854, copy of r209853, head/sys/conf/ldscript.mips.64) @@ -0,0 +1,301 @@ +/*- + * Copyright (c) 2001, 2004, 2008, Juniper Networks, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Juniper Networks, Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY JUNIPER NETWORKS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL JUNIPER NETWORKS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * JNPR: ldscript.mips,v 1.3 2006/10/11 06:12:04 + * $FreeBSD$ + */ + +OUTPUT_FORMAT("elf64-tradbigmips", "elf64-tradbigmips", "elf64-tradlittlemips") +OUTPUT_ARCH(mips) +ENTRY(_start) +SEARCH_DIR(/usr/lib); +/* Do we need any of these for elf? + __DYNAMIC = 0; +PROVIDE (_DYNAMIC = 0); +*/ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = KERNLOADADDR + SIZEOF_HEADERS; + .text : + { + *(.trap) + *(.text) + *(.text.*) + *(.stub) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.gnu.linkonce.t.*) + } =0x1000000 + .fini : + { + KEEP (*(.fini)) + } =0x1000000 + PROVIDE (__etext = .); + PROVIDE (_etext = .); + PROVIDE (etext = .); + .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) } + .rodata1 : { *(.rodata1) } + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t.*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t.*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r.*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r.*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d.*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d.*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.sdata : + { + *(.rel.sdata) + *(.rel.sdata.*) + *(.rel.gnu.linkonce.s.*) + } + .rela.sdata : + { + *(.rela.sdata) + *(.rela.sdata.*) + *(.rela.gnu.linkonce.s.*) + } + .rel.sbss : + { + *(.rel.sbss) + *(.rel.sbss.*) + *(.rel.gnu.linkonce.sb.*) + } + .rela.sbss : + { + *(.rela.sbss) + *(.rela.sbss.*) + *(.rel.gnu.linkonce.sb.*) + } + .rel.sdata2 : + { + *(.rel.sdata2) + *(.rel.sdata2.*) + *(.rel.gnu.linkonce.s2.*) + } + .rela.sdata2 : + { + *(.rela.sdata2) + *(.rela.sdata2.*) + *(.rela.gnu.linkonce.s2.*) + } + .rel.sbss2 : + { + *(.rel.sbss2) + *(.rel.sbss2.*) + *(.rel.gnu.linkonce.sb2.*) + } + .rela.sbss2 : + { + *(.rela.sbss2) + *(.rela.sbss2.*) + *(.rela.gnu.linkonce.sb2.*) + } + .rel.bss : + { + *(.rel.bss) + *(.rel.bss.*) + *(.rel.gnu.linkonce.b.*) + } + .rela.bss : + { + *(.rela.bss) + *(.rela.bss.*) + *(.rela.gnu.linkonce.b.*) + } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : + { + KEEP (*(.init)) + } =0x1000000 + .reginfo : { *(.reginfo) } + .sdata2 : { *(.sdata2) *(.sdata2.*) *(.gnu.linkonce.s2.*) } + .sbss2 : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) } + . = ALIGN(0x2000) + (. & (0x2000 - 1)); + .data : + { + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + SORT(CONSTRUCTORS) + } + .data1 : { *(.data1) } + .eh_frame : { KEEP (*(.eh_frame)) } + .gcc_except_table : { *(.gcc_except_table) } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + /* We don't want to include the .ctor section from + from the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + .plt : { *(.plt) } + _gp = ALIGN(16) + 0x7ff0; + .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : + { + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + } + _edata = .; + PROVIDE (edata = .); + __bss_start = .; + .sbss : + { + PROVIDE (__sbss_start = .); + PROVIDE (___sbss_start = .); + *(.dynsbss) + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + *(.scommon) + PROVIDE (__sbss_end = .); + PROVIDE (___sbss_end = .); + } + .bss : + { + *(.dynbss) + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. */ + . = ALIGN(64 / 8); + } + . = ALIGN(64 / 8); + _end = .; + PROVIDE (end = .); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ +} Modified: projects/ppc64/sys/contrib/dev/acpica/acpica_prep.sh ============================================================================== --- projects/ppc64/sys/contrib/dev/acpica/acpica_prep.sh Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/sys/contrib/dev/acpica/acpica_prep.sh Fri Jul 9 14:12:18 2010 (r209854) @@ -33,7 +33,8 @@ src_headers="acapps.h accommon.h acconfi acresrc.h acrestyp.h acstruct.h actables.h actbl.h actbl1.h \ actbl2.h actypes.h acutils.h amlcode.h amlresrc.h \ platform/acenv.h platform/acfreebsd.h platform/acgcc.h" -comp_headers="aslcompiler.h asldefine.h aslglobal.h asltypes.h" +comp_headers="aslcompiler.h asldefine.h aslglobal.h asltypes.h \ + dtcompiler.h dttemplate.h" platform_headers="acfreebsd.h acgcc.h" # pre-clean @@ -49,7 +50,7 @@ tar -x -z -f ${src} -C ${wrk} # strip files echo strip for i in ${stripdirs}; do - find ${wrk} -name ${i} -type d | xargs rm -r + find ${wrk} -name ${i} -type d -print | xargs rm -r done for i in ${stripfiles}; do find ${wrk} -name ${i} -type f -delete @@ -58,22 +59,22 @@ done # copy files echo copying full dirs for i in ${fulldirs}; do - find ${wrk} -name ${i} -type d | xargs -J % mv % ${dst} + find ${wrk} -name ${i} -type d -print | xargs -J % mv % ${dst} done echo copying remaining files -find ${wrk} -type f | xargs -J % mv % ${dst} +find ${wrk} -type f -print | xargs -J % mv % ${dst} # canonify include paths for H in ${src_headers}; do - find ${dst} -name "*.[chy]" -type f | \ + find ${dst} -name "*.[chy]" -type f -print | \ xargs sed -i "" -e "s|[\"<]$H[\">]|\|g" done for H in ${comp_headers}; do - find ${dst}/compiler -name "*.[chly]" -type f | \ + find ${dst}/common ${dst}/compiler -name "*.[chly]" -type f | \ xargs sed -i "" -e "s|[\"<]$H[\">]|\|g" done for H in ${platform_headers}; do - find ${dst}/include/platform -name "*.h" -type f | \ + find ${dst}/include/platform -name "*.h" -type f -print | \ xargs sed -i "" -e "s|[\"<]$H[\">]|\|g" done Modified: projects/ppc64/sys/contrib/dev/acpica/changes.txt ============================================================================== --- projects/ppc64/sys/contrib/dev/acpica/changes.txt Fri Jul 9 14:04:16 2010 (r209853) +++ projects/ppc64/sys/contrib/dev/acpica/changes.txt Fri Jul 9 14:12:18 2010 (r209854) @@ -1,4 +1,167 @@ ---------------------------------------- +02 July 2010. Summary of changes for version 20100702: + +This release is available at www.acpica.org/downloads + +1) ACPI CA Core Subsystem: + +Implemented several updates to the recently added GPE reference count +support. The model for "wake" GPEs is changing to give the host OS complete +control of these GPEs. Eventually, the ACPICA core will not execute any _PRW +methods, since the host already must execute them. Also, additional changes +were made to help ensure that the reference counts are kept in proper +synchronization with reality. Rafael J. Wysocki. + +1) Ensure that GPEs are not enabled twice during initialization. +2) Ensure that GPE enable masks stay in sync with the reference count. +3) Do not inadvertently enable GPEs when writing GPE registers. +4) Remove the internal wake reference counter and add new AcpiGpeWakeup +interface. This interface will set or clear individual GPEs for wakeup. +5) Remove GpeType argument from AcpiEnable and AcpiDisable. These interfaces +are now used for "runtime" GPEs only. + +Changed the behavior of the GPE install/remove handler interfaces. The GPE is +no longer disabled during this process, as it was found to cause problems on +some machines. Rafael J. Wysocki. + +Reverted a change introduced in version 20100528 to enable Embedded +Controller multi-byte transfers. This change was found to cause problems with +Index Fields and possibly Bank Fields. It will be reintroduced when these *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Fri Jul 9 14:38:06 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A5812106566B; Fri, 9 Jul 2010 14:38:06 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 957198FC0C; Fri, 9 Jul 2010 14:38:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o69Ec6mt063157; Fri, 9 Jul 2010 14:38:06 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o69Ec6vP063155; Fri, 9 Jul 2010 14:38:06 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007091438.o69Ec6vP063155@svn.freebsd.org> From: Nathan Whitehorn Date: Fri, 9 Jul 2010 14:38:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209855 - projects/ppc64/contrib/groff/tmac X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jul 2010 14:38:06 -0000 Author: nwhitehorn Date: Fri Jul 9 14:38:06 2010 New Revision: 209855 URL: http://svn.freebsd.org/changeset/base/209855 Log: Fix mismerge Modified: projects/ppc64/contrib/groff/tmac/doc-syms Modified: projects/ppc64/contrib/groff/tmac/doc-syms ============================================================================== --- projects/ppc64/contrib/groff/tmac/doc-syms Fri Jul 9 14:12:18 2010 (r209854) +++ projects/ppc64/contrib/groff/tmac/doc-syms Fri Jul 9 14:38:06 2010 (r209855) @@ -779,7 +779,6 @@ .ds doc-str-Lb-librt \*[Px] \*[doc-str-Lb]Real-time Library (librt, \-lrt) .ds doc-str-Lb-libtermcap Termcap Access Library (libtermcap, \-ltermcap) .ds doc-str-Lb-libusbhid USB Human Interface Devices Library (libusbhid, \-lusbhid) -.ds doc-str-Lb-libulog User Login Record Library (libulog, \-lulog) .ds doc-str-Lb-libutil System Utilities Library (libutil, \-lutil) .ds doc-str-Lb-libx86_64 x86_64 Architecture Library (libx86_64, \-lx86_64) .ds doc-str-Lb-libz Compression Library (libz, \-lz) From owner-svn-src-projects@FreeBSD.ORG Fri Jul 9 15:58:26 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B385C106564A; Fri, 9 Jul 2010 15:58:26 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A078D8FC15; Fri, 9 Jul 2010 15:58:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o69FwQCG080753; Fri, 9 Jul 2010 15:58:26 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o69FwQ61080737; Fri, 9 Jul 2010 15:58:26 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007091558.o69FwQ61080737@svn.freebsd.org> From: Nathan Whitehorn Date: Fri, 9 Jul 2010 15:58:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209856 - in projects/ppc64: . include sys/conf sys/powerpc/aim sys/powerpc/conf sys/powerpc/powermac sys/powerpc64 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jul 2010 15:58:26 -0000 Author: nwhitehorn Date: Fri Jul 9 15:58:26 2010 New Revision: 209856 URL: http://svn.freebsd.org/changeset/base/209856 Log: Goodbye MACHINE=powerpc64! Import some minimal bits of the tbemd tree so that we can have MACHINE=powerpc and MACHINE_ARCH=powerpc64. Now that this port's build system no longer relies on checking symlinks into svn, this makes this branch a merge candidate to HEAD. Note to users of this branch: this transition may be slightly bumpy, and will require rebuilding world, at least to get a new config(8). Some ports may behave strangely due to conflation of uname -m and uname -p. Setting UNAME_m=powerpc64 in your environment may paper over such problems as they become apparent. Long ago suggested by: imp Added: projects/ppc64/sys/powerpc/conf/GENERIC64 projects/ppc64/sys/powerpc/conf/MAMBO Deleted: projects/ppc64/sys/conf/Makefile.powerpc64 projects/ppc64/sys/conf/files.powerpc64 projects/ppc64/sys/conf/options.powerpc64 projects/ppc64/sys/powerpc64/ Modified: projects/ppc64/Makefile.inc1 projects/ppc64/include/Makefile projects/ppc64/sys/conf/Makefile.powerpc projects/ppc64/sys/conf/files.powerpc projects/ppc64/sys/conf/kern.post.mk projects/ppc64/sys/conf/kern.pre.mk projects/ppc64/sys/conf/kmod.mk projects/ppc64/sys/conf/options.powerpc projects/ppc64/sys/powerpc/aim/machdep.c projects/ppc64/sys/powerpc/conf/DEFAULTS projects/ppc64/sys/powerpc/conf/GENERIC projects/ppc64/sys/powerpc/conf/MPC85XX projects/ppc64/sys/powerpc/powermac/grackle.c Modified: projects/ppc64/Makefile.inc1 ============================================================================== --- projects/ppc64/Makefile.inc1 Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/Makefile.inc1 Fri Jul 9 15:58:26 2010 (r209856) @@ -128,7 +128,7 @@ TARGET= ${TARGET_ARCH} TARGET?= ${MACHINE} TARGET_ARCH?= ${MACHINE_ARCH} -KNOWN_ARCHES?= amd64 arm i386 i386/pc98 ia64 mips powerpc powerpc64 sparc64 sparc64/sun4v +KNOWN_ARCHES?= amd64 arm i386 i386/pc98 ia64 mips powerpc powerpc64/powerpc sparc64 sparc64/sun4v .if ${TARGET} == ${TARGET_ARCH} _t= ${TARGET} .else Modified: projects/ppc64/include/Makefile ============================================================================== --- projects/ppc64/include/Makefile Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/include/Makefile Fri Jul 9 15:58:26 2010 (r209856) @@ -189,7 +189,7 @@ copies: ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ ${DESTDIR}${INCLUDEDIR}/machine/pc .endif -.if defined(_MARCH) +.if defined(_MARCH) && exists(${.CURDIR}/../sys/${_MARCH}/include) ${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \ ${DESTDIR}${INCLUDEDIR}/${_MARCH}; \ cd ${.CURDIR}/../sys/${_MARCH}/include; \ @@ -276,7 +276,7 @@ symlinks: ${DESTDIR}${INCLUDEDIR}/machine/pc; \ done .endif -.if defined(_MARCH) +.if defined(_MARCH) && exists(${.CURDIR}/../sys/${_MARCH}/include) ${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \ ${DESTDIR}${INCLUDEDIR}/${_MARCH}; \ cd ${.CURDIR}/../sys/${_MARCH}/include; \ Modified: projects/ppc64/sys/conf/Makefile.powerpc ============================================================================== --- projects/ppc64/sys/conf/Makefile.powerpc Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/conf/Makefile.powerpc Fri Jul 9 15:58:26 2010 (r209856) @@ -17,7 +17,7 @@ # # Which version of config(8) is required. -%VERSREQ= 600004 +%VERSREQ= 600010 STD8X16FONT?= iso @@ -28,6 +28,9 @@ S= ./@ S= ../../.. .endif .endif + +LDSCRIPT_NAME?= ldscript.${MACHINE_ARCH} + .include "$S/conf/kern.pre.mk" CFLAGS+= -msoft-float Modified: projects/ppc64/sys/conf/files.powerpc ============================================================================== --- projects/ppc64/sys/conf/files.powerpc Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/conf/files.powerpc Fri Jul 9 15:58:26 2010 (r209856) @@ -35,7 +35,7 @@ dev/ofw/ofw_bus_subr.c optional aim dev/ofw/ofw_console.c optional aim dev/ofw/ofw_disk.c optional ofwd aim dev/ofw/ofw_iicbus.c optional iicbus aim -dev/ofw/ofw_standard.c optional aim +dev/ofw/ofw_standard.c optional aim powerpc dev/powermac_nvram/powermac_nvram.c optional powermac_nvram powermac dev/quicc/quicc_bfe_ocp.c optional quicc mpc85xx dev/scc/scc_bfe_macio.c optional scc powermac @@ -53,36 +53,38 @@ dev/tsec/if_tsec_ocp.c optional tsec mp dev/uart/uart_bus_ocp.c optional uart mpc85xx dev/uart/uart_cpu_powerpc.c optional uart kern/syscalls.c optional ktr -libkern/ashldi3.c standard -libkern/ashrdi3.c standard +libkern/ashldi3.c optional powerpc +libkern/ashrdi3.c optional powerpc libkern/bcmp.c standard -libkern/cmpdi2.c standard -libkern/divdi3.c standard +libkern/cmpdi2.c optional powerpc +libkern/divdi3.c optional powerpc libkern/ffs.c standard libkern/ffsl.c standard libkern/fls.c standard libkern/flsl.c standard -libkern/lshrdi3.c standard +libkern/lshrdi3.c optional powerpc libkern/memmove.c standard libkern/memset.c standard -libkern/moddi3.c standard -libkern/qdivrem.c standard -libkern/ucmpdi2.c standard -libkern/udivdi3.c standard -libkern/umoddi3.c standard +libkern/moddi3.c optional powerpc +libkern/qdivrem.c optional powerpc +libkern/ucmpdi2.c optional powerpc +libkern/udivdi3.c optional powerpc +libkern/umoddi3.c optional powerpc powerpc/aim/clock.c optional aim powerpc/aim/copyinout.c optional aim powerpc/aim/interrupt.c optional aim powerpc/aim/locore.S optional aim no-obj powerpc/aim/machdep.c optional aim -powerpc/aim/mmu_oea.c optional aim +powerpc/aim/mmu_oea.c optional aim powerpc powerpc/aim/mmu_oea64.c optional aim powerpc/aim/mp_cpudep.c optional aim smp powerpc/aim/nexus.c optional aim powerpc/aim/ofw_machdep.c optional aim powerpc/aim/ofwmagic.S optional aim powerpc/aim/platform_chrp.c optional aim -powerpc/aim/swtch32.S optional aim +powerpc/aim/slb.c optional aim powerpc64 +powerpc/aim/swtch32.S optional aim powerpc +powerpc/aim/swtch64.S optional aim powerpc64 powerpc/aim/trap.c optional aim powerpc/aim/uma_machdep.c optional aim powerpc/aim/vm_machdep.c optional aim @@ -97,6 +99,7 @@ powerpc/booke/pmap.c optional e500 powerpc/booke/swtch.S optional e500 powerpc/booke/trap.c optional e500 powerpc/booke/vm_machdep.c optional e500 +powerpc/cell/celliic.c optional cell powerpc/cpufreq/dfs.c optional cpufreq powerpc/cpufreq/pcr.c optional cpufreq aim powerpc/fpu/fpu_add.c optional fpu_emu @@ -108,6 +111,11 @@ powerpc/fpu/fpu_implode.c optional fpu_e powerpc/fpu/fpu_mul.c optional fpu_emu powerpc/fpu/fpu_sqrt.c optional fpu_emu powerpc/fpu/fpu_subr.c optional fpu_emu +powerpc/mambo/mambocall.S optional mambo +powerpc/mambo/mambo.c optional mambo +powerpc/mambo/mambo_console.c optional mambo +powerpc/mambo/mambo_disk.c optional mambo +powerpc/mambo/mambo_openpic.c optional mambo powerpc/mpc85xx/atpic.c optional mpc85xx isa powerpc/mpc85xx/ds1553_bus_lbc.c optional ds1553 powerpc/mpc85xx/ds1553_core.c optional ds1553 @@ -156,7 +164,8 @@ powerpc/powerpc/db_hwwatch.c optional dd powerpc/powerpc/db_interface.c optional ddb powerpc/powerpc/db_trace.c optional ddb powerpc/powerpc/dump_machdep.c standard -powerpc/powerpc/elf32_machdep.c standard +powerpc/powerpc/elf32_machdep.c optional powerpc | compat_freebsd32 +powerpc/powerpc/elf64_machdep.c optional powerpc64 powerpc/powerpc/exec_machdep.c standard powerpc/powerpc/fpu.c optional aim powerpc/powerpc/fuswintr.c standard @@ -173,7 +182,8 @@ powerpc/powerpc/platform.c standard powerpc/powerpc/platform_if.m standard powerpc/powerpc/sc_machdep.c optional sc powerpc/powerpc/setjmp.S standard -powerpc/powerpc/sigcode32.S standard +powerpc/powerpc/sigcode32.S optional powerpc | compat_freebsd32 +powerpc/powerpc/sigcode64.S optional powerpc64 powerpc/powerpc/stack_machdep.c optional ddb | stack powerpc/powerpc/suswintr.c standard powerpc/powerpc/syncicache.c standard @@ -183,3 +193,10 @@ powerpc/psim/iobus.c optional psim powerpc/psim/ata_iobus.c optional ata psim powerpc/psim/openpic_iobus.c optional psim powerpc/psim/uart_iobus.c optional uart psim + +compat/freebsd32/freebsd32_ioctl.c optional compat_freebsd32 +compat/freebsd32/freebsd32_misc.c optional compat_freebsd32 +compat/freebsd32/freebsd32_syscalls.c optional compat_freebsd32 +compat/freebsd32/freebsd32_sysent.c optional compat_freebsd32 +kern/imgact_elf32.c optional compat_freebsd32 + Modified: projects/ppc64/sys/conf/kern.post.mk ============================================================================== --- projects/ppc64/sys/conf/kern.post.mk Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/conf/kern.post.mk Fri Jul 9 15:58:26 2010 (r209856) @@ -166,8 +166,8 @@ SRCS= assym.s vnode_if.h ${BEFORE_DEPEND mv .newdep .depend _ILINKS= machine -.if ${MACHINE} != ${MACHINE_ARCH} -_ILINKS+= ${MACHINE_ARCH} +.if ${MACHINE} != ${MACHINE_CPUARCH} +_ILINKS+= ${MACHINE_CPUARCH} .endif # Ensure that the link exists without depending on it when it exists. @@ -181,8 +181,8 @@ ${_ILINKS}: @case ${.TARGET} in \ machine) \ path=${S}/${MACHINE}/include ;; \ - ${MACHINE_ARCH}) \ - path=${S}/${MACHINE_ARCH}/include ;; \ + ${MACHINE_CPUARCH}) \ + path=${S}/${MACHINE_CPUARCH}/include ;; \ esac ; \ ${ECHO} ${.TARGET} "->" $$path ; \ ln -s $$path ${.TARGET} Modified: projects/ppc64/sys/conf/kern.pre.mk ============================================================================== --- projects/ppc64/sys/conf/kern.pre.mk Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/conf/kern.pre.mk Fri Jul 9 15:58:26 2010 (r209856) @@ -12,7 +12,7 @@ KODIR?= /boot/${KERNEL} LDSCRIPT_NAME?= ldscript.$M LDSCRIPT?= $S/conf/${LDSCRIPT_NAME} -M= ${MACHINE_ARCH} +M= ${MACHINE_CPUARCH} AWK?= awk LINT?= lint Modified: projects/ppc64/sys/conf/kmod.mk ============================================================================== --- projects/ppc64/sys/conf/kmod.mk Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/conf/kmod.mk Fri Jul 9 15:58:26 2010 (r209856) @@ -129,7 +129,7 @@ CFLAGS+= ${DEBUG_FLAGS} CFLAGS+= -fno-omit-frame-pointer .endif -.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpc64" +.if ${MACHINE_CPUARCH} == "powerpc" CFLAGS+= -mlongcall -fno-omit-frame-pointer .endif @@ -226,8 +226,8 @@ ${FULLPROG}: ${OBJS} .endif _ILINKS=@ machine -.if ${MACHINE} != ${MACHINE_ARCH} -_ILINKS+=${MACHINE_ARCH} +.if ${MACHINE} != ${MACHINE_CPUARCH} +_ILINKS+=${MACHINE_CPUARCH} .endif all: objwarn ${PROG} @@ -254,8 +254,8 @@ SYSDIR= ${_dir} ${_ILINKS}: @case ${.TARGET} in \ - ${MACHINE_ARCH}) \ - path=${SYSDIR}/${MACHINE_ARCH}/include ;; \ + ${MACHINE_CPUARCH}) \ + path=${SYSDIR}/${MACHINE_CPUARCH}/include ;; \ machine) \ path=${SYSDIR}/${MACHINE}/include ;; \ @) \ @@ -451,11 +451,11 @@ assym.s: @/kern/genassym.sh .endif sh @/kern/genassym.sh genassym.o > ${.TARGET} .if exists(@) -genassym.o: @/${MACHINE_ARCH}/${MACHINE_ARCH}/genassym.c +genassym.o: @/${MACHINE_CPUARCH}/${MACHINE_CPUARCH}/genassym.c .endif genassym.o: @ machine ${SRCS:Mopt_*.h} ${CC} -c ${CFLAGS:N-fno-common} \ - @/${MACHINE_ARCH}/${MACHINE_ARCH}/genassym.c + @/${MACHINE_CPUARCH}/${MACHINE_CPUARCH}/genassym.c .endif lint: ${SRCS} Modified: projects/ppc64/sys/conf/options.powerpc ============================================================================== --- projects/ppc64/sys/conf/options.powerpc Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/conf/options.powerpc Fri Jul 9 15:58:26 2010 (r209856) @@ -3,15 +3,22 @@ AIM opt_global.h E500 opt_global.h +CELL + +POWERPC +POWERPC64 FPU_EMU +COMPAT_FREEBSD32 opt_compat.h + GFB_DEBUG opt_gfb.h GFB_NO_FONT_LOADING opt_gfb.h GFB_NO_MODE_CHANGE opt_gfb.h POWERMAC opt_platform.h MPC85XX opt_platform.h +MAMBO opt_platform.h PSIM SC_OFWFB opt_ofwfb.h Modified: projects/ppc64/sys/powerpc/aim/machdep.c ============================================================================== --- projects/ppc64/sys/powerpc/aim/machdep.c Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/powerpc/aim/machdep.c Fri Jul 9 15:58:26 2010 (r209856) @@ -143,11 +143,7 @@ struct pcpu __pcpu[MAXCPU]; static struct trapframe frame0; -#ifdef __powerpc64__ -char machine[] = "powerpc64"; -#else char machine[] = "powerpc"; -#endif SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, machine, 0, ""); static void cpu_startup(void *); Modified: projects/ppc64/sys/powerpc/conf/DEFAULTS ============================================================================== --- projects/ppc64/sys/powerpc/conf/DEFAULTS Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/powerpc/conf/DEFAULTS Fri Jul 9 15:58:26 2010 (r209856) @@ -3,8 +3,6 @@ # # $FreeBSD$ -machine powerpc - # Pseudo devices. device mem # Memory and kernel memory devices Modified: projects/ppc64/sys/powerpc/conf/GENERIC ============================================================================== --- projects/ppc64/sys/powerpc/conf/GENERIC Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/powerpc/conf/GENERIC Fri Jul 9 15:58:26 2010 (r209856) @@ -21,6 +21,8 @@ cpu AIM ident GENERIC +machine powerpc powerpc + makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols # Platform support Added: projects/ppc64/sys/powerpc/conf/GENERIC64 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/sys/powerpc/conf/GENERIC64 Fri Jul 9 15:58:26 2010 (r209856) @@ -0,0 +1,174 @@ +# +# GENERIC -- Generic kernel configuration file for FreeBSD/powerpc +# +# For more information on this file, please read the handbook section on +# Kernel Configuration Files: +# +# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html +# +# The handbook is also available locally in /usr/share/doc/handbook +# if you've installed the doc distribution, otherwise always see the +# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the +# latest information. +# +# An exhaustive list of options and more detailed explanations of the +# device lines is also present in the ../../conf/NOTES and NOTES files. +# If you are in doubt as to the purpose or necessity of a line, check first +# in NOTES. +# +# $FreeBSD: projects/ppc64/sys/powerpc/conf/GENERIC64 -1 $ + +cpu AIM +cpu CELL +ident GENERIC + +machine powerpc powerpc64 + +#To statically compile in device wiring instead of /boot/device.hints +#hints "GENERIC.hints" + +makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols + +# Platform support +options POWERMAC #NewWorld Apple PowerMacs +options MAMBO #IBM Systemsim ppc simulator + +options SCHED_ULE #ULE scheduler +options INET #InterNETworking +options INET6 #IPv6 communications protocols +options SCTP #Stream Control Transmission Protocol +options FFS #Berkeley Fast Filesystem +options SOFTUPDATES #Enable FFS soft updates support +options UFS_ACL #Support for access control lists +options UFS_DIRHASH #Improve performance on big directories +options UFS_GJOURNAL #Enable gjournal-based UFS journaling +options MD_ROOT #MD is a potential root device +options NFSCLIENT #Network Filesystem Client +options NFSSERVER #Network Filesystem Server +options NFSLOCKD #Network Lock Manager +options NFS_ROOT #NFS usable as root device +options MSDOSFS #MSDOS Filesystem +options CD9660 #ISO 9660 Filesystem +options PROCFS #Process filesystem (requires PSEUDOFS) +options PSEUDOFS #Pseudo-filesystem framework +options GEOM_PART_GPT #GUID Partition Tables. +options GEOM_LABEL #Provides labelization +options COMPAT_43TTY #BSD 4.3 TTY compat (sgtty) +options COMPAT_FREEBSD32 #Compatible with PPC32 binaries +options COMPAT_FREEBSD5 #Compatible with FreeBSD5 +options COMPAT_FREEBSD6 #Compatible with FreeBSD6 +options COMPAT_FREEBSD7 #Compatible with FreeBSD7 +options SCSI_DELAY=5000 #Delay (in ms) before probing SCSI +options KTRACE #ktrace(1) syscall trace support +options STACK #stack(9) support +options SYSVSHM #SYSV-style shared memory +options SYSVMSG #SYSV-style message queues +options SYSVSEM #SYSV-style semaphores +options P1003_1B_SEMAPHORES # POSIX-style semaphores +options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) +options AUDIT # Security event auditing +options MAC # TrustedBSD MAC Framework + +# Debugging for use in -current +options KDB #Enable the kernel debugger +options KDB_TRACE +options DDB #Support DDB +options INVARIANTS #Enable calls of extra sanity checking +options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS +options WITNESS #Enable checks to detect deadlocks and cycles +options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed + +# To make an SMP kernel, the next line is needed +options SMP # Symmetric MultiProcessor Kernel + +# CPU frequency control +device cpufreq + +# Standard busses +device pci + +# ATA and ATAPI devices +device ata +device atadisk # ATA disk drives +device atapicd # ATAPI CDROM drives +#device atapifd # ATAPI floppy drives +#device atapist # ATAPI tape drives + +# SCSI peripherals +device scbus # SCSI bus (required for SCSI) +device da # Direct Access (disks) +device sa # Sequential Access (tape etc) +device cd # CD +device pass # Passthrough device (direct SCSI access) + +# syscons is the default console driver, resembling an SCO console +device sc +device kbdmux +options SC_OFWFB # OFW frame buffer +options SC_DFLT_FONT # compile font in +makeoptions SC_DFLT_FONT=cp437 + +# Serial (COM) ports +device scc +device uart + +# PCI Ethernet NICs that use the common MII bus controller code. +device miibus # MII bus support +device bge # Broadcom BCM570xx Gigabit Ethernet +device gem # Sun GEM/Sun ERI/Apple GMAC +device dc # DEC/Intel 21143 and various workalikes +device fxp # Intel EtherExpress PRO/100B (82557, 82558) + +# Pseudo devices. +device loop # Network loopback +device random # Entropy device +device ether # Ethernet support +device tun # Packet tunnel. +device pty # BSD-style compatibility pseudo ttys +device md # Memory "disks" +device ofwd # Open Firmware disks +device gif # IPv6 and IPv4 tunneling +device faith # IPv6-to-IPv4 relaying/(translation) + +# The `bpf' device enables the Berkeley Packet Filter. +# Be aware of the administrative consequences of enabling this! +# Note that 'bpf' is required for DHCP. +device bpf #Berkeley packet filter + +# USB support +device uhci # UHCI PCI->USB interface +device ohci # OHCI PCI->USB interface +device ehci # EHCI PCI->USB interface +device usb # USB Bus (required) +device uhid # "Human Interface Devices" +device ukbd # Keyboard +options KBD_INSTALL_CDEV # install a CDEV entry in /dev +device ulpt # Printer +device umass # Disks/Mass storage - Requires scbus and da0 +device ums # Mouse +device urio # Diamond Rio 500 MP3 player +# USB Ethernet +device aue # ADMtek USB Ethernet +device axe # ASIX Electronics USB Ethernet +device cdce # Generic USB over Ethernet +device cue # CATC USB Ethernet +device kue # Kawasaki LSI USB Ethernet + +# FireWire support +device firewire # FireWire bus code +device sbp # SCSI over FireWire (Requires scbus and da) +device fwe # Ethernet over FireWire (non-standard!) + +# Misc +device powermac_nvram # Open Firmware configuration NVRAM +device smu # Apple System Management Unit + +# ADB support +device adb +device pmu + +# Powermac I2C support +device iicbus # I2C bus code +device kiic # Keywest I2C + Added: projects/ppc64/sys/powerpc/conf/MAMBO ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/sys/powerpc/conf/MAMBO Fri Jul 9 15:58:26 2010 (r209856) @@ -0,0 +1,108 @@ +# +# GENERIC -- Generic kernel configuration file for FreeBSD/powerpc +# +# For more information on this file, please read the handbook section on +# Kernel Configuration Files: +# +# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html +# +# The handbook is also available locally in /usr/share/doc/handbook +# if you've installed the doc distribution, otherwise always see the +# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the +# latest information. +# +# An exhaustive list of options and more detailed explanations of the +# device lines is also present in the ../../conf/NOTES and NOTES files. +# If you are in doubt as to the purpose or necessity of a line, check first +# in NOTES. +# +# $FreeBSD: projects/ppc64/sys/powerpc/conf/GENERIC64 -1 $ + +cpu AIM +cpu CELL +ident GENERIC + +machine powerpc powerpc64 + +#To statically compile in device wiring instead of /boot/device.hints +#hints "GENERIC.hints" + +makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols +makeoptions MODULES_OVERRIDE="" + +# Platform support +options POWERMAC #NewWorld Apple PowerMacs +options MAMBO #IBM Systemsim ppc simulator + +options SCHED_ULE #ULE scheduler +options INET #InterNETworking +options INET6 #IPv6 communications protocols +options SCTP #Stream Control Transmission Protocol +options FFS #Berkeley Fast Filesystem +options SOFTUPDATES #Enable FFS soft updates support +options UFS_ACL #Support for access control lists +options UFS_DIRHASH #Improve performance on big directories +options UFS_GJOURNAL #Enable gjournal-based UFS journaling +options MD_ROOT #MD is a potential root device +options NFSCLIENT #Network Filesystem Client +options NFSSERVER #Network Filesystem Server +options NFSLOCKD #Network Lock Manager +options NFS_ROOT #NFS usable as root device +options MSDOSFS #MSDOS Filesystem +options CD9660 #ISO 9660 Filesystem +options PROCFS #Process filesystem (requires PSEUDOFS) +options PSEUDOFS #Pseudo-filesystem framework +options GEOM_PART_GPT #GUID Partition Tables. +options GEOM_LABEL #Provides labelization +options COMPAT_43TTY #BSD 4.3 TTY compat (sgtty) +options COMPAT_FREEBSD32 #Compatible with PPC32 binaries +options COMPAT_FREEBSD5 #Compatible with FreeBSD5 +options COMPAT_FREEBSD6 #Compatible with FreeBSD6 +options COMPAT_FREEBSD7 #Compatible with FreeBSD7 +options SCSI_DELAY=5000 #Delay (in ms) before probing SCSI +options KTRACE #ktrace(1) syscall trace support +options STACK #stack(9) support +options SYSVSHM #SYSV-style shared memory +options SYSVMSG #SYSV-style message queues +options SYSVSEM #SYSV-style semaphores +options P1003_1B_SEMAPHORES # POSIX-style semaphores +options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) +options AUDIT # Security event auditing +options MAC # TrustedBSD MAC Framework + +# Debugging for use in -current +options KDB #Enable the kernel debugger +options KDB_TRACE +options DDB #Support DDB +options INVARIANTS #Enable calls of extra sanity checking +options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS +options WITNESS #Enable checks to detect deadlocks and cycles +options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed + +# To make an SMP kernel, the next line is needed +options SMP # Symmetric MultiProcessor Kernel + +# Standard busses +device pci + +# Pseudo devices. +device loop # Network loopback +device random # Entropy device +device ether # Ethernet support +device tun # Packet tunnel. +device pty # BSD-style compatibility pseudo ttys +device md # Memory "disks" +device ofwd # Open Firmware disks +device gif # IPv6 and IPv4 tunneling +device faith # IPv6-to-IPv4 relaying/(translation) + +# The `bpf' device enables the Berkeley Packet Filter. +# Be aware of the administrative consequences of enabling this! +# Note that 'bpf' is required for DHCP. +device bpf #Berkeley packet filter + +options KTR +options KTR_COMPILE=0xffffffff +#options KTR_MASK=(KTR_SYSC) +options KTR_VERBOSE Modified: projects/ppc64/sys/powerpc/conf/MPC85XX ============================================================================== --- projects/ppc64/sys/powerpc/conf/MPC85XX Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/powerpc/conf/MPC85XX Fri Jul 9 15:58:26 2010 (r209856) @@ -7,6 +7,8 @@ cpu E500 ident MPC85XX +machine powerpc powerpc + makeoptions DEBUG="-Wa,-me500 -g" makeoptions NO_MODULES=yes Modified: projects/ppc64/sys/powerpc/powermac/grackle.c ============================================================================== --- projects/ppc64/sys/powerpc/powermac/grackle.c Fri Jul 9 14:38:06 2010 (r209855) +++ projects/ppc64/sys/powerpc/powermac/grackle.c Fri Jul 9 15:58:26 2010 (r209856) @@ -472,7 +472,7 @@ grackle_activate_resource(device_t bus, start += sc->sc_iostart; if (bootverbose) - printf("grackle mapdev: start %x, len %ld\n", start, + printf("grackle mapdev: start %lx, len %ld\n", start, rman_get_size(res)); p = pmap_mapdev(start, (vm_size_t)rman_get_size(res)); From owner-svn-src-projects@FreeBSD.ORG Fri Jul 9 16:12:04 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5B438106566B; Fri, 9 Jul 2010 16:12:04 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3173C8FC15; Fri, 9 Jul 2010 16:12:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o69GC4Aa083758; Fri, 9 Jul 2010 16:12:04 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o69GC4BD083756; Fri, 9 Jul 2010 16:12:04 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007091612.o69GC4BD083756@svn.freebsd.org> From: Nathan Whitehorn Date: Fri, 9 Jul 2010 16:12:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209857 - projects/ppc64/release X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jul 2010 16:12:04 -0000 Author: nwhitehorn Date: Fri Jul 9 16:12:03 2010 New Revision: 209857 URL: http://svn.freebsd.org/changeset/base/209857 Log: powerpc64 install CDs would be nice Modified: projects/ppc64/release/Makefile Modified: projects/ppc64/release/Makefile ============================================================================== --- projects/ppc64/release/Makefile Fri Jul 9 15:58:26 2010 (r209856) +++ projects/ppc64/release/Makefile Fri Jul 9 16:12:03 2010 (r209857) @@ -203,10 +203,16 @@ DISTRIBUTIONS?= ${BASE_DISTS} ${OTHER_DI # Build and package both GENERIC and SMP kernels if the target # has both configuration files. Otherwise only GENERIC is done. # +.if ${TARGET_ARCH} == "powerpc64" +KERN_GENERIC?= GENERIC64 +.else +KERN_GENERIC?= GENERIC +.endif + .if exists(${.CURDIR}/../sys/${TARGET}/conf/SMP) -KERNELS_BASE?= GENERIC SMP +KERNELS_BASE?= ${KERN_GENERIC} SMP .else -KERNELS_BASE?= GENERIC +KERNELS_BASE?= ${KERN_GENERIC} .endif # mountpoint for filesystems. @@ -851,7 +857,7 @@ SMALLMFSROOTFLOPPYSET= ${RD}/floppyset/m # Build boot and install floppies. floppies.1: - @${ZIPPER} -c ${RD}/kernels/GENERIC/kernel > ${RD}/kernels/kernel.gz + @${ZIPPER} -c ${RD}/kernels/${KERN_GENERIC}/kernel > ${RD}/kernels/kernel.gz @echo "Making the kernel boot floppies..." @cd ${.CURDIR} && ${MAKE} makeFloppySet FLOPPYBASE=kern \ FLOPPYDESC="Kernel" SPLITFILE=${RD}/kernels/kernel.gz @@ -985,7 +991,7 @@ cdrom.1: done .endif @echo "Copy GENERIC kernel to boot area" - @cp -Rp ${RD}/kernels/GENERIC/ ${CD_LIVEFS}/boot/kernel + @cp -Rp ${RD}/kernels/${KERN_GENERIC}/ ${CD_LIVEFS}/boot/kernel @rm -f ${CD_LIVEFS}/boot/kernel/*.symbols @rm -f ${CD_LIVEFS}/.profile @cp ${.CURDIR}/fixit.profile ${CD_LIVEFS}/.profile @@ -1003,7 +1009,7 @@ cdrom.1: .endif @echo "CD_VERSION = ${BUILDNAME}" > ${CD_LIVEFS}/cdrom.inf .if defined(MAKE_DVD) - @cp -Rp ${RD}/kernels/GENERIC/ ${CD_DVD1}/boot/kernel + @cp -Rp ${RD}/kernels/${KERN_GENERIC}/ ${CD_DVD1}/boot/kernel @rm -f ${CD_DVD1}/boot/kernel/*.symbols @rm -f ${CD_DVD1}/.profile @cp ${.CURDIR}/fixit.profile ${CD_DVD1}/.profile @@ -1321,7 +1327,7 @@ makeFloppySet: IMAGEDIR= ${RD}/image.${FSIMAGE} BOOTDIR= ${RD}/trees/base/boot HINTSFILE= ${BOOTDIR}/device.hints -ACPI_KO= ${RD}/kernels/GENERIC/acpi.ko +ACPI_KO= ${RD}/kernels/${KERN_GENERIC}/acpi.ko IMAGEFILE= ${RD}/floppies/${FSIMAGE}.flp .if defined(FDSIZE) && ${FDSIZE} == "SMALL" FLPSIZE= ${SMALLFLOPPYSIZE} From owner-svn-src-projects@FreeBSD.ORG Fri Jul 9 16:19:51 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 801781065670; Fri, 9 Jul 2010 16:19:51 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6FFFF8FC1E; Fri, 9 Jul 2010 16:19:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o69GJprb085500; Fri, 9 Jul 2010 16:19:51 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o69GJpAN085498; Fri, 9 Jul 2010 16:19:51 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007091619.o69GJpAN085498@svn.freebsd.org> From: Nathan Whitehorn Date: Fri, 9 Jul 2010 16:19:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209858 - projects/ppc64/sys/powerpc/powermac X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Jul 2010 16:19:51 -0000 Author: nwhitehorn Date: Fri Jul 9 16:19:51 2010 New Revision: 209858 URL: http://svn.freebsd.org/changeset/base/209858 Log: Fix build on ppc32. Modified: projects/ppc64/sys/powerpc/powermac/grackle.c Modified: projects/ppc64/sys/powerpc/powermac/grackle.c ============================================================================== --- projects/ppc64/sys/powerpc/powermac/grackle.c Fri Jul 9 16:12:03 2010 (r209857) +++ projects/ppc64/sys/powerpc/powermac/grackle.c Fri Jul 9 16:19:51 2010 (r209858) @@ -472,7 +472,7 @@ grackle_activate_resource(device_t bus, start += sc->sc_iostart; if (bootverbose) - printf("grackle mapdev: start %lx, len %ld\n", start, + printf("grackle mapdev: start %zx, len %ld\n", start, rman_get_size(res)); p = pmap_mapdev(start, (vm_size_t)rman_get_size(res)); From owner-svn-src-projects@FreeBSD.ORG Sat Jul 10 15:12:00 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DA51F106566B; Sat, 10 Jul 2010 15:12:00 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C9E218FC12; Sat, 10 Jul 2010 15:12:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6AFC0Ac089895; Sat, 10 Jul 2010 15:12:00 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6AFC0HY089893; Sat, 10 Jul 2010 15:12:00 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007101512.o6AFC0HY089893@svn.freebsd.org> From: Nathan Whitehorn Date: Sat, 10 Jul 2010 15:12:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209879 - in projects/ppc64/lib: libdisk libstand/powerpc64 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Jul 2010 15:12:00 -0000 Author: nwhitehorn Date: Sat Jul 10 15:12:00 2010 New Revision: 209879 URL: http://svn.freebsd.org/changeset/base/209879 Log: Remove some dead code found while merging to HEAD. Apparently tedious review of diffs is good for something. Deleted: projects/ppc64/lib/libstand/powerpc64/ Modified: projects/ppc64/lib/libdisk/Makefile Modified: projects/ppc64/lib/libdisk/Makefile ============================================================================== --- projects/ppc64/lib/libdisk/Makefile Sat Jul 10 14:45:03 2010 (r209878) +++ projects/ppc64/lib/libdisk/Makefile Sat Jul 10 15:12:00 2010 (r209879) @@ -12,8 +12,6 @@ SRCS= blocks.c ${_change} chunk.c create rules.c write_disk.c .if ${MACHINE} == "sun4v" SRCS+= write_sparc64_disk.c -.elif ${MACHINE} == "powerpc64" -SRCS+= write_powerpc_disk.c .else SRCS+= write_${MACHINE}_disk.c .endif From owner-svn-src-projects@FreeBSD.ORG Sat Jul 10 22:29:07 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 28E1C106564A; Sat, 10 Jul 2010 22:29:07 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 146428FC0A; Sat, 10 Jul 2010 22:29:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6AMT5UR086416; Sat, 10 Jul 2010 22:29:05 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6AMT5Nx086384; Sat, 10 Jul 2010 22:29:05 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201007102229.o6AMT5Nx086384@svn.freebsd.org> From: Nathan Whitehorn Date: Sat, 10 Jul 2010 22:29:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r209891 - in projects/ppc64: gnu/usr.bin/cc/cc_tools lib/bind lib/libc/sys share/mk sys/amd64/amd64 sys/amd64/include sys/arm/conf sys/conf sys/dev/ata sys/dev/ata/chipsets sys/dev/bwn ... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 10 Jul 2010 22:29:07 -0000 Author: nwhitehorn Date: Sat Jul 10 22:29:05 2010 New Revision: 209891 URL: http://svn.freebsd.org/changeset/base/209891 Log: IFC @ 209890 The first transport is away! Import from HEAD after merging most of the powerpc64 userland. Modified: projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile projects/ppc64/lib/bind/config.mk projects/ppc64/lib/libc/sys/ptrace.2 projects/ppc64/sys/amd64/amd64/pmap.c projects/ppc64/sys/amd64/include/pmap.h projects/ppc64/sys/conf/kmod.mk projects/ppc64/sys/dev/ata/ata-all.c projects/ppc64/sys/dev/ata/chipsets/ata-acerlabs.c projects/ppc64/sys/dev/ata/chipsets/ata-amd.c projects/ppc64/sys/dev/ata/chipsets/ata-highpoint.c projects/ppc64/sys/dev/ata/chipsets/ata-intel.c projects/ppc64/sys/dev/ata/chipsets/ata-ite.c projects/ppc64/sys/dev/ata/chipsets/ata-jmicron.c projects/ppc64/sys/dev/ata/chipsets/ata-marvell.c projects/ppc64/sys/dev/ata/chipsets/ata-nvidia.c projects/ppc64/sys/dev/ata/chipsets/ata-promise.c projects/ppc64/sys/dev/ata/chipsets/ata-siliconimage.c projects/ppc64/sys/dev/ata/chipsets/ata-sis.c projects/ppc64/sys/dev/ata/chipsets/ata-via.c projects/ppc64/sys/dev/bwn/if_bwn.c projects/ppc64/sys/dev/e1000/if_igb.c projects/ppc64/sys/dev/sk/if_sk.c projects/ppc64/sys/dev/twa/tw_cl.h projects/ppc64/sys/dev/twa/tw_cl_share.h projects/ppc64/sys/i386/i386/pmap.c projects/ppc64/sys/i386/include/pmap.h projects/ppc64/sys/kern/vfs_bio.c projects/ppc64/sys/vm/vm_page.c projects/ppc64/sys/vm/vm_page.h projects/ppc64/usr.sbin/fifolog/lib/fifolog_reader.c Directory Properties: projects/ppc64/ (props changed) projects/ppc64/cddl/contrib/opensolaris/ (props changed) projects/ppc64/contrib/ee/ (props changed) projects/ppc64/contrib/expat/ (props changed) projects/ppc64/contrib/file/ (props changed) projects/ppc64/contrib/gdb/ (props changed) projects/ppc64/contrib/gnu-sort/ (props changed) projects/ppc64/contrib/groff/ (props changed) projects/ppc64/contrib/less/ (props changed) projects/ppc64/contrib/libpcap/ (props changed) projects/ppc64/contrib/ncurses/ (props changed) projects/ppc64/contrib/one-true-awk/ (props changed) projects/ppc64/contrib/openbsm/ (props changed) projects/ppc64/contrib/openpam/ (props changed) projects/ppc64/contrib/pf/ (props changed) projects/ppc64/contrib/tcpdump/ (props changed) projects/ppc64/contrib/tcsh/ (props changed) projects/ppc64/contrib/tzcode/stdtime/ (props changed) projects/ppc64/contrib/tzcode/zic/ (props changed) projects/ppc64/contrib/tzdata/ (props changed) projects/ppc64/contrib/wpa/ (props changed) projects/ppc64/lib/libutil/ (props changed) projects/ppc64/lib/libz/ (props changed) projects/ppc64/sbin/ (props changed) projects/ppc64/sbin/ipfw/ (props changed) projects/ppc64/share/mk/bsd.arch.inc.mk (props changed) projects/ppc64/sys/ (props changed) projects/ppc64/sys/amd64/include/xen/ (props changed) projects/ppc64/sys/arm/conf/SHEEVAPLUG (props changed) projects/ppc64/sys/cddl/contrib/opensolaris/ (props changed) projects/ppc64/sys/contrib/dev/acpica/ (props changed) projects/ppc64/sys/contrib/x86emu/ (props changed) projects/ppc64/sys/dev/xen/xenpci/ (props changed) projects/ppc64/usr.bin/csup/ (props changed) projects/ppc64/usr.bin/procstat/ (props changed) Modified: projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile ============================================================================== --- projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/gnu/usr.bin/cc/cc_tools/Makefile Sat Jul 10 22:29:05 2010 (r209891) @@ -307,7 +307,7 @@ GENSRCS+= gcov-iov.h # Multilib config file multilib.h: -.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64" +.if ${TARGET_ARCH} == "powerpc64" echo 'static const char *const multilib_raw[] = { \ ". !m64 !m32;", \ "64:../lib m64 !m32;", \ Modified: projects/ppc64/lib/bind/config.mk ============================================================================== --- projects/ppc64/lib/bind/config.mk Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/lib/bind/config.mk Sat Jul 10 22:29:05 2010 (r209891) @@ -45,7 +45,7 @@ CFLAGS+= -DOPENSSL CFLAGS+= -DUSE_MD5 # Endianness -.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpc64" || ${MACHINE_ARCH} == "sparc64" +.if ${MACHINE_CPUARCH} == "powerpc" || ${MACHINE_CPUARCH} == "sparc64" CFLAGS+= -DWORDS_BIGENDIAN .endif @@ -66,10 +66,8 @@ CFLAGS+= -I${LIB_BIND_DIR} # Use the right version of the atomic.h file from lib/isc .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" ISC_ATOMIC_ARCH= x86_32 -.elif ${MACHINE_ARCH} == "powerpc64" -ISC_ATOMIC_ARCH= powerpc .else -ISC_ATOMIC_ARCH= ${MACHINE_ARCH} +ISC_ATOMIC_ARCH= ${MACHINE_CPUARCH} .endif # Optional features Modified: projects/ppc64/lib/libc/sys/ptrace.2 ============================================================================== --- projects/ppc64/lib/libc/sys/ptrace.2 Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/lib/libc/sys/ptrace.2 Sat Jul 10 22:29:05 2010 (r209891) @@ -2,7 +2,7 @@ .\" $NetBSD: ptrace.2,v 1.2 1995/02/27 12:35:37 cgd Exp $ .\" .\" This file is in the public domain. -.Dd May 24, 2010 +.Dd July 10, 2010 .Dt PTRACE 2 .Os .Sh NAME @@ -294,6 +294,7 @@ struct ptrace_lwpinfo { int pl_flags; sigset_t pl_sigmask; sigset_t pl_siglist; + siginfo_t pl_siginfo; }; .Ed .Pp @@ -338,13 +339,28 @@ program being executed by debuggee proce execution of a system call from the .Fn execve 2 family. +.It PL_FLAG_SI +Indicates that +.Va pl_siginfo +member of +.Vt "struct ptrace_lwpinfo" +contains valid information. .El .It pl_sigmask The current signal mask of the LWP .It pl_siglist -The current pending set of signals for the LWP. Note that signals that -are delivered to the process would not appear on an LWP siglist until -the thread is selected for delivery. +The current pending set of signals for the LWP. +Note that signals that are delivered to the process would not appear +on an LWP siglist until the thread is selected for delivery. +.It pl_siginfo +The siginfo that accompanies the signal pending. +Only valid for +.Dv PL_EVENT_SIGNAL +kind of stop, when +.Va pl_flags +has +.Dv PL_FLAG_SI +set. .El .It PT_GETNUMLWPS This request returns the number of kernel threads associated with the Modified: projects/ppc64/sys/amd64/amd64/pmap.c ============================================================================== --- projects/ppc64/sys/amd64/amd64/pmap.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/amd64/amd64/pmap.c Sat Jul 10 22:29:05 2010 (r209891) @@ -1331,19 +1331,22 @@ pmap_map(vm_offset_t *virt, vm_paddr_t s void pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count) { - pt_entry_t *endpte, oldpte, *pte; + pt_entry_t *endpte, oldpte, pa, *pte; + vm_page_t m; oldpte = 0; pte = vtopte(sva); endpte = pte + count; while (pte < endpte) { - oldpte |= *pte; - pte_store(pte, VM_PAGE_TO_PHYS(*ma) | PG_G | - pmap_cache_bits((*ma)->md.pat_mode, 0) | PG_RW | PG_V); + m = *ma++; + pa = VM_PAGE_TO_PHYS(m) | pmap_cache_bits(m->md.pat_mode, 0); + if ((*pte & (PG_FRAME | PG_PTE_CACHE)) != pa) { + oldpte |= *pte; + pte_store(pte, pa | PG_G | PG_RW | PG_V); + } pte++; - ma++; } - if ((oldpte & PG_V) != 0) + if (__predict_false((oldpte & PG_V) != 0)) pmap_invalidate_range(kernel_pmap, sva, sva + count * PAGE_SIZE); } @@ -4018,7 +4021,7 @@ pmap_remove_pages(pmap_t pmap) uint64_t inuse, bitmask; int allfree; - if (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)) { + if (pmap != PCPU_GET(curpmap)) { printf("warning: pmap_remove_pages called with non-current pmap\n"); return; } @@ -4998,11 +5001,9 @@ pmap_activate(struct thread *td) pmap = vmspace_pmap(td->td_proc->p_vmspace); oldpmap = PCPU_GET(curpmap); #ifdef SMP -if (oldpmap) /* XXX FIXME */ atomic_clear_int(&oldpmap->pm_active, PCPU_GET(cpumask)); atomic_set_int(&pmap->pm_active, PCPU_GET(cpumask)); #else -if (oldpmap) /* XXX FIXME */ oldpmap->pm_active &= ~PCPU_GET(cpumask); pmap->pm_active |= PCPU_GET(cpumask); #endif Modified: projects/ppc64/sys/amd64/include/pmap.h ============================================================================== --- projects/ppc64/sys/amd64/include/pmap.h Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/amd64/include/pmap.h Sat Jul 10 22:29:05 2010 (r209891) @@ -244,7 +244,7 @@ struct pmap { struct mtx pm_mtx; pml4_entry_t *pm_pml4; /* KVA of level 4 page table */ TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */ - u_int pm_active; /* active on cpus */ + cpumask_t pm_active; /* active on cpus */ uint32_t pm_gen_count; /* generation count (pmap lock dropped) */ u_int pm_retries; /* spare u_int here due to padding */ Modified: projects/ppc64/sys/conf/kmod.mk ============================================================================== --- projects/ppc64/sys/conf/kmod.mk Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/conf/kmod.mk Sat Jul 10 22:29:05 2010 (r209891) @@ -129,7 +129,7 @@ CFLAGS+= ${DEBUG_FLAGS} CFLAGS+= -fno-omit-frame-pointer .endif -.if ${MACHINE_CPUARCH} == "powerpc" +.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpc64" CFLAGS+= -mlongcall -fno-omit-frame-pointer .endif Modified: projects/ppc64/sys/dev/ata/ata-all.c ============================================================================== --- projects/ppc64/sys/dev/ata/ata-all.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/ata-all.c Sat Jul 10 22:29:05 2010 (r209891) @@ -105,7 +105,7 @@ SYSCTL_INT(_hw_ata, OID_AUTO, ata_dma, C "ATA disk DMA mode control"); TUNABLE_INT("hw.ata.ata_dma_check_80pin", &ata_dma_check_80pin); SYSCTL_INT(_hw_ata, OID_AUTO, ata_dma_check_80pin, - CTLFLAG_RDTUN, &ata_dma_check_80pin, 1, + CTLFLAG_RW, &ata_dma_check_80pin, 1, "Check for 80pin cable before setting ATA DMA mode"); TUNABLE_INT("hw.ata.atapi_dma", &atapi_dma); SYSCTL_INT(_hw_ata, OID_AUTO, atapi_dma, CTLFLAG_RDTUN, &atapi_dma, 0, @@ -185,27 +185,29 @@ ata_attach(device_t dev) if (ch->dma.alloc) ch->dma.alloc(dev); + mtx_lock(&ch->state_mtx); /* setup interrupt delivery */ rid = ATA_IRQ_RID; ch->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_SHAREABLE | RF_ACTIVE); if (!ch->r_irq) { device_printf(dev, "unable to allocate interrupt\n"); + mtx_unlock(&ch->state_mtx); return ENXIO; } if ((error = bus_setup_intr(dev, ch->r_irq, ATA_INTR_FLAGS, NULL, ata_interrupt, ch, &ch->ih))) { device_printf(dev, "unable to setup interrupt\n"); - return error; + goto err1; } #ifndef ATA_CAM + mtx_unlock(&ch->state_mtx); /* probe and attach devices on this channel unless we are in early boot */ if (!ata_delayed_attach) ata_identify(dev); return (0); #else - mtx_lock(&ch->state_mtx); /* Create the device queue for our SIM. */ devq = cam_simq_alloc(1); if (devq == NULL) { @@ -239,11 +241,11 @@ err3: xpt_bus_deregister(cam_sim_path(ch->sim)); err2: cam_sim_free(ch->sim, /*free_devq*/TRUE); +#endif err1: bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); mtx_unlock(&ch->state_mtx); return (error); -#endif } int Modified: projects/ppc64/sys/dev/ata/chipsets/ata-acerlabs.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-acerlabs.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-acerlabs.c Sat Jul 10 22:29:05 2010 (r209891) @@ -286,7 +286,7 @@ ata_ali_setmode(device_t dev, int target mode = min(mode, ctlr->chip->max_dma); if (ctlr->chip->cfg2 & ALI_NEW && ctlr->chip->chiprev < 0xc7) { - if (mode > ATA_UDMA2 && + if (ata_dma_check_80pin && mode > ATA_UDMA2 && pci_read_config(parent, 0x4a, 1) & (1 << ch->unit)) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; Modified: projects/ppc64/sys/dev/ata/chipsets/ata-amd.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-amd.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-amd.c Sat Jul 10 22:29:05 2010 (r209891) @@ -119,7 +119,7 @@ ata_amd_setmode(device_t dev, int target mode = min(mode, ctlr->chip->max_dma); if (ctlr->chip->cfg1 & AMD_CABLE) { - if (mode > ATA_UDMA2 && + if (ata_dma_check_80pin && mode > ATA_UDMA2 && !(pci_read_config(parent, 0x42, 1) & (1 << devno))) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; Modified: projects/ppc64/sys/dev/ata/chipsets/ata-highpoint.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-highpoint.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-highpoint.c Sat Jul 10 22:29:05 2010 (r209891) @@ -216,7 +216,7 @@ ata_highpoint_check_80pin(device_t dev, res = pci_read_config(parent, 0x5a, 1) & (ch->unit ? 0x1:0x2); pci_write_config(parent, reg, val, 1); - if (mode > ATA_UDMA2 && res) { + if (ata_dma_check_80pin && mode > ATA_UDMA2 && res) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; } Modified: projects/ppc64/sys/dev/ata/chipsets/ata-intel.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-intel.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-intel.c Sat Jul 10 22:29:05 2010 (r209891) @@ -336,7 +336,8 @@ ata_intel_new_setmode(device_t dev, int u_int8_t utimings[] = { 0x00, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02 }; mode = min(mode, ctlr->chip->max_dma); - if (mode > ATA_UDMA2 && !(reg54 & (0x10 << devno))) { + if (ata_dma_check_80pin && mode > ATA_UDMA2 && + !(reg54 & (0x10 << devno))) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; } @@ -553,8 +554,12 @@ ata_intel_31244_tf_write(struct ata_requ static void ata_intel_31244_reset(device_t dev) { + struct ata_channel *ch = device_get_softc(dev); + if (ata_sata_phy_reset(dev, -1, 1)) ata_generic_reset(dev); + else + ch->devices = 0; } ATA_DECLARE_DRIVER(ata_intel); Modified: projects/ppc64/sys/dev/ata/chipsets/ata-ite.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-ite.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-ite.c Sat Jul 10 22:29:05 2010 (r209891) @@ -139,7 +139,8 @@ ata_ite_821x_setmode(device_t dev, int t mode = min(mode, ctlr->chip->max_dma); /* check the CBLID bits for 80 conductor cable detection */ - if (mode > ATA_UDMA2 && (pci_read_config(parent, 0x40, 2) & + if (ata_dma_check_80pin && mode > ATA_UDMA2 && + (pci_read_config(parent, 0x40, 2) & (ch->unit ? (1<<3) : (1<<2)))) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; @@ -186,7 +187,8 @@ ata_ite_8213_setmode(device_t dev, int t mode = min(mode, ctlr->chip->max_dma); - if (mode > ATA_UDMA2 && !(reg54 & (0x10 << target))) { + if (ata_dma_check_80pin && mode > ATA_UDMA2 && + !(reg54 & (0x10 << target))) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; } Modified: projects/ppc64/sys/dev/ata/chipsets/ata-jmicron.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-jmicron.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-jmicron.c Sat Jul 10 22:29:05 2010 (r209891) @@ -149,7 +149,8 @@ ata_jmicron_setmode(device_t dev, int ta mode = min(mode, ctlr->chip->max_dma); /* check for 80pin cable present */ - if (mode > ATA_UDMA2 && pci_read_config(dev, 0x40, 1) & 0x08) { + if (ata_dma_check_80pin && mode > ATA_UDMA2 && + pci_read_config(dev, 0x40, 1) & 0x08) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; } Modified: projects/ppc64/sys/dev/ata/chipsets/ata-marvell.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-marvell.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-marvell.c Sat Jul 10 22:29:05 2010 (r209891) @@ -188,7 +188,8 @@ ata_marvell_setmode(device_t dev, int ta mode = min(mode, ctlr->chip->max_dma); /* Check for 80pin cable present. */ - if (mode > ATA_UDMA2 && ATA_IDX_INB(ch, ATA_BMDEVSPEC_0) & 0x01) { + if (ata_dma_check_80pin && mode > ATA_UDMA2 && + ATA_IDX_INB(ch, ATA_BMDEVSPEC_0) & 0x01) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; } @@ -578,6 +579,8 @@ ata_marvell_edma_reset(device_t dev) /* enable channel and test for devices */ if (ata_sata_phy_reset(dev, -1, 1)) ata_generic_reset(dev); + else + ch->devices = 0; /* enable EDMA machinery */ ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000001); Modified: projects/ppc64/sys/dev/ata/chipsets/ata-nvidia.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-nvidia.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-nvidia.c Sat Jul 10 22:29:05 2010 (r209891) @@ -296,8 +296,12 @@ ata_nvidia_status(device_t dev) static void ata_nvidia_reset(device_t dev) { + struct ata_channel *ch = device_get_softc(dev); + if (ata_sata_phy_reset(dev, -1, 1)) ata_generic_reset(dev); + else + ch->devices = 0; } static int Modified: projects/ppc64/sys/dev/ata/chipsets/ata-promise.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-promise.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-promise.c Sat Jul 10 22:29:05 2010 (r209891) @@ -470,7 +470,8 @@ ata_promise_setmode(device_t dev, int ta switch (ctlr->chip->cfg1) { case PR_OLD: case PR_NEW: - if (mode > ATA_UDMA2 && (pci_read_config(parent, 0x50, 2) & + if (ata_dma_check_80pin && mode > ATA_UDMA2 && + (pci_read_config(parent, 0x50, 2) & (ch->unit ? 1 << 11 : 1 << 10))) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; @@ -479,7 +480,7 @@ ata_promise_setmode(device_t dev, int ta case PR_TX: ATA_IDX_OUTB(ch, ATA_BMDEVSPEC_0, 0x0b); - if (mode > ATA_UDMA2 && + if (ata_dma_check_80pin && mode > ATA_UDMA2 && ATA_IDX_INB(ch, ATA_BMDEVSPEC_1) & 0x04) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; @@ -487,7 +488,7 @@ ata_promise_setmode(device_t dev, int ta break; case PR_MIO: - if (mode > ATA_UDMA2 && + if (ata_dma_check_80pin && mode > ATA_UDMA2 && (ATA_INL(ctlr->r_res2, (ctlr->chip->cfg2 & PR_SX4X ? 0x000c0260 : 0x0260) + (ch->unit << 7)) & 0x01000000)) { @@ -743,6 +744,8 @@ ata_promise_mio_reset(device_t dev) if (ata_sata_phy_reset(dev, -1, 1)) ata_generic_reset(dev); + else + ch->devices = 0; /* reset and enable plug/unplug intr */ ATA_OUTL(ctlr->r_res2, 0x06c, (0x00000011 << ch->unit)); Modified: projects/ppc64/sys/dev/ata/chipsets/ata-siliconimage.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-siliconimage.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-siliconimage.c Sat Jul 10 22:29:05 2010 (r209891) @@ -364,8 +364,12 @@ ata_sii_status(device_t dev) static void ata_sii_reset(device_t dev) { + struct ata_channel *ch = device_get_softc(dev); + if (ata_sata_phy_reset(dev, -1, 1)) ata_generic_reset(dev); + else + ch->devices = 0; } static int @@ -389,7 +393,8 @@ ata_sii_setmode(device_t dev, int target mode = min(mode, ctlr->chip->max_dma); if (ctlr->chip->cfg2 & SII_SETCLK) { - if (mode > ATA_UDMA2 && (pci_read_config(parent, 0x79, 1) & + if (ata_dma_check_80pin && mode > ATA_UDMA2 && + (pci_read_config(parent, 0x79, 1) & (ch->unit ? 0x02 : 0x01))) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; Modified: projects/ppc64/sys/dev/ata/chipsets/ata-sis.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-sis.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-sis.c Sat Jul 10 22:29:05 2010 (r209891) @@ -228,8 +228,12 @@ ata_sis_ch_attach(device_t dev) static void ata_sis_reset(device_t dev) { + struct ata_channel *ch = device_get_softc(dev); + if (ata_sata_phy_reset(dev, -1, 1)) ata_generic_reset(dev); + else + ch->devices = 0; } static int @@ -243,13 +247,13 @@ ata_sis_setmode(device_t dev, int target mode = min(mode, ctlr->chip->max_dma); if (ctlr->chip->cfg1 == SIS_133NEW) { - if (mode > ATA_UDMA2 && + if (ata_dma_check_80pin && mode > ATA_UDMA2 && pci_read_config(parent, ch->unit ? 0x52 : 0x50,2) & 0x8000) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; } } else { - if (mode > ATA_UDMA2 && + if (ata_dma_check_80pin && mode > ATA_UDMA2 && pci_read_config(parent, 0x48, 1)&(ch->unit ? 0x20 : 0x10)) { ata_print_cable(dev, "controller"); mode = ATA_UDMA2; Modified: projects/ppc64/sys/dev/ata/chipsets/ata-via.c ============================================================================== --- projects/ppc64/sys/dev/ata/chipsets/ata-via.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/ata/chipsets/ata-via.c Sat Jul 10 22:29:05 2010 (r209891) @@ -290,9 +290,12 @@ ata_via_reset(device_t dev) if ((ctlr->chip->cfg2 & VIABAR) && (ch->unit > 1)) ata_generic_reset(dev); - else + else { if (ata_sata_phy_reset(dev, -1, 1)) ata_generic_reset(dev); + else + ch->devices = 0; + } } static int Modified: projects/ppc64/sys/dev/bwn/if_bwn.c ============================================================================== --- projects/ppc64/sys/dev/bwn/if_bwn.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/bwn/if_bwn.c Sat Jul 10 22:29:05 2010 (r209891) @@ -9072,7 +9072,7 @@ bwn_pio_rxeof(struct bwn_pio_rxqueue *pr struct mbuf *m; uint32_t ctl32, macstat, v32; unsigned int i, padding; - uint16_t ctl16, len, v16; + uint16_t ctl16, len, totlen, v16; unsigned char *mp; char *data; @@ -9131,7 +9131,8 @@ ready: } padding = (macstat & BWN_RX_MAC_PADDING) ? 2 : 0; - KASSERT(len + padding <= MCLBYTES, ("too big..\n")); + totlen = len + padding; + KASSERT(totlen <= MCLBYTES, ("too big..\n")); m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); if (m == NULL) { device_printf(sc->sc_dev, "%s: out of memory", __func__); @@ -9139,12 +9140,12 @@ ready: } mp = mtod(m, unsigned char *); if (prq->prq_rev >= 8) { - siba_read_multi_4(sc->sc_dev, mp + padding, (len & ~3), + siba_read_multi_4(sc->sc_dev, mp, (totlen & ~3), prq->prq_base + BWN_PIO8_RXDATA); - if (len & 3) { + if (totlen & 3) { v32 = bwn_pio_rx_read_4(prq, BWN_PIO8_RXDATA); - data = &(mp[len + padding - 1]); - switch (len & 3) { + data = &(mp[totlen - 1]); + switch (totlen & 3) { case 3: *data = (v32 >> 16); data--; @@ -9156,16 +9157,16 @@ ready: } } } else { - siba_read_multi_2(sc->sc_dev, mp + padding, (len & ~1), + siba_read_multi_2(sc->sc_dev, mp, (totlen & ~1), prq->prq_base + BWN_PIO_RXDATA); - if (len & 1) { + if (totlen & 1) { v16 = bwn_pio_rx_read_2(prq, BWN_PIO_RXDATA); - mp[len + padding - 1] = v16; + mp[totlen - 1] = v16; } } m->m_pkthdr.rcvif = ifp; - m->m_len = m->m_pkthdr.len = len + padding; + m->m_len = m->m_pkthdr.len = totlen; bwn_rxeof(prq->prq_mac, m, &rxhdr); Modified: projects/ppc64/sys/dev/e1000/if_igb.c ============================================================================== --- projects/ppc64/sys/dev/e1000/if_igb.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/e1000/if_igb.c Sat Jul 10 22:29:05 2010 (r209891) @@ -2679,7 +2679,7 @@ igb_setup_interface(device_t dev, struct ifp->if_capabilities = ifp->if_capenable = 0; - ifp->if_capabilities = IFCAP_HWCSUM | IFCAP_VLAN_MTU; + ifp->if_capabilities = IFCAP_HWCSUM | IFCAP_VLAN_HWCSUM; ifp->if_capabilities |= IFCAP_TSO4; ifp->if_capabilities |= IFCAP_JUMBO_MTU; if (igb_header_split) Modified: projects/ppc64/sys/dev/sk/if_sk.c ============================================================================== --- projects/ppc64/sys/dev/sk/if_sk.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/sk/if_sk.c Sat Jul 10 22:29:05 2010 (r209891) @@ -1169,14 +1169,17 @@ sk_ioctl(ifp, command, data) break; } mask = ifr->ifr_reqcap ^ ifp->if_capenable; - if (mask & IFCAP_HWCSUM) { - ifp->if_capenable ^= IFCAP_HWCSUM; - if (IFCAP_HWCSUM & ifp->if_capenable && - IFCAP_HWCSUM & ifp->if_capabilities) - ifp->if_hwassist = SK_CSUM_FEATURES; + if ((mask & IFCAP_TXCSUM) != 0 && + (IFCAP_TXCSUM & ifp->if_capabilities) != 0) { + ifp->if_capenable ^= IFCAP_TXCSUM; + if ((ifp->if_capenable & IFCAP_TXCSUM) != 0) + ifp->if_hwassist |= SK_CSUM_FEATURES; else - ifp->if_hwassist = 0; + ifp->if_hwassist &= ~SK_CSUM_FEATURES; } + if ((mask & IFCAP_RXCSUM) != 0 && + (IFCAP_RXCSUM & ifp->if_capabilities) != 0) + ifp->if_capenable ^= IFCAP_RXCSUM; SK_IF_UNLOCK(sc_if); break; default: @@ -1363,13 +1366,23 @@ sk_attach(dev) * SK_GENESIS has a bug in checksum offload - From linux. */ if (sc_if->sk_softc->sk_type != SK_GENESIS) { - ifp->if_capabilities = IFCAP_HWCSUM; - ifp->if_hwassist = SK_CSUM_FEATURES; + ifp->if_capabilities = IFCAP_TXCSUM | IFCAP_RXCSUM; + ifp->if_hwassist = 0; } else { ifp->if_capabilities = 0; ifp->if_hwassist = 0; } ifp->if_capenable = ifp->if_capabilities; + /* + * Some revision of Yukon controller generates corrupted + * frame when TX checksum offloading is enabled. The + * frame has a valid checksum value so payload might be + * modified during TX checksum calculation. Disable TX + * checksum offloading but give users chance to enable it + * when they know their controller works without problems + * with TX checksum offloading. + */ + ifp->if_capenable &= ~IFCAP_TXCSUM; ifp->if_ioctl = sk_ioctl; ifp->if_start = sk_start; ifp->if_init = sk_init; Modified: projects/ppc64/sys/dev/twa/tw_cl.h ============================================================================== --- projects/ppc64/sys/dev/twa/tw_cl.h Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/twa/tw_cl.h Sat Jul 10 22:29:05 2010 (r209891) @@ -74,7 +74,6 @@ #define TW_CLI_PCI_CONFIG_STATUS_OFFSET 0x6 /* status register offset */ #endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ -#pragma pack(1) #ifdef TW_OSL_DEBUG struct tw_cli_q_stats { @@ -206,7 +205,6 @@ struct tw_cli_ctlr_context { #endif /* TW_OSL_DEBUG */ }; -#pragma pack() /* Modified: projects/ppc64/sys/dev/twa/tw_cl_share.h ============================================================================== --- projects/ppc64/sys/dev/twa/tw_cl_share.h Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/dev/twa/tw_cl_share.h Sat Jul 10 22:29:05 2010 (r209891) @@ -125,7 +125,6 @@ #define TW_CL_SEVERITY_DEBUG_STRING "DEBUG" -#pragma pack(1) /* * Structure, a pointer to which is used as the controller handle in @@ -190,6 +189,7 @@ struct tw_cl_req_packet { }; +#pragma pack(1) /* * Packet that describes an AEN/error generated by the controller, * Common Layer, or even the OS Layer. @@ -206,6 +206,7 @@ struct tw_cl_event_packet { TW_UINT32 event_src; TW_UINT8 severity_str[20]; }; +#pragma pack() /* Structure to link 2 adjacent elements in a list. */ @@ -215,6 +216,7 @@ struct tw_cl_link { }; +#pragma pack(1) /* Scatter/Gather list entry with 32 bit addresses. */ struct tw_cl_sg_desc32 { TW_UINT32 address; Modified: projects/ppc64/sys/i386/i386/pmap.c ============================================================================== --- projects/ppc64/sys/i386/i386/pmap.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/i386/i386/pmap.c Sat Jul 10 22:29:05 2010 (r209891) @@ -1461,19 +1461,22 @@ pmap_map(vm_offset_t *virt, vm_paddr_t s void pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count) { - pt_entry_t *endpte, oldpte, *pte; + pt_entry_t *endpte, oldpte, pa, *pte; + vm_page_t m; oldpte = 0; pte = vtopte(sva); endpte = pte + count; while (pte < endpte) { - oldpte |= *pte; - pte_store(pte, VM_PAGE_TO_PHYS(*ma) | pgeflag | - pmap_cache_bits((*ma)->md.pat_mode, 0) | PG_RW | PG_V); + m = *ma++; + pa = VM_PAGE_TO_PHYS(m) | pmap_cache_bits(m->md.pat_mode, 0); + if ((*pte & (PG_FRAME | PG_PTE_CACHE)) != pa) { + oldpte |= *pte; + pte_store(pte, pa | pgeflag | PG_RW | PG_V); + } pte++; - ma++; } - if ((oldpte & PG_V) != 0) + if (__predict_false((oldpte & PG_V) != 0)) pmap_invalidate_range(kernel_pmap, sva, sva + count * PAGE_SIZE); } @@ -4180,7 +4183,7 @@ pmap_remove_pages(pmap_t pmap) uint32_t inuse, bitmask; int allfree; - if (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)) { + if (pmap != PCPU_GET(curpmap)) { printf("warning: pmap_remove_pages called with non-current pmap\n"); return; } Modified: projects/ppc64/sys/i386/include/pmap.h ============================================================================== --- projects/ppc64/sys/i386/include/pmap.h Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/i386/include/pmap.h Sat Jul 10 22:29:05 2010 (r209891) @@ -417,7 +417,7 @@ struct pmap { struct mtx pm_mtx; pd_entry_t *pm_pdir; /* KVA of page directory */ TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */ - u_int pm_active; /* active on cpus */ + cpumask_t pm_active; /* active on cpus */ struct pmap_statistics pm_stats; /* pmap statistics */ LIST_ENTRY(pmap) pm_list; /* List of all pmaps */ uint32_t pm_gen_count; /* generation count (pmap lock dropped) */ Modified: projects/ppc64/sys/kern/vfs_bio.c ============================================================================== --- projects/ppc64/sys/kern/vfs_bio.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/kern/vfs_bio.c Sat Jul 10 22:29:05 2010 (r209891) @@ -3752,10 +3752,9 @@ tryagain: * process we are. */ p = vm_page_alloc(NULL, pg >> PAGE_SHIFT, VM_ALLOC_NOOBJ | - VM_ALLOC_SYSTEM | VM_ALLOC_WIRED); + VM_ALLOC_SYSTEM | VM_ALLOC_WIRED | + VM_ALLOC_COUNT((to - pg) >> PAGE_SHIFT)); if (!p) { - atomic_add_int(&vm_pageout_deficit, - (to - pg) >> PAGE_SHIFT); VM_WAIT; goto tryagain; } Modified: projects/ppc64/sys/vm/vm_page.c ============================================================================== --- projects/ppc64/sys/vm/vm_page.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/vm/vm_page.c Sat Jul 10 22:29:05 2010 (r209891) @@ -1264,7 +1264,8 @@ vm_page_alloc(vm_object_t object, vm_pin * Not allocatable, give up. */ mtx_unlock(&vm_page_queue_free_mtx); - atomic_add_int(&vm_pageout_deficit, 1); + atomic_add_int(&vm_pageout_deficit, + MAX((u_int)req >> VM_ALLOC_COUNT_SHIFT, 1)); pagedaemon_wakeup(); return (NULL); } @@ -2041,7 +2042,6 @@ vm_page_t vm_page_grab(vm_object_t object, vm_pindex_t pindex, int allocflags) { vm_page_t m; - u_int count; VM_OBJECT_LOCK_ASSERT(object, MA_OWNED); KASSERT((allocflags & VM_ALLOC_RETRY) != 0, @@ -2071,12 +2071,9 @@ retrylookup: } } m = vm_page_alloc(object, pindex, allocflags & ~(VM_ALLOC_RETRY | - VM_ALLOC_IGN_SBUSY | VM_ALLOC_COUNT_MASK)); + VM_ALLOC_IGN_SBUSY)); if (m == NULL) { VM_OBJECT_UNLOCK(object); - count = (u_int)allocflags >> VM_ALLOC_COUNT_SHIFT; - if (count > 0) - atomic_add_int(&vm_pageout_deficit, count); VM_WAIT; VM_OBJECT_LOCK(object); goto retrylookup; Modified: projects/ppc64/sys/vm/vm_page.h ============================================================================== --- projects/ppc64/sys/vm/vm_page.h Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/sys/vm/vm_page.h Sat Jul 10 22:29:05 2010 (r209891) @@ -321,7 +321,6 @@ extern struct vpglocks vm_page_queue_loc #define VM_ALLOC_COUNT_SHIFT 16 #define VM_ALLOC_COUNT(count) ((count) << VM_ALLOC_COUNT_SHIFT) -#define VM_ALLOC_COUNT_MASK VM_ALLOC_COUNT(0xffff) void vm_page_flag_set(vm_page_t m, unsigned short bits); void vm_page_flag_clear(vm_page_t m, unsigned short bits); Modified: projects/ppc64/usr.sbin/fifolog/lib/fifolog_reader.c ============================================================================== --- projects/ppc64/usr.sbin/fifolog/lib/fifolog_reader.c Sat Jul 10 22:07:48 2010 (r209890) +++ projects/ppc64/usr.sbin/fifolog/lib/fifolog_reader.c Sat Jul 10 22:29:05 2010 (r209891) @@ -304,8 +304,10 @@ fifolog_reader_process(struct fifolog_re if (i == Z_STREAM_END) { i = inflateReset(zs); } - if (i != Z_OK) + if (i != Z_OK) { fprintf(stderr, "inflate = %d\n", i); + exit (250); + } assert(i == Z_OK); if (zs->avail_out != fr->olen) { q = fr->obuf + (fr->olen - zs->avail_out);