From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 00:14:57 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8FFFE106564A; Sun, 12 Jun 2011 00:14:57 +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 80F898FC08; Sun, 12 Jun 2011 00:14:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5C0EvCk000105; Sun, 12 Jun 2011 00:14:57 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5C0Evw4000103; Sun, 12 Jun 2011 00:14:57 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201106120014.p5C0Evw4000103@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 12 Jun 2011 00:14:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223001 - head/release/powerpc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 00:14:57 -0000 Author: nwhitehorn Date: Sun Jun 12 00:14:57 2011 New Revision: 223001 URL: http://svn.freebsd.org/changeset/base/223001 Log: Add an MBR to our release media to aid booting some IBM systems. Modified: head/release/powerpc/mkisoimages.sh Modified: head/release/powerpc/mkisoimages.sh ============================================================================== --- head/release/powerpc/mkisoimages.sh Sat Jun 11 22:23:25 2011 (r223000) +++ head/release/powerpc/mkisoimages.sh Sun Jun 12 00:14:57 2011 (r223001) @@ -43,6 +43,8 @@ if [ "x$1" = "x-b" ]; then boot &device;:&partition;,\ppc\chrp\loader EOF + bootable="$bootable -o chrp-boot" + shift else bootable="" From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 01:48:31 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 82991106564A; Sun, 12 Jun 2011 01:48:31 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 72AEB8FC0A; Sun, 12 Jun 2011 01:48:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5C1mVFL002919; Sun, 12 Jun 2011 01:48:31 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5C1mVk5002917; Sun, 12 Jun 2011 01:48:31 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201106120148.p5C1mVk5002917@svn.freebsd.org> From: Rick Macklem Date: Sun, 12 Jun 2011 01:48:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223002 - stable/8/sys/nfsclient X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 01:48:31 -0000 Author: rmacklem Date: Sun Jun 12 01:48:31 2011 New Revision: 223002 URL: http://svn.freebsd.org/changeset/base/223002 Log: MFC: r222464 Add a check for MNTK_UNMOUNTF at the beginning of nfs_sync() in the old NFS client so that a forced dismount doesn't get stuck in the VFS_SYNC() call that happens before VFS_UNMOUNT() in dounmount(). Analagous to r222329 for the new NFS client. An additional change is needed before forced dismounts will work. Modified: stable/8/sys/nfsclient/nfs_vfsops.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/nfsclient/nfs_vfsops.c ============================================================================== --- stable/8/sys/nfsclient/nfs_vfsops.c Sun Jun 12 00:14:57 2011 (r223001) +++ stable/8/sys/nfsclient/nfs_vfsops.c Sun Jun 12 01:48:31 2011 (r223002) @@ -1406,10 +1406,20 @@ nfs_sync(struct mount *mp, int waitfor) td = curthread; + MNT_ILOCK(mp); + /* + * If a forced dismount is in progress, return from here so that + * the umount(2) syscall doesn't get stuck in VFS_SYNC() before + * calling VFS_UNMOUNT(). + */ + if ((mp->mnt_kern_flag & MNTK_UNMOUNTF) != 0) { + MNT_IUNLOCK(mp); + return (EBADF); + } + /* * Force stale buffer cache information to be flushed. */ - MNT_ILOCK(mp); loop: MNT_VNODE_FOREACH(vp, mp, mvp) { VI_LOCK(vp); From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 02:05:59 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CFFFC106564A; Sun, 12 Jun 2011 02:05:59 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 86FAF8FC0A; Sun, 12 Jun 2011 02:05:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5C25x9L003480; Sun, 12 Jun 2011 02:05:59 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5C25xoO003478; Sun, 12 Jun 2011 02:05:59 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201106120205.p5C25xoO003478@svn.freebsd.org> From: Rick Macklem Date: Sun, 12 Jun 2011 02:05:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223003 - stable/8/sbin/umount X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 02:05:59 -0000 Author: rmacklem Date: Sun Jun 12 02:05:59 2011 New Revision: 223003 URL: http://svn.freebsd.org/changeset/base/223003 Log: MFC: r222466 Modify the umount(8) command so that it doesn't do a sync(2) syscall before unmount(2) for the "-f" case. This avoids a forced dismount from getting stuck for an NFS mountpoint in sync() when the server is not responsive. With this commit, forced dismounts should normally work for the NFS clients, but can take up to about 1minute to complete. Modified: stable/8/sbin/umount/umount.c Directory Properties: stable/8/sbin/umount/ (props changed) Modified: stable/8/sbin/umount/umount.c ============================================================================== --- stable/8/sbin/umount/umount.c Sun Jun 12 01:48:31 2011 (r223002) +++ stable/8/sbin/umount/umount.c Sun Jun 12 02:05:59 2011 (r223003) @@ -90,9 +90,6 @@ main(int argc, char *argv[]) struct statfs *mntbuf, *sfs; struct addrinfo hints; - /* Start disks transferring immediately. */ - sync(); - all = errs = 0; while ((ch = getopt(argc, argv, "AaF:fh:t:v")) != -1) switch (ch) { @@ -127,6 +124,10 @@ main(int argc, char *argv[]) argc -= optind; argv += optind; + /* Start disks transferring immediately. */ + if ((fflag & MNT_FORCE) == 0) + sync(); + if ((argc == 0 && !all) || (argc != 0 && all)) usage(); From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 05:22:37 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 70279106564A; Sun, 12 Jun 2011 05:22:37 +0000 (UTC) (envelope-from doconnor@gsoft.com.au) Received: from cain.gsoft.com.au (unknown [IPv6:2001:44b8:7c07:5581:266:e1ff:fe0c:8f16]) by mx1.freebsd.org (Postfix) with ESMTP id D8C048FC17; Sun, 12 Jun 2011 05:22:36 +0000 (UTC) Received: from ur.dons.net.au (ppp203-122-208-116.lns5.adl6.internode.on.net [203.122.208.116]) (authenticated bits=0) by cain.gsoft.com.au (8.14.4/8.14.3) with ESMTP id p5C5MX82053218 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Sun, 12 Jun 2011 14:52:34 +0930 (CST) (envelope-from doconnor@gsoft.com.au) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: "Daniel O'Connor" In-Reply-To: Date: Sun, 12 Jun 2011 14:52:32 +0930 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201106110908.p5B98kkE066709@svn.freebsd.org> To: Robert Watson X-Mailer: Apple Mail (2.1084) X-Spam-Score: 0.163 () BAYES_00,RDNS_DYNAMIC X-Scanned-By: MIMEDefang 2.67 on 203.31.81.10 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Joel Dahl Subject: Re: svn commit: r222980 - in head/sys: amd64/conf i386/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 05:22:37 -0000 On 11/06/2011, at 22:37, Robert Watson wrote: > While it seems like memory is "free" these days, that's not really the = case. The base kernel footprint is quite observable in VM = configurations, where it's common to configure quite low memory = footprints -- 256M, 512M, etc, in order to improve VM density. Speaking of memory - does loading something as a module impact on memory = consumption by the kernel (one way or the other)? ie would it be a penalty to load stuff as a module, especially if you = start loading 10's of them. (That said, I'm a fan of a small base kernel + modules for the many = reasons listed in this thread :) -- Daniel O'Connor software and network engineer for Genesis Software - http://www.gsoft.com.au "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 06:56:07 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A96BC106567A for ; Sun, 12 Jun 2011 06:56:07 +0000 (UTC) (envelope-from silby@silby.com) Received: from relay01.pair.com (relay01.pair.com [209.68.5.15]) by mx1.freebsd.org (Postfix) with SMTP id 275778FC19 for ; Sun, 12 Jun 2011 06:56:06 +0000 (UTC) Received: (qmail 26061 invoked from network); 12 Jun 2011 06:56:05 -0000 Received: from 209.68.2.70 (HELO localhost) (209.68.2.70) by relay01.pair.com with SMTP; 12 Jun 2011 06:56:05 -0000 X-pair-Authenticated: 209.68.2.70 Date: Sun, 12 Jun 2011 01:56:05 -0500 (CDT) From: Mike Silbersack X-X-Sender: silby@telemachus.local To: John Baldwin In-Reply-To: <201106030944.36200.jhb@freebsd.org> Message-ID: References: <201105022105.p42L5q3j054498@svn.freebsd.org> <4DCE93BF.7000803@FreeBSD.org> <86boz5fby1.fsf@kopusha.home.net> <201106030944.36200.jhb@freebsd.org> User-Agent: Alpine 2.00 (OSX 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, Mikolaj Golub , svn-src-head@freebsd.org, Bjoern Zeeb , Mike Silbersack , Lawrence Stewart Subject: Re: svn commit: r221346 - head/sys/netinet X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 06:56:07 -0000 On Fri, 3 Jun 2011, John Baldwin wrote: > On Saturday, May 14, 2011 1:07:18 pm Mikolaj Golub wrote: >> >> On Sat, 14 May 2011 10:37:51 -0400 John Baldwin wrote: >> >> JB> Can you capture a tcpdump (probably easiest to do from the other host)? >> >> I replaced the asserts with log statements to make the host not panic and the >> captured dump survive. > > Please try this change. What is happening is that you have a remaining > window that is smaller than the window scale. You are receiving zero > window updates that are received ok (becuase the socket buffer isn't > completely empty), and that advance rcv_nxt. However, tcp_output() is > not advancing rcv_adv because 'recwin' is calculated as zero. My > invariants had assumed that the ACK that gets forced out for a reply > to a zero window probe would move rcv_adv, but that isn't happening. > This patch will allow rcv_adv to advance when a zero window probe is > ACK'd. I'm not sure if this is the best way to fix this, but I think > it will fix it: > > Index: tcp_output.c > =================================================================== > --- tcp_output.c (revision 222565) > +++ tcp_output.c (working copy) > @@ -1331,7 +1331,7 @@ out: > * then remember the size of the advertised window. > * Any pending ACK has now been sent. > */ > - if (recwin > 0 && SEQ_GT(tp->rcv_nxt + recwin, tp->rcv_adv)) > + if (recwin >= 0 && SEQ_GT(tp->rcv_nxt + recwin, tp->rcv_adv)) > tp->rcv_adv = tp->rcv_nxt + recwin; > tp->last_ack_sent = tp->rcv_nxt; > tp->t_flags &= ~(TF_ACKNOW | TF_DELACK); > > > -- > John Baldwin This change looks ok to me. I can't think of a better way to solve the problem, and I don't see it causing any major change in behavior. Mike "Silby" Silbersack From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 08:48:55 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43548106564A; Sun, 12 Jun 2011 08:48:55 +0000 (UTC) (envelope-from bruce@cran.org.uk) Received: from muon.cran.org.uk (muon.cran.org.uk [IPv6:2a01:348:0:15:5d59:5c40:0:1]) by mx1.freebsd.org (Postfix) with ESMTP id CD2A08FC1F; Sun, 12 Jun 2011 08:48:54 +0000 (UTC) Received: from muon.cran.org.uk (localhost [127.0.0.1]) by muon.cran.org.uk (Postfix) with ESMTP id C379BE63C6; Sun, 12 Jun 2011 09:48:53 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=cran.org.uk; h=message-id :date:from:mime-version:to:cc:subject:references:in-reply-to :content-type:content-transfer-encoding; s=mail; bh=ZKMzMy6z6fmj cn/d/On3j8ACEHk=; b=LMFi7TM0GabR8l6RXNYecw53e+/07mY/c9UQB/tGAX9O jweA2LvjBuAPxdTJy7jnt/M1R7CVrOkNEqv3bkhgCqpoDtRVuZ24UMfLF9fHXQ1W RjNv+tfqur4+n5iNZNFEdhu+TLqxLLXs6XrKwRJFBjkvTmDhgmjHCxDFxFzkbrs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=cran.org.uk; h=message-id :date:from:mime-version:to:cc:subject:references:in-reply-to :content-type:content-transfer-encoding; q=dns; s=mail; b=DPcql8 /lBuceQY7mgV6YwVwbnAYdtc4/wO7omOdY2ZxE1Y5heUhU2s0cyZSfBMat4xcK7B W0zDF2doeLhOWHcJXtM1/iQTGYcYr7i2WhLv9kJ+nBo0S69rhW9IGBZ5hBGyrgxx aI4EHYSsguPSXtIXuLyh1vpcOkEK5/u8TBlTA= Received: from [192.168.1.75] (188-222-18-231.zone13.bethere.co.uk [188.222.18.231]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by muon.cran.org.uk (Postfix) with ESMTPSA id 8CB37E63C5; Sun, 12 Jun 2011 09:48:53 +0100 (BST) Message-ID: <4DF47D70.4040206@cran.org.uk> Date: Sun, 12 Jun 2011 09:48:48 +0100 From: Bruce Cran User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Nathan Whitehorn References: <201106112144.p5BLi7WO093575@svn.freebsd.org> In-Reply-To: <201106112144.p5BLi7WO093575@svn.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r222998 - head/usr.sbin/bsdinstall X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 08:48:55 -0000 On 11/06/2011 22:44, Nathan Whitehorn wrote: > Author: nwhitehorn > Date: Sat Jun 11 21:44:07 2011 > New Revision: 222998 > URL: http://svn.freebsd.org/changeset/base/222998 > > Log: > Long-overdue man page for bsdinstall. > > +.Dd June 11, 2010 I guess this should be 2011? -- Bruce Cran From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 10:13:48 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9582C1065670; Sun, 12 Jun 2011 10:13:48 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 85FAA8FC13; Sun, 12 Jun 2011 10:13:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CADm6v018249; Sun, 12 Jun 2011 10:13:48 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CADmjp018247; Sun, 12 Jun 2011 10:13:48 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106121013.p5CADmjp018247@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 12 Jun 2011 10:13:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223005 - head/bin/sh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 10:13:48 -0000 Author: jilles Date: Sun Jun 12 10:13:48 2011 New Revision: 223005 URL: http://svn.freebsd.org/changeset/base/223005 Log: sh: Read .profile from the home directory (or / if HOME is not set). In most cases, login shells are started from the home directory, but not in all, such as xterm -ls. This commit depends on r222957 for read_profile() performing parameter expansion. PR: bin/50569 Modified: head/bin/sh/main.c Modified: head/bin/sh/main.c ============================================================================== --- head/bin/sh/main.c Sun Jun 12 09:18:48 2011 (r223004) +++ head/bin/sh/main.c Sun Jun 12 10:13:48 2011 (r223005) @@ -150,7 +150,7 @@ main(int argc, char *argv[]) state1: state = 2; if (privileged == 0) - read_profile(".profile"); + read_profile("${HOME-}/.profile"); else read_profile("/etc/suid_profile"); } From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 11:16:02 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: by hub.freebsd.org (Postfix, from userid 1033) id 4D0E5106566C; Sun, 12 Jun 2011 11:16:02 +0000 (UTC) Date: Sun, 12 Jun 2011 11:16:02 +0000 From: Alexey Dokuchaev To: Doug Barton Message-ID: <20110612111601.GA62801@FreeBSD.org> References: <201106110908.p5B98kkE066709@svn.freebsd.org> <4DF3B12C.8020505@FreeBSD.org> <9583277B-6EC0-4B7F-9640-2B128A96C6B8@bsdimp.com> <4DF3D633.5060506@FreeBSD.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline In-Reply-To: <4DF3D633.5060506@FreeBSD.org> User-Agent: Mutt/1.4.2.1i Cc: src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, Robert Watson , Joel Dahl , svn-src-head@FreeBSD.org, Warner Losh Subject: Re: svn commit: r222980 - in head/sys: amd64/conf i386/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 11:16:02 -0000 On Sat, Jun 11, 2011 at 01:55:15PM -0700, Doug Barton wrote: > I have 3 or 4 modules loaded via loader.conf at boot time. They take at > least 2 seconds each. IMO loading everything via loader.conf would slow > the boot so much as to be a non-starter. With my normal slim kernel with most of the modules loaded via loader.conf (other few loaded later in runtime) I have this: $ kldstat | wc -l 60 I do not observe noticeable difference compared to GENERIC kernel. Plus, users try to reboot their machines as rarely as possible, no? ./danfe From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 11:21:50 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1033) id 1C8FD1065674; Sun, 12 Jun 2011 11:21:50 +0000 (UTC) Date: Sun, 12 Jun 2011 11:21:50 +0000 From: Alexey Dokuchaev To: Pawel Jakub Dawidek Message-ID: <20110612112150.GB62801@FreeBSD.org> References: <201106110908.p5B98kkE066709@svn.freebsd.org> <75DAEF7E-F43E-427E-8AFA-586E0B56D450@bsdimp.com> <20110611184549.GB3284@garage.freebsd.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline In-Reply-To: <20110611184549.GB3284@garage.freebsd.pl> User-Agent: Mutt/1.4.2.1i Cc: Adrian Chadd , src-committers@freebsd.org, svn-src-all@freebsd.org, Robert Watson , Joel Dahl , svn-src-head@freebsd.org, Warner Losh Subject: Re: svn commit: r222980 - in head/sys: amd64/conf i386/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 11:21:50 -0000 On Sat, Jun 11, 2011 at 08:51:32PM +0200, Pawel Jakub Dawidek wrote: > On Sat, Jun 11, 2011 at 10:44:14AM -0600, Warner Losh wrote: > > I think our best bet for 9 is to strip GENERIC to the bone and have a > > 'generic.conf' if you will that loads everything we compile in today. > > I think trasz@ tried that and there is a problem. Loading modules on > boot is very slow. If you try to load everything that GENERIC has as > modules the boot will take forever. Perhaps then we need to come up with something more intelligent, i.e. do not load everything trying to get maximum coverage of users' hardware, but load only required bits based on what we see on PCI bus (roughly speaking). > On all my servers and my laptop I use such minimalistic kernels and load > everything from modules. Yes, this is very convenient and IMHO the way to go. :-) ./danfe From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 12:27:17 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 67DDB106564A; Sun, 12 Jun 2011 12:27:17 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5821D8FC08; Sun, 12 Jun 2011 12:27:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CCRHK0024661; Sun, 12 Jun 2011 12:27:17 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CCRHMw024660; Sun, 12 Jun 2011 12:27:17 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106121227.p5CCRHMw024660@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 12 Jun 2011 12:27:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223007 - head/tools/regression/bin/sh/builtins X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 12:27:17 -0000 Author: jilles Date: Sun Jun 12 12:27:17 2011 New Revision: 223007 URL: http://svn.freebsd.org/changeset/base/223007 Log: sh: Add test for case pattern matching with iso-8859-1 charset. This also passes on stable/8. Added: head/tools/regression/bin/sh/builtins/case6.0 (contents, props changed) Added: head/tools/regression/bin/sh/builtins/case6.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/case6.0 Sun Jun 12 12:27:17 2011 (r223007) @@ -0,0 +1,52 @@ +# $FreeBSD$ + +unset LC_ALL +LC_CTYPE=de_DE.ISO8859-1 +export LC_CTYPE + +c1=e +# o umlaut +c2=$(printf '\366') +# non-break space +c3=$(printf '\240') +c4=$(printf '\240') +# $c2$c3$c4 form one utf-8 character + +ok=0 +case $c1$c2$c3$c4 in +*) ok=1 ;; +esac +if [ $ok = 0 ]; then + echo wrong at $LINENO + exit 3 +fi + +case $c1$c2$c3$c4 in +$c1$c2$c3$c4) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +"$c1$c2$c3$c4") ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +????) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +[!$c2][!b][!c][!d]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +[$c1][$c2][$c3][$c4]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2$c3$c4 in +["$c1"]["$c2"]["$c3"]["$c4"]) ;; +*) echo wrong at $LINENO ;; +esac From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 12:44:03 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 02E571065676; Sun, 12 Jun 2011 12:44:03 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DE0968FC17; Sun, 12 Jun 2011 12:44:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CCi2vj025195; Sun, 12 Jun 2011 12:44:02 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CCi2l0025192; Sun, 12 Jun 2011 12:44:02 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201106121244.p5CCi2l0025192@svn.freebsd.org> From: Gabor Kovesdan Date: Sun, 12 Jun 2011 12:44:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223008 - head/usr.bin/grep X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 12:44:03 -0000 Author: gabor Date: Sun Jun 12 12:44:02 2011 New Revision: 223008 URL: http://svn.freebsd.org/changeset/base/223008 Log: - Fix -w behavior - Make -F and -w work together - Fix --color to colorize all of the matches PR: bin/156826 Submitted by: Yuri Pankov Approved by: delphij (mentor) Modified: head/usr.bin/grep/fastgrep.c head/usr.bin/grep/util.c Modified: head/usr.bin/grep/fastgrep.c ============================================================================== --- head/usr.bin/grep/fastgrep.c Sun Jun 12 12:27:17 2011 (r223007) +++ head/usr.bin/grep/fastgrep.c Sun Jun 12 12:44:02 2011 (r223008) @@ -89,7 +89,7 @@ fastcomp(fastgrep_t *fg, const char *pat fg->bol = false; fg->eol = false; fg->reversed = false; - fg->word = wflag; + fg->word = false; /* Remove end-of-line character ('$'). */ if (fg->len > 0 && pat[fg->len - 1] == '$') { Modified: head/usr.bin/grep/util.c ============================================================================== --- head/usr.bin/grep/util.c Sun Jun 12 12:27:17 2011 (r223007) +++ head/usr.bin/grep/util.c Sun Jun 12 12:44:02 2011 (r223008) @@ -301,18 +301,15 @@ procline(struct str *l, int nottext) * XXX: grep_search() is a workaround for speed up and should be * removed in the future. See fastgrep.c. */ - if (fg_pattern[i].pattern) { + if (fg_pattern[i].pattern) r = grep_search(&fg_pattern[i], (unsigned char *)l->dat, l->len, &pmatch); - r = (r == 0) ? 0 : REG_NOMATCH; - st = pmatch.rm_eo; - } else { + else r = regexec(&r_pattern[i], l->dat, 1, &pmatch, eflags); - r = (r == 0) ? 0 : REG_NOMATCH; - st = pmatch.rm_eo; - } + r = (r == 0) ? 0 : REG_NOMATCH; + st = pmatch.rm_eo; if (r == REG_NOMATCH) continue; /* Check for full match */ @@ -321,8 +318,7 @@ procline(struct str *l, int nottext) (size_t)pmatch.rm_eo != l->len) r = REG_NOMATCH; /* Check for whole word match */ - if (r == 0 && fg_pattern[i].word && - pmatch.rm_so != 0) { + if (r == 0 && (wflag || fg_pattern[i].word)) { wint_t wbegin, wend; wbegin = wend = L' '; @@ -330,11 +326,13 @@ procline(struct str *l, int nottext) sscanf(&l->dat[pmatch.rm_so - 1], "%lc", &wbegin) != 1) r = REG_NOMATCH; - else if ((size_t)pmatch.rm_eo != l->len && + else if ((size_t)pmatch.rm_eo != + l->len && sscanf(&l->dat[pmatch.rm_eo], "%lc", &wend) != 1) r = REG_NOMATCH; - else if (iswword(wbegin) || iswword(wend)) + else if (iswword(wbegin) || + iswword(wend)) r = REG_NOMATCH; } if (r == 0) { @@ -343,7 +341,8 @@ procline(struct str *l, int nottext) if (m < MAX_LINE_MATCHES) matches[m++] = pmatch; /* matches - skip further patterns */ - if ((color != NULL && !oflag) || qflag || lflag) + if ((color == NULL && !oflag) || + qflag || lflag) break; } } @@ -353,7 +352,7 @@ procline(struct str *l, int nottext) break; } /* One pass if we are not recording matches */ - if ((color != NULL && !oflag) || qflag || lflag) + if ((color == NULL && !oflag) || qflag || lflag) break; if (st == (size_t)pmatch.rm_so) From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 12:51:58 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A87C106566B; Sun, 12 Jun 2011 12:51:58 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 61FA58FC14; Sun, 12 Jun 2011 12:51:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CCpwHd025456; Sun, 12 Jun 2011 12:51:58 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CCpwSX025453; Sun, 12 Jun 2011 12:51:58 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201106121251.p5CCpwSX025453@svn.freebsd.org> From: Gabor Kovesdan Date: Sun, 12 Jun 2011 12:51:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223009 - head/usr.bin/grep X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 12:51:58 -0000 Author: gabor Date: Sun Jun 12 12:51:58 2011 New Revision: 223009 URL: http://svn.freebsd.org/changeset/base/223009 Log: - Use REG_NOSUB to bypass submatch counting when not necessary. This may yield in somewhat better performance in a few cases. Approved by: delphij (mentor) Modified: head/usr.bin/grep/grep.c head/usr.bin/grep/util.c Modified: head/usr.bin/grep/grep.c ============================================================================== --- head/usr.bin/grep/grep.c Sun Jun 12 12:44:02 2011 (r223008) +++ head/usr.bin/grep/grep.c Sun Jun 12 12:51:58 2011 (r223009) @@ -73,7 +73,7 @@ const char *errstr[] = { }; /* Flags passed to regcomp() and regexec() */ -int cflags = 0; +int cflags = REG_NOSUB; int eflags = REG_STARTEND; /* Shortcut for matching all cases like empty regex */ @@ -519,6 +519,7 @@ main(int argc, char *argv[]) break; case 'o': oflag = true; + cflags &= ~REG_NOSUB; break; case 'p': linkbehave = LINK_SKIP; @@ -552,9 +553,11 @@ main(int argc, char *argv[]) break; case 'w': wflag = true; + cflags &= ~REG_NOSUB; break; case 'x': xflag = true; + cflags &= ~REG_NOSUB; break; case 'Z': filebehave = FILE_GZIP; @@ -588,6 +591,7 @@ main(int argc, char *argv[]) strcasecmp("none", optarg) != 0 && strcasecmp("no", optarg) != 0) errx(2, getstr(3), "--color"); + cflags &= ~REG_NOSUB; break; case LABEL_OPT: label = optarg; Modified: head/usr.bin/grep/util.c ============================================================================== --- head/usr.bin/grep/util.c Sun Jun 12 12:44:02 2011 (r223008) +++ head/usr.bin/grep/util.c Sun Jun 12 12:51:58 2011 (r223009) @@ -309,7 +309,9 @@ procline(struct str *l, int nottext) r = regexec(&r_pattern[i], l->dat, 1, &pmatch, eflags); r = (r == 0) ? 0 : REG_NOMATCH; - st = pmatch.rm_eo; + st = (cflags & REG_NOSUB) + ? (size_t)l->len + : (size_t)pmatch.rm_eo; if (r == REG_NOMATCH) continue; /* Check for full match */ From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 12:54:52 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 78A85106564A; Sun, 12 Jun 2011 12:54:52 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 696958FC0C; Sun, 12 Jun 2011 12:54:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CCsqAe025633; Sun, 12 Jun 2011 12:54:52 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CCsqbW025631; Sun, 12 Jun 2011 12:54:52 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106121254.p5CCsqbW025631@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 12 Jun 2011 12:54:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223010 - head/bin/sh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 12:54:52 -0000 Author: jilles Date: Sun Jun 12 12:54:52 2011 New Revision: 223010 URL: http://svn.freebsd.org/changeset/base/223010 Log: sh: Fix locale-dependent ranges in bracket expressions. When I added UTF-8 support in r221646, the LC_COLLATE-based ordering broke because of sign extension of char. Because of libc restrictions, this does not work for UTF-8. For UTF-8 locales, ranges always use character code order. Modified: head/bin/sh/expand.c Modified: head/bin/sh/expand.c ============================================================================== --- head/bin/sh/expand.c Sun Jun 12 12:51:58 2011 (r223009) +++ head/bin/sh/expand.c Sun Jun 12 12:54:52 2011 (r223010) @@ -1430,7 +1430,7 @@ patmatch(const char *pattern, const char if (localeisutf8) wc = get_wc(&q); else - wc = *q++; + wc = (unsigned char)*q++; if (wc == '\0') return 0; break; @@ -1487,7 +1487,7 @@ patmatch(const char *pattern, const char if (localeisutf8) chr = get_wc(&q); else - chr = *q++; + chr = (unsigned char)*q++; if (chr == '\0') return 0; c = *p++; @@ -1502,7 +1502,7 @@ patmatch(const char *pattern, const char if (wc == 0) /* bad utf-8 */ return 0; } else - wc = c; + wc = (unsigned char)c; if (*p == '-' && p[1] != ']') { p++; while (*p == CTLQUOTEMARK) @@ -1514,7 +1514,7 @@ patmatch(const char *pattern, const char if (wc2 == 0) /* bad utf-8 */ return 0; } else - wc2 = *p++; + wc2 = (unsigned char)*p++; if ( collate_range_cmp(chr, wc) >= 0 && collate_range_cmp(chr, wc2) <= 0 ) From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 12:55:47 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0904B1065702; Sun, 12 Jun 2011 12:55:47 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EDADB8FC18; Sun, 12 Jun 2011 12:55:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CCtkUm025707; Sun, 12 Jun 2011 12:55:46 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CCtkwY025706; Sun, 12 Jun 2011 12:55:46 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106121255.p5CCtkwY025706@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 12 Jun 2011 12:55:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223011 - head/tools/regression/bin/sh/builtins X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 12:55:47 -0000 Author: jilles Date: Sun Jun 12 12:55:46 2011 New Revision: 223011 URL: http://svn.freebsd.org/changeset/base/223011 Log: sh: Add test for LC_COLLATE-based character ranges in case. Added: head/tools/regression/bin/sh/builtins/case7.0 (contents, props changed) Added: head/tools/regression/bin/sh/builtins/case7.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/case7.0 Sun Jun 12 12:55:46 2011 (r223011) @@ -0,0 +1,24 @@ +# $FreeBSD$ + +# Character ranges in a locale other than the POSIX locale, not specified +# by POSIX. + +unset LC_ALL +LC_CTYPE=de_DE.ISO8859-1 +export LC_CTYPE +LC_COLLATE=de_DE.ISO8859-1 +export LC_COLLATE + +c1=e +# o umlaut +c2=$(printf '\366') + +case $c1$c2 in +[a-z][a-z]) ;; +*) echo wrong at $LINENO ;; +esac + +case $c1$c2 in +[a-f][n-p]) ;; +*) echo wrong at $LINENO ;; +esac From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 14:47:11 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 16FC2106564A; Sun, 12 Jun 2011 14:47:11 +0000 (UTC) (envelope-from doconnor@gsoft.com.au) Received: from cain.gsoft.com.au (unknown [IPv6:2001:44b8:7c07:5581:266:e1ff:fe0c:8f16]) by mx1.freebsd.org (Postfix) with ESMTP id 620AB8FC0C; Sun, 12 Jun 2011 14:47:10 +0000 (UTC) Received: from ur.dons.net.au (ppp203-122-208-116.lns5.adl6.internode.on.net [203.122.208.116]) (authenticated bits=0) by cain.gsoft.com.au (8.14.4/8.14.3) with ESMTP id p5CEkumj084384 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 13 Jun 2011 00:16:57 +0930 (CST) (envelope-from doconnor@gsoft.com.au) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: "Daniel O'Connor" In-Reply-To: <20110612112150.GB62801@FreeBSD.org> Date: Mon, 13 Jun 2011 00:16:56 +0930 Content-Transfer-Encoding: quoted-printable Message-Id: <94A51677-0181-471A-B4D6-DC596C7BCBFD@gsoft.com.au> References: <201106110908.p5B98kkE066709@svn.freebsd.org> <75DAEF7E-F43E-427E-8AFA-586E0B56D450@bsdimp.com> <20110611184549.GB3284@garage.freebsd.pl> <20110612112150.GB62801@FreeBSD.org> To: Alexey Dokuchaev X-Mailer: Apple Mail (2.1084) X-Spam-Score: 0.163 () BAYES_00,RDNS_DYNAMIC X-Scanned-By: MIMEDefang 2.67 on 203.31.81.10 Cc: Adrian Chadd , src-committers@freebsd.org, Pawel Jakub Dawidek , svn-src-all@freebsd.org, Robert Watson , Joel Dahl , svn-src-head@freebsd.org, Warner Losh Subject: Re: svn commit: r222980 - in head/sys: amd64/conf i386/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 14:47:11 -0000 On 12/06/2011, at 20:51, Alexey Dokuchaev wrote: >> I think trasz@ tried that and there is a problem. Loading modules on >> boot is very slow. If you try to load everything that GENERIC has as >> modules the boot will take forever. >=20 > Perhaps then we need to come up with something more intelligent, i.e. = do not > load everything trying to get maximum coverage of users' hardware, but > load only required bits based on what we see on PCI bus (roughly = speaking). Now the tricky part is extracting supported device IDs from drivers in = an automatic fashion :) I imagine some symbol magic could be done for the general case so a tool = could extract the IDs & the bus type (so it could work for PCI & USB = which covers about 99.9% of the hardware in question). ISTR there a few modules which call some blob to determine if the module = is supported but I think it's quite rare (the 80/20 rule works for me = here :) -- Daniel O'Connor software and network engineer for Genesis Software - http://www.gsoft.com.au "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 15:19:38 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EBE26106566C; Sun, 12 Jun 2011 15:19:38 +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 DC1018FC08; Sun, 12 Jun 2011 15:19:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CFJcKK029961; Sun, 12 Jun 2011 15:19:38 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CFJce4029959; Sun, 12 Jun 2011 15:19:38 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201106121519.p5CFJce4029959@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 12 Jun 2011 15:19:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223012 - head/usr.sbin/bsdinstall X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 15:19:39 -0000 Author: nwhitehorn Date: Sun Jun 12 15:19:38 2011 New Revision: 223012 URL: http://svn.freebsd.org/changeset/base/223012 Log: I forgot what year it is, apparently. Submitted by: brucec Modified: head/usr.sbin/bsdinstall/bsdinstall.8 Modified: head/usr.sbin/bsdinstall/bsdinstall.8 ============================================================================== --- head/usr.sbin/bsdinstall/bsdinstall.8 Sun Jun 12 12:55:46 2011 (r223011) +++ head/usr.sbin/bsdinstall/bsdinstall.8 Sun Jun 12 15:19:38 2011 (r223012) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 11, 2010 +.Dd June 11, 2011 .Dt bsdinstall 8 .Os .Sh NAME From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 15:42:52 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DBA5A106566B; Sun, 12 Jun 2011 15:42:52 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C77698FC14; Sun, 12 Jun 2011 15:42:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CFgqc2030712; Sun, 12 Jun 2011 15:42:52 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CFgqCl030695; Sun, 12 Jun 2011 15:42:52 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201106121542.p5CFgqCl030695@svn.freebsd.org> From: Dimitry Andric Date: Sun, 12 Jun 2011 15:42:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223013 - in vendor/llvm/dist: . autoconf cmake/modules docs examples/HowToUseJIT include/llvm include/llvm-c include/llvm/ADT include/llvm/Analysis include/llvm/CodeGen include/llvm/Co... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 15:42:53 -0000 Author: dim Date: Sun Jun 12 15:42:51 2011 New Revision: 223013 URL: http://svn.freebsd.org/changeset/base/223013 Log: Vendor import of llvm trunk r132879: http://llvm.org/svn/llvm-project/llvm/trunk@132879 Added: vendor/llvm/dist/include/llvm/ADT/PackedVector.h vendor/llvm/dist/include/llvm/Analysis/BranchProbabilityInfo.h vendor/llvm/dist/include/llvm/DefaultPasses.h vendor/llvm/dist/include/llvm/MC/MCWin64EH.h vendor/llvm/dist/include/llvm/Support/BranchProbability.h vendor/llvm/dist/include/llvm/Support/PassManagerBuilder.h vendor/llvm/dist/include/llvm/Support/Win64EH.h vendor/llvm/dist/lib/Analysis/BranchProbabilityInfo.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/Win64Exception.cpp vendor/llvm/dist/lib/CodeGen/RegisterClassInfo.cpp vendor/llvm/dist/lib/CodeGen/RegisterClassInfo.h vendor/llvm/dist/lib/ExecutionEngine/TargetSelect.cpp vendor/llvm/dist/lib/MC/MCWin64EH.cpp vendor/llvm/dist/lib/Support/BranchProbability.cpp vendor/llvm/dist/lib/Target/Mips/MipsEmitGPRestore.cpp vendor/llvm/dist/test/Analysis/BasicAA/dag.ll vendor/llvm/dist/test/Analysis/BasicAA/must-and-partial.ll vendor/llvm/dist/test/Analysis/BasicAA/underlying-value.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/dynamic-indices.ll vendor/llvm/dist/test/Archive/check_binary_output.ll vendor/llvm/dist/test/Assembler/invalid_cast.ll vendor/llvm/dist/test/Assembler/invalid_cast2.ll vendor/llvm/dist/test/Bitcode/blockaddress.ll vendor/llvm/dist/test/Bitcode/sse42_crc32.ll vendor/llvm/dist/test/Bitcode/sse42_crc32.ll.bc (contents, props changed) vendor/llvm/dist/test/CodeGen/ARM/2011-05-04-MultipleLandingPadSuccs.ll vendor/llvm/dist/test/CodeGen/ARM/2011-06-09-TailCallByVal.ll vendor/llvm/dist/test/CodeGen/ARM/arm-modifier.ll vendor/llvm/dist/test/CodeGen/ARM/atomic-op.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-branch-folding.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-sreg2.ll vendor/llvm/dist/test/CodeGen/ARM/eh-resume-darwin.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-crash2.ll vendor/llvm/dist/test/CodeGen/ARM/intrinsics.ll vendor/llvm/dist/test/CodeGen/ARM/ldstrexd.ll vendor/llvm/dist/test/CodeGen/ARM/lsr-unfolded-offset.ll vendor/llvm/dist/test/CodeGen/Generic/promote-integers.ll vendor/llvm/dist/test/CodeGen/Generic/zero-sized-array.ll vendor/llvm/dist/test/CodeGen/Mips/2011-05-26-BranchKillsVreg.ll vendor/llvm/dist/test/CodeGen/Mips/alloca.ll vendor/llvm/dist/test/CodeGen/Mips/atomic.ll vendor/llvm/dist/test/CodeGen/Mips/double2int.ll vendor/llvm/dist/test/CodeGen/Mips/eh.ll vendor/llvm/dist/test/CodeGen/Mips/fcopysign.ll vendor/llvm/dist/test/CodeGen/Mips/frame-address.ll vendor/llvm/dist/test/CodeGen/Mips/gprestore.ll vendor/llvm/dist/test/CodeGen/Mips/i64arg.ll vendor/llvm/dist/test/CodeGen/Mips/largeimmprinting.ll vendor/llvm/dist/test/CodeGen/Mips/o32_cc_byval.ll vendor/llvm/dist/test/CodeGen/Mips/tls.ll vendor/llvm/dist/test/CodeGen/Mips/weak.ll vendor/llvm/dist/test/CodeGen/PTX/cvt.ll vendor/llvm/dist/test/CodeGen/PTX/fneg.ll vendor/llvm/dist/test/CodeGen/PTX/mad-disabling.ll vendor/llvm/dist/test/CodeGen/PTX/selp.ll vendor/llvm/dist/test/CodeGen/Thumb/2011-05-11-DAGLegalizer.ll vendor/llvm/dist/test/CodeGen/Thumb2/2011-06-07-TwoAddrEarlyClobber.ll vendor/llvm/dist/test/CodeGen/X86/2011-02-12-shuffle.ll vendor/llvm/dist/test/CodeGen/X86/2011-05-09-loaduse.ll vendor/llvm/dist/test/CodeGen/X86/2011-05-26-UnreachableBlockElim.ll vendor/llvm/dist/test/CodeGen/X86/2011-05-27-CrossClassCoalescing.ll vendor/llvm/dist/test/CodeGen/X86/2011-05-31-movmsk.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-01-fildll.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-03-x87chain.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-06-fgetsign80bit.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-19-QuicksortCoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/9601.ll vendor/llvm/dist/test/CodeGen/X86/basic-promote-integers.ll vendor/llvm/dist/test/CodeGen/X86/byval-align.ll vendor/llvm/dist/test/CodeGen/X86/dbg-const-int.ll vendor/llvm/dist/test/CodeGen/X86/dbg-const.ll vendor/llvm/dist/test/CodeGen/X86/dbg-prolog-end.ll vendor/llvm/dist/test/CodeGen/X86/dbg-value-dag-combine.ll vendor/llvm/dist/test/CodeGen/X86/dbg-value-isel.ll vendor/llvm/dist/test/CodeGen/X86/div8.ll vendor/llvm/dist/test/CodeGen/X86/eh_frame.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-agg-constant.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-extract.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-ret-ext.ll vendor/llvm/dist/test/CodeGen/X86/fold-xmm-zero.ll vendor/llvm/dist/test/CodeGen/X86/hoist-common.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-error.ll vendor/llvm/dist/test/CodeGen/X86/movntdq-no-avx.ll vendor/llvm/dist/test/CodeGen/X86/nontemporal.ll vendor/llvm/dist/test/CodeGen/X86/peep-setb.ll vendor/llvm/dist/test/CodeGen/X86/pr10068.ll vendor/llvm/dist/test/CodeGen/X86/shift-pair.ll vendor/llvm/dist/test/CodeGen/X86/sse42_64.ll vendor/llvm/dist/test/CodeGen/X86/vararg_tailcall.ll vendor/llvm/dist/test/CodeGen/X86/visibility2.ll vendor/llvm/dist/test/CodeGen/X86/x86-shifts.ll vendor/llvm/dist/test/CodeGen/XCore/misc-intrinsics.ll vendor/llvm/dist/test/DebugInfo/X86/ vendor/llvm/dist/test/DebugInfo/X86/debug_frame.ll vendor/llvm/dist/test/DebugInfo/X86/dg.exp vendor/llvm/dist/test/DebugInfo/X86/eh_symbol.ll vendor/llvm/dist/test/DebugInfo/X86/stmt-list.ll vendor/llvm/dist/test/DebugInfo/X86/subreg.ll vendor/llvm/dist/test/DebugInfo/pr9951.ll vendor/llvm/dist/test/FrontendC/ARM/ vendor/llvm/dist/test/FrontendC/ARM/dg.exp vendor/llvm/dist/test/FrontendC/ARM/inline-asm-multichar.c vendor/llvm/dist/test/FrontendC/struct-matching-constraint.c vendor/llvm/dist/test/MC/ARM/elf-thumbfunc-reloc.ll vendor/llvm/dist/test/MC/ARM/elf-thumbfunc.s vendor/llvm/dist/test/MC/ARM/xscale-attributes.ll vendor/llvm/dist/test/MC/AsmParser/directive_seh.s vendor/llvm/dist/test/MC/AsmParser/macro-args.s vendor/llvm/dist/test/MC/COFF/seh-section.s vendor/llvm/dist/test/MC/COFF/seh.s vendor/llvm/dist/test/MC/ELF/cfi-sections.s vendor/llvm/dist/test/MC/MachO/debug_frame.s vendor/llvm/dist/test/Other/X86/ vendor/llvm/dist/test/Other/X86/dg.exp vendor/llvm/dist/test/Other/X86/inline-asm-newline-terminator.ll vendor/llvm/dist/test/TableGen/SetTheory.td vendor/llvm/dist/test/Transforms/GVN/2011-06-01-NonLocalMemdepMiscompile.ll vendor/llvm/dist/test/Transforms/GVN/phi-translate-partial-alias.ll vendor/llvm/dist/test/Transforms/GlobalOpt/memset-null.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/elim-extend.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/no-iv-rewrite.ll vendor/llvm/dist/test/Transforms/Inline/inline_invoke.ll vendor/llvm/dist/test/Transforms/Inline/lifetime.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-05-02-VectorBoolean.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-05-13-InBoundsGEP.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-05-28-swapmulsub.ll vendor/llvm/dist/test/Transforms/InstCombine/x86-crc32-demanded.ll vendor/llvm/dist/test/Transforms/InstSimplify/maxmin.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/ vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/2009-11-10-LSRCrash.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/dg.exp vendor/llvm/dist/test/Transforms/LoopStrengthReduce/post-inc-icmpzero.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2011-06-02-CritSwitch.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/2011-06-02-CallSlotOverwritten.ll vendor/llvm/dist/test/Transforms/PhaseOrdering/dg.exp vendor/llvm/dist/test/Transforms/ScalarRepl/2011-05-06-CapturedAlloca.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2011-06-08-VectorExtractValue.ll vendor/llvm/dist/test/Transforms/ScalarRepl/debuginfo-preserved.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/PR9946.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/dce-cond-after-folding-terminator.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/switch-masked-bits.ll vendor/llvm/dist/test/Transforms/TailCallElim/setjmp.ll vendor/llvm/dist/test/Transforms/TailDup/X86/ vendor/llvm/dist/test/Transforms/TailDup/X86/dg.exp vendor/llvm/dist/test/Transforms/TailDup/X86/if-tail-dup.ll vendor/llvm/dist/unittests/Support/IRBuilderTest.cpp vendor/llvm/dist/utils/TableGen/CodeGenRegisters.cpp vendor/llvm/dist/utils/TableGen/SetTheory.cpp vendor/llvm/dist/utils/TableGen/SetTheory.h Deleted: vendor/llvm/dist/include/llvm/Support/StandardPasses.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfTableException.cpp vendor/llvm/dist/lib/ExecutionEngine/JIT/TargetSelect.cpp vendor/llvm/dist/lib/ExecutionEngine/MCJIT/TargetSelect.cpp vendor/llvm/dist/test/CodeGen/ARM/divmod.ll vendor/llvm/dist/test/CodeGen/Generic/2011-02-12-shuffle.ll vendor/llvm/dist/test/CodeGen/X86/2008-07-11-SpillerBug.ll vendor/llvm/dist/test/CodeGen/X86/smul-with-overflow-2.ll vendor/llvm/dist/test/CodeGen/X86/smul-with-overflow-3.ll vendor/llvm/dist/test/CodeGen/XCore/bitrev.ll vendor/llvm/dist/test/Other/inline-asm-newline-terminator.ll vendor/llvm/dist/test/Transforms/GVN/mixed.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2009-11-10-LSRCrash.ll vendor/llvm/dist/test/Transforms/TailDup/if-tail-dup.ll Modified: vendor/llvm/dist/.gitignore vendor/llvm/dist/Makefile vendor/llvm/dist/autoconf/config.guess vendor/llvm/dist/autoconf/configure.ac vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake vendor/llvm/dist/cmake/modules/LLVMProcessSources.cmake vendor/llvm/dist/configure vendor/llvm/dist/docs/AliasAnalysis.html vendor/llvm/dist/docs/CodeGenerator.html vendor/llvm/dist/docs/CompilerDriver.html vendor/llvm/dist/docs/ExceptionHandling.html vendor/llvm/dist/docs/HowToSubmitABug.html vendor/llvm/dist/docs/LangRef.html vendor/llvm/dist/docs/Projects.html vendor/llvm/dist/docs/ReleaseNotes.html vendor/llvm/dist/docs/SourceLevelDebugging.html vendor/llvm/dist/docs/TestingGuide.html vendor/llvm/dist/docs/index.html vendor/llvm/dist/examples/HowToUseJIT/HowToUseJIT.cpp vendor/llvm/dist/include/llvm-c/Core.h vendor/llvm/dist/include/llvm-c/Disassembler.h vendor/llvm/dist/include/llvm/ADT/FoldingSet.h vendor/llvm/dist/include/llvm/ADT/StringRef.h vendor/llvm/dist/include/llvm/ADT/Triple.h vendor/llvm/dist/include/llvm/Analysis/AliasAnalysis.h vendor/llvm/dist/include/llvm/Analysis/CallGraph.h vendor/llvm/dist/include/llvm/Analysis/DIBuilder.h vendor/llvm/dist/include/llvm/Analysis/DebugInfo.h vendor/llvm/dist/include/llvm/Analysis/FindUsedTypes.h vendor/llvm/dist/include/llvm/Analysis/IVUsers.h vendor/llvm/dist/include/llvm/Analysis/RegionPass.h vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h vendor/llvm/dist/include/llvm/Argument.h vendor/llvm/dist/include/llvm/Attributes.h vendor/llvm/dist/include/llvm/CodeGen/AsmPrinter.h vendor/llvm/dist/include/llvm/CodeGen/CallingConvLower.h vendor/llvm/dist/include/llvm/CodeGen/FastISel.h vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h vendor/llvm/dist/include/llvm/CodeGen/LiveInterval.h vendor/llvm/dist/include/llvm/CodeGen/MachineInstr.h vendor/llvm/dist/include/llvm/CodeGen/MachineInstrBuilder.h vendor/llvm/dist/include/llvm/CodeGen/MachineModuleInfo.h vendor/llvm/dist/include/llvm/CodeGen/MachineOperand.h vendor/llvm/dist/include/llvm/CodeGen/PseudoSourceValue.h vendor/llvm/dist/include/llvm/CodeGen/RegAllocPBQP.h vendor/llvm/dist/include/llvm/CodeGen/ScheduleDAG.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h vendor/llvm/dist/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h vendor/llvm/dist/include/llvm/CompilerDriver/Common.td vendor/llvm/dist/include/llvm/Config/llvm-config.h.cmake vendor/llvm/dist/include/llvm/ExecutionEngine/ExecutionEngine.h vendor/llvm/dist/include/llvm/Function.h vendor/llvm/dist/include/llvm/InitializePasses.h vendor/llvm/dist/include/llvm/IntrinsicInst.h vendor/llvm/dist/include/llvm/Intrinsics.td vendor/llvm/dist/include/llvm/IntrinsicsARM.td vendor/llvm/dist/include/llvm/IntrinsicsX86.td vendor/llvm/dist/include/llvm/IntrinsicsXCore.td vendor/llvm/dist/include/llvm/LinkAllPasses.h vendor/llvm/dist/include/llvm/MC/MCAsmInfo.h vendor/llvm/dist/include/llvm/MC/MCDwarf.h vendor/llvm/dist/include/llvm/MC/MCELFSymbolFlags.h vendor/llvm/dist/include/llvm/MC/MCExpr.h vendor/llvm/dist/include/llvm/MC/MCInstPrinter.h vendor/llvm/dist/include/llvm/MC/MCParser/MCAsmLexer.h vendor/llvm/dist/include/llvm/MC/MCParser/MCAsmParser.h vendor/llvm/dist/include/llvm/MC/MCParser/MCAsmParserExtension.h vendor/llvm/dist/include/llvm/MC/MCStreamer.h vendor/llvm/dist/include/llvm/Metadata.h vendor/llvm/dist/include/llvm/Operator.h vendor/llvm/dist/include/llvm/Support/Casting.h vendor/llvm/dist/include/llvm/Support/CrashRecoveryContext.h vendor/llvm/dist/include/llvm/Support/Dwarf.h vendor/llvm/dist/include/llvm/Support/IRBuilder.h vendor/llvm/dist/include/llvm/Support/MemoryBuffer.h vendor/llvm/dist/include/llvm/Support/PatternMatch.h vendor/llvm/dist/include/llvm/Support/Program.h vendor/llvm/dist/include/llvm/Support/SourceMgr.h vendor/llvm/dist/include/llvm/Target/Target.td vendor/llvm/dist/include/llvm/Target/TargetAsmInfo.h vendor/llvm/dist/include/llvm/Target/TargetInstrItineraries.h vendor/llvm/dist/include/llvm/Target/TargetLibraryInfo.h vendor/llvm/dist/include/llvm/Target/TargetLowering.h vendor/llvm/dist/include/llvm/Target/TargetLoweringObjectFile.h vendor/llvm/dist/include/llvm/Target/TargetOptions.h vendor/llvm/dist/include/llvm/Target/TargetRegisterInfo.h vendor/llvm/dist/include/llvm/Target/TargetSelectionDAG.td vendor/llvm/dist/include/llvm/Transforms/Instrumentation.h vendor/llvm/dist/include/llvm/Transforms/Utils/Local.h vendor/llvm/dist/include/llvm/Transforms/Utils/SSAUpdater.h vendor/llvm/dist/include/llvm/Type.h vendor/llvm/dist/lib/Analysis/Analysis.cpp vendor/llvm/dist/lib/Analysis/BasicAliasAnalysis.cpp vendor/llvm/dist/lib/Analysis/CMakeLists.txt vendor/llvm/dist/lib/Analysis/ConstantFolding.cpp vendor/llvm/dist/lib/Analysis/DIBuilder.cpp vendor/llvm/dist/lib/Analysis/IPA/CallGraph.cpp vendor/llvm/dist/lib/Analysis/IPA/CallGraphSCCPass.cpp vendor/llvm/dist/lib/Analysis/IPA/FindUsedTypes.cpp vendor/llvm/dist/lib/Analysis/IVUsers.cpp vendor/llvm/dist/lib/Analysis/InlineCost.cpp vendor/llvm/dist/lib/Analysis/InstructionSimplify.cpp vendor/llvm/dist/lib/Analysis/LazyValueInfo.cpp vendor/llvm/dist/lib/Analysis/Loads.cpp vendor/llvm/dist/lib/Analysis/MemoryDependenceAnalysis.cpp vendor/llvm/dist/lib/Analysis/RegionPass.cpp vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp vendor/llvm/dist/lib/Analysis/ValueTracking.cpp vendor/llvm/dist/lib/AsmParser/LLLexer.cpp vendor/llvm/dist/lib/AsmParser/LLLexer.h vendor/llvm/dist/lib/AsmParser/LLParser.cpp vendor/llvm/dist/lib/AsmParser/LLToken.h vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.cpp vendor/llvm/dist/lib/Bitcode/Writer/BitcodeWriter.cpp vendor/llvm/dist/lib/Bitcode/Writer/ValueEnumerator.cpp vendor/llvm/dist/lib/CodeGen/AggressiveAntiDepBreaker.cpp vendor/llvm/dist/lib/CodeGen/AggressiveAntiDepBreaker.h vendor/llvm/dist/lib/CodeGen/AllocationOrder.cpp vendor/llvm/dist/lib/CodeGen/AllocationOrder.h vendor/llvm/dist/lib/CodeGen/AntiDepBreaker.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/ARMException.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinter.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/CMakeLists.txt vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfException.h vendor/llvm/dist/lib/CodeGen/BranchFolding.cpp vendor/llvm/dist/lib/CodeGen/BranchFolding.h vendor/llvm/dist/lib/CodeGen/CMakeLists.txt vendor/llvm/dist/lib/CodeGen/CalcSpillWeights.cpp vendor/llvm/dist/lib/CodeGen/CallingConvLower.cpp vendor/llvm/dist/lib/CodeGen/CriticalAntiDepBreaker.cpp vendor/llvm/dist/lib/CodeGen/CriticalAntiDepBreaker.h vendor/llvm/dist/lib/CodeGen/DwarfEHPrepare.cpp vendor/llvm/dist/lib/CodeGen/IfConversion.cpp vendor/llvm/dist/lib/CodeGen/InlineSpiller.cpp vendor/llvm/dist/lib/CodeGen/LLVMTargetMachine.cpp vendor/llvm/dist/lib/CodeGen/LiveDebugVariables.cpp vendor/llvm/dist/lib/CodeGen/LiveDebugVariables.h vendor/llvm/dist/lib/CodeGen/LiveRangeEdit.cpp vendor/llvm/dist/lib/CodeGen/LiveRangeEdit.h vendor/llvm/dist/lib/CodeGen/MachineBasicBlock.cpp vendor/llvm/dist/lib/CodeGen/MachineFunction.cpp vendor/llvm/dist/lib/CodeGen/MachineInstr.cpp vendor/llvm/dist/lib/CodeGen/MachineRegisterInfo.cpp vendor/llvm/dist/lib/CodeGen/MachineVerifier.cpp vendor/llvm/dist/lib/CodeGen/PostRASchedulerList.cpp vendor/llvm/dist/lib/CodeGen/RegAllocBase.h vendor/llvm/dist/lib/CodeGen/RegAllocBasic.cpp vendor/llvm/dist/lib/CodeGen/RegAllocFast.cpp vendor/llvm/dist/lib/CodeGen/RegAllocGreedy.cpp vendor/llvm/dist/lib/CodeGen/RegisterScavenging.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAGInstrs.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAGInstrs.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/FastISel.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/InstrEmitter.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/TargetLowering.cpp vendor/llvm/dist/lib/CodeGen/SimpleRegisterCoalescing.cpp vendor/llvm/dist/lib/CodeGen/SimpleRegisterCoalescing.h vendor/llvm/dist/lib/CodeGen/SjLjEHPrepare.cpp vendor/llvm/dist/lib/CodeGen/SplitKit.cpp vendor/llvm/dist/lib/CodeGen/SplitKit.h vendor/llvm/dist/lib/CodeGen/TailDuplication.cpp vendor/llvm/dist/lib/CodeGen/TargetInstrInfoImpl.cpp vendor/llvm/dist/lib/CodeGen/TargetLoweringObjectFileImpl.cpp vendor/llvm/dist/lib/CodeGen/TwoAddressInstructionPass.cpp vendor/llvm/dist/lib/CodeGen/UnreachableBlockElim.cpp vendor/llvm/dist/lib/CodeGen/VirtRegMap.cpp vendor/llvm/dist/lib/ExecutionEngine/CMakeLists.txt vendor/llvm/dist/lib/ExecutionEngine/ExecutionEngine.cpp vendor/llvm/dist/lib/ExecutionEngine/JIT/CMakeLists.txt vendor/llvm/dist/lib/ExecutionEngine/JIT/JIT.cpp vendor/llvm/dist/lib/ExecutionEngine/JIT/JIT.h vendor/llvm/dist/lib/ExecutionEngine/MCJIT/CMakeLists.txt vendor/llvm/dist/lib/ExecutionEngine/MCJIT/MCJIT.cpp vendor/llvm/dist/lib/ExecutionEngine/MCJIT/MCJIT.h vendor/llvm/dist/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp vendor/llvm/dist/lib/MC/CMakeLists.txt vendor/llvm/dist/lib/MC/ELFObjectWriter.cpp vendor/llvm/dist/lib/MC/ELFObjectWriter.h vendor/llvm/dist/lib/MC/MCAsmInfo.cpp vendor/llvm/dist/lib/MC/MCAsmInfoDarwin.cpp vendor/llvm/dist/lib/MC/MCAsmStreamer.cpp vendor/llvm/dist/lib/MC/MCAssembler.cpp vendor/llvm/dist/lib/MC/MCDisassembler/Disassembler.cpp vendor/llvm/dist/lib/MC/MCDwarf.cpp vendor/llvm/dist/lib/MC/MCELF.cpp vendor/llvm/dist/lib/MC/MCELFStreamer.cpp vendor/llvm/dist/lib/MC/MCExpr.cpp vendor/llvm/dist/lib/MC/MCInstPrinter.cpp vendor/llvm/dist/lib/MC/MCMachOStreamer.cpp vendor/llvm/dist/lib/MC/MCObjectStreamer.cpp vendor/llvm/dist/lib/MC/MCParser/AsmLexer.cpp vendor/llvm/dist/lib/MC/MCParser/AsmParser.cpp vendor/llvm/dist/lib/MC/MCParser/COFFAsmParser.cpp vendor/llvm/dist/lib/MC/MCParser/DarwinAsmParser.cpp vendor/llvm/dist/lib/MC/MCStreamer.cpp vendor/llvm/dist/lib/MC/WinCOFFStreamer.cpp vendor/llvm/dist/lib/Support/APInt.cpp vendor/llvm/dist/lib/Support/CMakeLists.txt vendor/llvm/dist/lib/Support/Dwarf.cpp vendor/llvm/dist/lib/Support/FoldingSet.cpp vendor/llvm/dist/lib/Support/Host.cpp vendor/llvm/dist/lib/Support/MemoryBuffer.cpp vendor/llvm/dist/lib/Support/SourceMgr.cpp vendor/llvm/dist/lib/Support/Unix/Host.inc vendor/llvm/dist/lib/Support/Unix/Program.inc vendor/llvm/dist/lib/Support/Windows/Program.inc vendor/llvm/dist/lib/Target/ARM/ARMAsmBackend.cpp vendor/llvm/dist/lib/Target/ARM/ARMAsmPrinter.cpp vendor/llvm/dist/lib/Target/ARM/ARMAsmPrinter.h vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.h vendor/llvm/dist/lib/Target/ARM/ARMCodeEmitter.cpp vendor/llvm/dist/lib/Target/ARM/ARMFastISel.cpp vendor/llvm/dist/lib/Target/ARM/ARMFixupKinds.h vendor/llvm/dist/lib/Target/ARM/ARMISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.h vendor/llvm/dist/lib/Target/ARM/ARMInstrFormats.td vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.td vendor/llvm/dist/lib/Target/ARM/ARMInstrNEON.td vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb.td vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb2.td vendor/llvm/dist/lib/Target/ARM/ARMLoadStoreOptimizer.cpp vendor/llvm/dist/lib/Target/ARM/ARMMCAsmInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/ARM/ARMPerfectShuffle.h vendor/llvm/dist/lib/Target/ARM/ARMRegisterInfo.td vendor/llvm/dist/lib/Target/ARM/ARMSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMSelectionDAGInfo.h vendor/llvm/dist/lib/Target/ARM/AsmParser/ARMAsmParser.cpp vendor/llvm/dist/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp vendor/llvm/dist/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h vendor/llvm/dist/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp vendor/llvm/dist/lib/Target/ARM/InstPrinter/ARMInstPrinter.h vendor/llvm/dist/lib/Target/ARM/Thumb1RegisterInfo.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaISelLowering.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaISelLowering.h vendor/llvm/dist/lib/Target/Alpha/AlphaRegisterInfo.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaRegisterInfo.h vendor/llvm/dist/lib/Target/Alpha/AlphaRegisterInfo.td vendor/llvm/dist/lib/Target/Blackfin/BlackfinFrameLowering.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinFrameLowering.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinISelLowering.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinISelLowering.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinInstrInfo.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinRegisterInfo.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinRegisterInfo.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinRegisterInfo.td vendor/llvm/dist/lib/Target/CBackend/CBackend.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUISelLowering.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUISelLowering.h vendor/llvm/dist/lib/Target/CellSPU/SPURegisterInfo.cpp vendor/llvm/dist/lib/Target/CellSPU/SPURegisterInfo.h vendor/llvm/dist/lib/Target/CellSPU/SPURegisterInfo.td vendor/llvm/dist/lib/Target/MBlaze/MBlazeISelLowering.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeISelLowering.h vendor/llvm/dist/lib/Target/MBlaze/MBlazeInstrInfo.td vendor/llvm/dist/lib/Target/MBlaze/MBlazeRegisterInfo.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeRegisterInfo.h vendor/llvm/dist/lib/Target/MBlaze/MBlazeRegisterInfo.td vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.h vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.h vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.td vendor/llvm/dist/lib/Target/Mips/CMakeLists.txt vendor/llvm/dist/lib/Target/Mips/Mips.h vendor/llvm/dist/lib/Target/Mips/MipsAsmPrinter.cpp vendor/llvm/dist/lib/Target/Mips/MipsFrameLowering.cpp vendor/llvm/dist/lib/Target/Mips/MipsFrameLowering.h vendor/llvm/dist/lib/Target/Mips/MipsISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.cpp vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.h vendor/llvm/dist/lib/Target/Mips/MipsInstrFPU.td vendor/llvm/dist/lib/Target/Mips/MipsInstrFormats.td vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.h vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.td vendor/llvm/dist/lib/Target/Mips/MipsMCAsmInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsMachineFunction.h vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.h vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.td vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.cpp vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.h vendor/llvm/dist/lib/Target/PTX/PTX.td vendor/llvm/dist/lib/Target/PTX/PTXISelLowering.cpp vendor/llvm/dist/lib/Target/PTX/PTXISelLowering.h vendor/llvm/dist/lib/Target/PTX/PTXInstrInfo.td vendor/llvm/dist/lib/Target/PTX/PTXRegisterInfo.h vendor/llvm/dist/lib/Target/PTX/PTXSubtarget.cpp vendor/llvm/dist/lib/Target/PTX/PTXSubtarget.h vendor/llvm/dist/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp vendor/llvm/dist/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h vendor/llvm/dist/lib/Target/PowerPC/PPC.h vendor/llvm/dist/lib/Target/PowerPC/PPCAsmPrinter.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCFrameLowering.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCHazardRecognizers.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.h vendor/llvm/dist/lib/Target/PowerPC/PPCInstr64Bit.td vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.td vendor/llvm/dist/lib/Target/PowerPC/PPCMCAsmInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCMCInstLower.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.td vendor/llvm/dist/lib/Target/README.txt vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.cpp vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.h vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.cpp vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.h vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.td vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.h vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.h vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.td vendor/llvm/dist/lib/Target/TargetLibraryInfo.cpp vendor/llvm/dist/lib/Target/TargetLoweringObjectFile.cpp vendor/llvm/dist/lib/Target/TargetMachine.cpp vendor/llvm/dist/lib/Target/TargetRegisterInfo.cpp vendor/llvm/dist/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp vendor/llvm/dist/lib/Target/X86/InstPrinter/X86ATTInstPrinter.h vendor/llvm/dist/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp vendor/llvm/dist/lib/Target/X86/InstPrinter/X86IntelInstPrinter.h vendor/llvm/dist/lib/Target/X86/README-X86-64.txt vendor/llvm/dist/lib/Target/X86/README.txt vendor/llvm/dist/lib/Target/X86/X86.td vendor/llvm/dist/lib/Target/X86/X86FastISel.cpp vendor/llvm/dist/lib/Target/X86/X86FrameLowering.cpp vendor/llvm/dist/lib/Target/X86/X86ISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp vendor/llvm/dist/lib/Target/X86/X86ISelLowering.h vendor/llvm/dist/lib/Target/X86/X86InstrCompiler.td vendor/llvm/dist/lib/Target/X86/X86InstrExtension.td vendor/llvm/dist/lib/Target/X86/X86InstrFragmentsSIMD.td vendor/llvm/dist/lib/Target/X86/X86InstrInfo.cpp vendor/llvm/dist/lib/Target/X86/X86InstrInfo.h vendor/llvm/dist/lib/Target/X86/X86InstrInfo.td vendor/llvm/dist/lib/Target/X86/X86InstrMMX.td vendor/llvm/dist/lib/Target/X86/X86InstrSSE.td vendor/llvm/dist/lib/Target/X86/X86MCAsmInfo.cpp vendor/llvm/dist/lib/Target/X86/X86MCCodeEmitter.cpp vendor/llvm/dist/lib/Target/X86/X86MCInstLower.cpp vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.cpp vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.h vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.td vendor/llvm/dist/lib/Target/X86/X86Subtarget.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.h vendor/llvm/dist/lib/Target/XCore/XCoreInstrInfo.td vendor/llvm/dist/lib/Target/XCore/XCoreRegisterInfo.cpp vendor/llvm/dist/lib/Target/XCore/XCoreRegisterInfo.h vendor/llvm/dist/lib/Target/XCore/XCoreRegisterInfo.td vendor/llvm/dist/lib/Transforms/IPO/DeadTypeElimination.cpp vendor/llvm/dist/lib/Transforms/IPO/ExtractGV.cpp vendor/llvm/dist/lib/Transforms/IPO/GlobalOpt.cpp vendor/llvm/dist/lib/Transforms/IPO/PruneEH.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombine.h vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCalls.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCasts.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCompares.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombinePHI.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineSelect.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstructionCombining.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/GCOVProfiling.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/PathProfiling.cpp vendor/llvm/dist/lib/Transforms/Scalar/CodeGenPrepare.cpp vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp vendor/llvm/dist/lib/Transforms/Scalar/IndVarSimplify.cpp vendor/llvm/dist/lib/Transforms/Scalar/JumpThreading.cpp vendor/llvm/dist/lib/Transforms/Scalar/LICM.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopIdiomRecognize.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopStrengthReduce.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopUnswitch.cpp vendor/llvm/dist/lib/Transforms/Scalar/MemCpyOptimizer.cpp vendor/llvm/dist/lib/Transforms/Scalar/SCCP.cpp vendor/llvm/dist/lib/Transforms/Scalar/ScalarReplAggregates.cpp vendor/llvm/dist/lib/Transforms/Scalar/SimplifyCFGPass.cpp vendor/llvm/dist/lib/Transforms/Scalar/TailRecursionElimination.cpp vendor/llvm/dist/lib/Transforms/Utils/BasicBlockUtils.cpp vendor/llvm/dist/lib/Transforms/Utils/BreakCriticalEdges.cpp vendor/llvm/dist/lib/Transforms/Utils/BuildLibCalls.cpp vendor/llvm/dist/lib/Transforms/Utils/InlineFunction.cpp vendor/llvm/dist/lib/Transforms/Utils/Local.cpp vendor/llvm/dist/lib/Transforms/Utils/PromoteMemoryToRegister.cpp vendor/llvm/dist/lib/Transforms/Utils/SSAUpdater.cpp vendor/llvm/dist/lib/Transforms/Utils/SimplifyCFG.cpp vendor/llvm/dist/lib/VMCore/Attributes.cpp vendor/llvm/dist/lib/VMCore/AutoUpgrade.cpp vendor/llvm/dist/lib/VMCore/DebugInfoProbe.cpp vendor/llvm/dist/lib/VMCore/Function.cpp vendor/llvm/dist/lib/VMCore/IRBuilder.cpp vendor/llvm/dist/lib/VMCore/InlineAsm.cpp vendor/llvm/dist/lib/VMCore/Instructions.cpp vendor/llvm/dist/lib/VMCore/PassManager.cpp vendor/llvm/dist/lib/VMCore/Type.cpp vendor/llvm/dist/lib/VMCore/Verifier.cpp vendor/llvm/dist/runtime/libprofile/BasicBlockTracing.c vendor/llvm/dist/runtime/libprofile/EdgeProfiling.c vendor/llvm/dist/runtime/libprofile/GCDAProfiling.c vendor/llvm/dist/runtime/libprofile/OptimalEdgeProfiling.c vendor/llvm/dist/test/Analysis/BasicAA/2010-09-15-GEP-SignedArithmetic.ll vendor/llvm/dist/test/Analysis/BasicAA/modref.ll vendor/llvm/dist/test/Assembler/AutoUpgradeIntrinsics.ll vendor/llvm/dist/test/Bitcode/2006-12-11-Cast-ConstExpr.ll vendor/llvm/dist/test/Bitcode/AutoUpgradeGlobals.ll vendor/llvm/dist/test/Bitcode/AutoUpgradeIntrinsics.ll vendor/llvm/dist/test/Bitcode/sse2_loadl_pd.ll vendor/llvm/dist/test/Bitcode/sse2_movl_dq.ll vendor/llvm/dist/test/Bitcode/sse2_movs_d.ll vendor/llvm/dist/test/Bitcode/sse2_punpck_qdq.ll vendor/llvm/dist/test/Bitcode/sse2_shuf_pd.ll vendor/llvm/dist/test/Bitcode/sse2_unpck_pd.ll vendor/llvm/dist/test/Bitcode/sse41_pmulld.ll vendor/llvm/dist/test/Bitcode/ssse3_palignr.ll vendor/llvm/dist/test/CodeGen/ARM/2009-09-09-fpcmp-ole.ll vendor/llvm/dist/test/CodeGen/ARM/2011-04-07-schediv.ll vendor/llvm/dist/test/CodeGen/ARM/2011-04-11-MachineLICMBug.ll vendor/llvm/dist/test/CodeGen/ARM/bfi.ll vendor/llvm/dist/test/CodeGen/ARM/call-tc.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel.ll vendor/llvm/dist/test/CodeGen/ARM/fcopysign.ll vendor/llvm/dist/test/CodeGen/ARM/fnmscs.ll vendor/llvm/dist/test/CodeGen/ARM/inlineasm3.ll vendor/llvm/dist/test/CodeGen/ARM/ldst-f32-2-i32.ll vendor/llvm/dist/test/CodeGen/ARM/memfunc.ll vendor/llvm/dist/test/CodeGen/ARM/movt-movw-global.ll vendor/llvm/dist/test/CodeGen/ARM/select-imm.ll vendor/llvm/dist/test/CodeGen/ARM/stm.ll vendor/llvm/dist/test/CodeGen/ARM/vldlane.ll vendor/llvm/dist/test/CodeGen/ARM/vrev.ll vendor/llvm/dist/test/CodeGen/ARM/vstlane.ll vendor/llvm/dist/test/CodeGen/MSP430/Inst8rr.ll vendor/llvm/dist/test/CodeGen/Mips/2008-07-31-fcopysign.ll vendor/llvm/dist/test/CodeGen/Mips/blockaddr.ll vendor/llvm/dist/test/CodeGen/Mips/cmov.ll vendor/llvm/dist/test/CodeGen/Mips/internalfunc.ll vendor/llvm/dist/test/CodeGen/Mips/o32_cc_vararg.ll vendor/llvm/dist/test/CodeGen/PTX/options.ll vendor/llvm/dist/test/CodeGen/PowerPC/2010-03-09-indirect-call.ll vendor/llvm/dist/test/CodeGen/PowerPC/big-endian-formal-args.ll vendor/llvm/dist/test/CodeGen/PowerPC/indirectbr.ll vendor/llvm/dist/test/CodeGen/SPARC/2011-01-22-SRet.ll vendor/llvm/dist/test/CodeGen/Thumb/2009-08-20-ISelBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-08-10-VarSizedAllocaBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/bfi.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-cbnz.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-cmn.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-cmp.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-cmp2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-teq.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-teq2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-tst.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-tst2.ll vendor/llvm/dist/test/CodeGen/X86/2006-05-22-FPSetEQ.ll vendor/llvm/dist/test/CodeGen/X86/2008-08-31-EH_RETURN32.ll vendor/llvm/dist/test/CodeGen/X86/2008-08-31-EH_RETURN64.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-18-inline-asm-2.ll vendor/llvm/dist/test/CodeGen/X86/2008-12-19-EarlyClobberBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-03-13-PHIElimBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-25-DotDebugLoc.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-26-DotDebugLoc.ll vendor/llvm/dist/test/CodeGen/X86/2010-06-25-CoalescerSubRegDefDead.ll vendor/llvm/dist/test/CodeGen/X86/abi-isel.ll vendor/llvm/dist/test/CodeGen/X86/add-of-carry.ll vendor/llvm/dist/test/CodeGen/X86/add.ll vendor/llvm/dist/test/CodeGen/X86/andimm8.ll vendor/llvm/dist/test/CodeGen/X86/bool-zext.ll vendor/llvm/dist/test/CodeGen/X86/byval7.ll vendor/llvm/dist/test/CodeGen/X86/clz.ll vendor/llvm/dist/test/CodeGen/X86/coalescer-commute2.ll vendor/llvm/dist/test/CodeGen/X86/dbg-file-name.ll vendor/llvm/dist/test/CodeGen/X86/dbg-merge-loc-entry.ll vendor/llvm/dist/test/CodeGen/X86/dbg-value-range.ll vendor/llvm/dist/test/CodeGen/X86/empty-functions.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-call.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-fneg.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-i1.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel.ll vendor/llvm/dist/test/CodeGen/X86/hidden-vis-pic.ll vendor/llvm/dist/test/CodeGen/X86/isint.ll vendor/llvm/dist/test/CodeGen/X86/lsr-overflow.ll vendor/llvm/dist/test/CodeGen/X86/optimize-max-3.ll vendor/llvm/dist/test/CodeGen/X86/phys_subreg_coalesce-2.ll vendor/llvm/dist/test/CodeGen/X86/phys_subreg_coalesce-3.ll vendor/llvm/dist/test/CodeGen/X86/pmul.ll vendor/llvm/dist/test/CodeGen/X86/pr2659.ll vendor/llvm/dist/test/CodeGen/X86/pr9127.ll vendor/llvm/dist/test/CodeGen/X86/pr9743.ll vendor/llvm/dist/test/CodeGen/X86/ret-mmx.ll vendor/llvm/dist/test/CodeGen/X86/setoeq.ll vendor/llvm/dist/test/CodeGen/X86/sibcall.ll vendor/llvm/dist/test/CodeGen/X86/smul-with-overflow.ll vendor/llvm/dist/test/CodeGen/X86/sse-minmax.ll vendor/llvm/dist/test/CodeGen/X86/sse3.ll vendor/llvm/dist/test/CodeGen/X86/sse42.ll vendor/llvm/dist/test/CodeGen/X86/sse_reload_fold.ll vendor/llvm/dist/test/CodeGen/X86/tail-opts.ll vendor/llvm/dist/test/CodeGen/X86/tailcallstack64.ll vendor/llvm/dist/test/CodeGen/X86/umul-with-overflow.ll vendor/llvm/dist/test/CodeGen/X86/use-add-flags.ll vendor/llvm/dist/test/CodeGen/X86/vec_extract-sse4.ll vendor/llvm/dist/test/CodeGen/X86/vec_extract.ll vendor/llvm/dist/test/CodeGen/X86/vec_shuffle-16.ll vendor/llvm/dist/test/CodeGen/X86/vec_uint_to_fp.ll vendor/llvm/dist/test/CodeGen/X86/widen_load-0.ll vendor/llvm/dist/test/CodeGen/X86/win64_alloca_dynalloca.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-and-mask.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-extend-shift.ll vendor/llvm/dist/test/CodeGen/X86/xor.ll vendor/llvm/dist/test/CodeGen/XCore/mul64.ll vendor/llvm/dist/test/FrontendC++/2006-11-06-StackTrace.cpp vendor/llvm/dist/test/FrontendC++/2006-11-30-Pubnames.cpp vendor/llvm/dist/test/FrontendC++/2009-04-21-DtorNames-dbg.cpp vendor/llvm/dist/test/FrontendC++/2010-08-31-ByValArg.cpp vendor/llvm/dist/test/FrontendC/2008-07-29-EHLabel.ll vendor/llvm/dist/test/FrontendC/2009-02-17-BitField-dbg.c vendor/llvm/dist/test/FrontendC/2010-01-05-LinkageName.c vendor/llvm/dist/test/FrontendC/2010-01-14-StaticVariable.c vendor/llvm/dist/test/FrontendC/2010-02-16-DbgVarScope.c vendor/llvm/dist/test/FrontendC/2010-05-18-asmsched.c vendor/llvm/dist/test/FrontendC/pr4349.c vendor/llvm/dist/test/FrontendObjC/2009-08-17-DebugInfo.m vendor/llvm/dist/test/MC/ARM/arm_instructions.s vendor/llvm/dist/test/MC/ARM/elf-movt.s vendor/llvm/dist/test/MC/ARM/simple-encoding.ll vendor/llvm/dist/test/MC/ARM/thumb.s vendor/llvm/dist/test/MC/ARM/thumb2.s vendor/llvm/dist/test/MC/AsmParser/directive_values.s vendor/llvm/dist/test/MC/Disassembler/ARM/arm-tests.txt vendor/llvm/dist/test/MC/Disassembler/ARM/thumb-tests.txt vendor/llvm/dist/test/MC/ELF/cfi-offset.s vendor/llvm/dist/test/MC/ELF/relocation-386.s vendor/llvm/dist/test/MC/ELF/relocation.s vendor/llvm/dist/test/MC/X86/x86-32-coverage.s vendor/llvm/dist/test/MC/X86/x86-32.s vendor/llvm/dist/test/Transforms/ConstProp/calls.ll vendor/llvm/dist/test/Transforms/DeadArgElim/2008-06-23-DeadAfterLive.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/simple.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-26-InterlockingLoops.ll vendor/llvm/dist/test/Transforms/GVN/2008-07-02-Unreachable.ll vendor/llvm/dist/test/Transforms/GVN/crash.ll vendor/llvm/dist/test/Transforms/GVN/preserve-tbaa.ll vendor/llvm/dist/test/Transforms/GVN/rle.ll vendor/llvm/dist/test/Transforms/GlobalOpt/crash.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/iv-sext.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/iv-zext.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/phi-uses-value-multiple-times.ll vendor/llvm/dist/test/Transforms/Inline/array_merge.ll vendor/llvm/dist/test/Transforms/InstCombine/call.ll vendor/llvm/dist/test/Transforms/InstCombine/div.ll vendor/llvm/dist/test/Transforms/InstCombine/exact.ll vendor/llvm/dist/test/Transforms/InstCombine/icmp.ll vendor/llvm/dist/test/Transforms/InstCombine/intrinsics.ll vendor/llvm/dist/test/Transforms/InstCombine/or.ll vendor/llvm/dist/test/Transforms/InstCombine/select.ll vendor/llvm/dist/test/Transforms/InstCombine/shift.ll vendor/llvm/dist/test/Transforms/InstCombine/vec_demanded_elts.ll vendor/llvm/dist/test/Transforms/LoopIdiom/basic.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/memcpy.ll vendor/llvm/dist/test/Transforms/PhaseOrdering/basic.ll vendor/llvm/dist/test/Transforms/ScalarRepl/debuginfo.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/indirectbr.ll vendor/llvm/dist/tools/bugpoint/ExecutionDriver.cpp vendor/llvm/dist/tools/bugpoint/Miscompilation.cpp vendor/llvm/dist/tools/bugpoint/OptimizerDriver.cpp vendor/llvm/dist/tools/bugpoint/ToolRunner.cpp vendor/llvm/dist/tools/bugpoint/bugpoint.cpp vendor/llvm/dist/tools/gold/CMakeLists.txt vendor/llvm/dist/tools/gold/Makefile vendor/llvm/dist/tools/gold/gold-plugin.cpp vendor/llvm/dist/tools/llc/llc.cpp vendor/llvm/dist/tools/llvm-ld/Optimize.cpp vendor/llvm/dist/tools/llvm-mc/Disassembler.cpp vendor/llvm/dist/tools/llvm-mc/Disassembler.h vendor/llvm/dist/tools/llvm-mc/llvm-mc.cpp vendor/llvm/dist/tools/llvmc/src/Base.td.in vendor/llvm/dist/tools/lto/LTOCodeGenerator.cpp vendor/llvm/dist/tools/opt/opt.cpp vendor/llvm/dist/unittests/CMakeLists.txt vendor/llvm/dist/unittests/VMCore/InstructionsTest.cpp vendor/llvm/dist/utils/TableGen/AsmMatcherEmitter.cpp vendor/llvm/dist/utils/TableGen/AsmWriterEmitter.cpp vendor/llvm/dist/utils/TableGen/CMakeLists.txt vendor/llvm/dist/utils/TableGen/ClangDiagnosticsEmitter.cpp vendor/llvm/dist/utils/TableGen/CodeGenIntrinsics.h vendor/llvm/dist/utils/TableGen/CodeGenRegisters.h vendor/llvm/dist/utils/TableGen/CodeGenTarget.cpp vendor/llvm/dist/utils/TableGen/CodeGenTarget.h vendor/llvm/dist/utils/TableGen/DAGISelMatcherGen.cpp vendor/llvm/dist/utils/TableGen/EDEmitter.cpp vendor/llvm/dist/utils/TableGen/FastISelEmitter.cpp vendor/llvm/dist/utils/TableGen/IntrinsicEmitter.cpp vendor/llvm/dist/utils/TableGen/LLVMCConfigurationEmitter.cpp vendor/llvm/dist/utils/TableGen/NeonEmitter.cpp vendor/llvm/dist/utils/TableGen/Record.cpp vendor/llvm/dist/utils/TableGen/RegisterInfoEmitter.cpp vendor/llvm/dist/utils/TableGen/TGLexer.cpp vendor/llvm/dist/utils/TableGen/TGLexer.h vendor/llvm/dist/utils/TableGen/TGParser.h vendor/llvm/dist/utils/TableGen/TableGen.cpp vendor/llvm/dist/utils/valgrind/i386-pc-linux-gnu.supp vendor/llvm/dist/utils/valgrind/x86_64-pc-linux-gnu.supp Modified: vendor/llvm/dist/.gitignore ============================================================================== --- vendor/llvm/dist/.gitignore Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/.gitignore Sun Jun 12 15:42:51 2011 (r223013) @@ -15,6 +15,8 @@ *.orig # Byte compiled python modules. *.pyc +# vim swap files +.*.swp #==============================================================================# # Explicit files to ignore (only matches one). Modified: vendor/llvm/dist/Makefile ============================================================================== --- vendor/llvm/dist/Makefile Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/Makefile Sun Jun 12 15:42:51 2011 (r223013) @@ -69,7 +69,7 @@ endif ifeq ($(MAKECMDGOALS),install-clang) DIRS := tools/clang/tools/driver tools/clang/lib/Headers \ tools/clang/runtime tools/clang/docs \ - tools/lto + tools/lto runtime OPTIONAL_DIRS := NO_INSTALL = 1 endif @@ -83,7 +83,7 @@ ifeq ($(MAKECMDGOALS),install-clang-c) endif ifeq ($(MAKECMDGOALS),clang-only) - DIRS := $(filter-out tools runtime docs unittests, $(DIRS)) \ + DIRS := $(filter-out tools docs unittests, $(DIRS)) \ tools/clang tools/lto OPTIONAL_DIRS := endif Modified: vendor/llvm/dist/autoconf/config.guess ============================================================================== --- vendor/llvm/dist/autoconf/config.guess Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/autoconf/config.guess Sun Jun 12 15:42:51 2011 (r223013) @@ -789,13 +789,12 @@ EOF echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) Modified: vendor/llvm/dist/autoconf/configure.ac ============================================================================== --- vendor/llvm/dist/autoconf/configure.ac Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/autoconf/configure.ac Sun Jun 12 15:42:51 2011 (r223013) @@ -1528,7 +1528,7 @@ dnl Set the flags needed to emit LLVM IR dnl in llvmgcc if test "$llvm_cv_llvmgcc_dragonegg" = "yes" ; then LLVMCC_EMITIR_FLAG="-fplugin-arg-dragonegg-emit-ir" - LLVMCC_DISABLEOPT_FLAGS="-fplugin-arg-dragonegg-disable-llvm-optzns" + LLVMCC_DISABLEOPT_FLAGS="-fplugin-arg-dragonegg-llvm-ir-optimize=0" else LLVMCC_EMITIR_FLAG="-emit-llvm" LLVMCC_DISABLEOPT_FLAGS="-mllvm -disable-llvm-optzns" @@ -1723,6 +1723,12 @@ AC_CONFIG_FILES([Makefile.config]) dnl Configure the RPM spec file for LLVM AC_CONFIG_FILES([llvm.spec]) +dnl Configure doxygen's configuration file +AC_CONFIG_FILES([docs/doxygen.cfg]) +if test -f ${srcdir}/tools/clang/README.txt; then + AC_CONFIG_FILES([tools/clang/docs/doxygen.cfg]) +fi + dnl Configure llvmc's Base plugin AC_CONFIG_FILES([tools/llvmc/src/Base.td]) Modified: vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake ============================================================================== --- vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake Sun Jun 12 15:42:51 2011 (r223013) @@ -1,5 +1,11 @@ include(AddLLVMDefinitions) +if( CMAKE_COMPILER_IS_GNUCXX ) + set(LLVM_COMPILER_IS_GCC_COMPATIBLE ON) +elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" ) + set(LLVM_COMPILER_IS_GCC_COMPATIBLE ON) +endif() + # Run-time build mode; It is used for unittests. if(MSVC_IDE) # Expect "$(Configuration)", "$(OutDir)", etc. @@ -167,7 +173,7 @@ if( MSVC ) if (LLVM_ENABLE_WERROR) add_llvm_definitions( /WX ) endif (LLVM_ENABLE_WERROR) -elseif( CMAKE_COMPILER_IS_GNUCXX ) +elseif( LLVM_COMPILER_IS_GCC_COMPATIBLE ) if (LLVM_ENABLE_WARNINGS) add_llvm_definitions( -Wall -W -Wno-unused-parameter -Wwrite-strings ) if (LLVM_ENABLE_PEDANTIC) Modified: vendor/llvm/dist/cmake/modules/LLVMProcessSources.cmake ============================================================================== --- vendor/llvm/dist/cmake/modules/LLVMProcessSources.cmake Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/cmake/modules/LLVMProcessSources.cmake Sun Jun 12 15:42:51 2011 (r223013) @@ -56,7 +56,7 @@ function(llvm_process_sources OUT_VAR) # Set common compiler options: if( NOT LLVM_REQUIRES_EH ) - if( CMAKE_COMPILER_IS_GNUCXX ) + if( LLVM_COMPILER_IS_GCC_COMPATIBLE ) add_definitions( -fno-exceptions ) elseif( MSVC ) llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/EHsc" "/EHs-c-") @@ -64,7 +64,7 @@ function(llvm_process_sources OUT_VAR) endif() endif() if( NOT LLVM_REQUIRES_RTTI ) - if( CMAKE_COMPILER_IS_GNUCXX ) + if( LLVM_COMPILER_IS_GCC_COMPATIBLE ) llvm_replace_compiler_option(CMAKE_CXX_FLAGS "-frtti" "-fno-rtti") elseif( MSVC ) llvm_replace_compiler_option(CMAKE_CXX_FLAGS "/GR" "/GR-") Modified: vendor/llvm/dist/configure ============================================================================== --- vendor/llvm/dist/configure Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/configure Sun Jun 12 15:42:51 2011 (r223013) @@ -22245,7 +22245,7 @@ echo "${ECHO_T}$llvm_cv_llvmgcc_dragoneg if test "$llvm_cv_llvmgcc_dragonegg" = "yes" ; then LLVMCC_EMITIR_FLAG="-fplugin-arg-dragonegg-emit-ir" - LLVMCC_DISABLEOPT_FLAGS="-fplugin-arg-dragonegg-disable-llvm-optzns" + LLVMCC_DISABLEOPT_FLAGS="-fplugin-arg-dragonegg-llvm-ir-optimize=0" else LLVMCC_EMITIR_FLAG="-emit-llvm" LLVMCC_DISABLEOPT_FLAGS="-mllvm -disable-llvm-optzns" @@ -22574,6 +22574,13 @@ ac_config_files="$ac_config_files Makefi ac_config_files="$ac_config_files llvm.spec" +ac_config_files="$ac_config_files docs/doxygen.cfg" + +if test -f ${srcdir}/tools/clang/README.txt; then + ac_config_files="$ac_config_files tools/clang/docs/doxygen.cfg" + +fi + ac_config_files="$ac_config_files tools/llvmc/src/Base.td" @@ -23194,6 +23201,8 @@ do "include/llvm/Support/DataTypes.h") CONFIG_HEADERS="$CONFIG_HEADERS include/llvm/Support/DataTypes.h" ;; "Makefile.config") CONFIG_FILES="$CONFIG_FILES Makefile.config" ;; "llvm.spec") CONFIG_FILES="$CONFIG_FILES llvm.spec" ;; + "docs/doxygen.cfg") CONFIG_FILES="$CONFIG_FILES docs/doxygen.cfg" ;; + "tools/clang/docs/doxygen.cfg") CONFIG_FILES="$CONFIG_FILES tools/clang/docs/doxygen.cfg" ;; "tools/llvmc/src/Base.td") CONFIG_FILES="$CONFIG_FILES tools/llvmc/src/Base.td" ;; "tools/llvm-config/llvm-config.in") CONFIG_FILES="$CONFIG_FILES tools/llvm-config/llvm-config.in" ;; "setup") CONFIG_COMMANDS="$CONFIG_COMMANDS setup" ;; Modified: vendor/llvm/dist/docs/AliasAnalysis.html ============================================================================== --- vendor/llvm/dist/docs/AliasAnalysis.html Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/docs/AliasAnalysis.html Sun Jun 12 15:42:51 2011 (r223013) @@ -745,9 +745,9 @@ for monitoring and evaluating different

This section lists the various implementations of the AliasAnalysis -interface. With the exception of the -no-aa and --basicaa implementations, all of these chain to other alias analysis implementations.

+interface. With the exception of the -no-aa +implementation, all of these chain to other alias +analysis implementations.

@@ -1060,7 +1060,7 @@ analysis directly.

Chris Lattner
LLVM Compiler Infrastructure
- Last modified: $Date: 2011-04-21 03:52:00 +0200 (Thu, 21 Apr 2011) $ + Last modified: $Date: 2011-05-25 00:01:32 +0200 (Wed, 25 May 2011) $ Modified: vendor/llvm/dist/docs/CodeGenerator.html ============================================================================== --- vendor/llvm/dist/docs/CodeGenerator.html Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/docs/CodeGenerator.html Sun Jun 12 15:42:51 2011 (r223013) @@ -2019,6 +2019,11 @@ def : InstAlias<"fcomi $reg", (COM_FI

Instruction aliases can also have a Requires clause to make them subtarget specific.

+

If the back-end supports it, the instruction printer can automatically emit + the alias rather than what's being aliased. It typically leads to better, + more readable code. If it's better to print out what's being aliased, then + pass a '0' as the third parameter to the InstAlias definition.

+

@@ -2464,11 +2469,14 @@ entry:

The following target-specific calling conventions are known to backend:

    -
  • x86_StdCall — stdcall calling convention seen on Microsoft - Windows platform (CC ID = 64).
  • - -
  • x86_FastCall — fastcall calling convention seen on Microsoft - Windows platform (CC ID = 65).
  • +
  • x86_StdCall — stdcall calling convention seen on Microsoft + Windows platform (CC ID = 64).
  • +
  • x86_FastCall — fastcall calling convention seen on Microsoft + Windows platform (CC ID = 65).
  • +
  • x86_ThisCall — Similar to X86_StdCall. Passes first argument + in ECX, others via stack. Callee is responsible for stack cleaning. This + convention is used by MSVC by default for methods in its ABI + (CC ID = 70).
@@ -2798,7 +2806,7 @@ MOVSX32rm16 -> movsx, 32-bit register Chris Lattner
The LLVM Compiler Infrastructure
- Last modified: $Date: 2011-04-23 02:30:22 +0200 (Sat, 23 Apr 2011) $ + Last modified: $Date: 2011-05-23 00:28:47 +0200 (Mon, 23 May 2011) $ Modified: vendor/llvm/dist/docs/CompilerDriver.html ============================================================================== --- vendor/llvm/dist/docs/CompilerDriver.html Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/docs/CompilerDriver.html Sun Jun 12 15:42:51 2011 (r223013) @@ -679,7 +679,7 @@ the llvmcMikhail Glushenkov
LLVM Compiler Infrastructure
-Last modified: $Date: 2011-04-24 16:17:37 +0200 (Sun, 24 Apr 2011) $ +Last modified: $Date: 2011-05-07 00:11:29 +0200 (Sat, 07 May 2011) $ Modified: vendor/llvm/dist/docs/ExceptionHandling.html ============================================================================== --- vendor/llvm/dist/docs/ExceptionHandling.html Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/docs/ExceptionHandling.html Sun Jun 12 15:42:51 2011 (r223013) @@ -35,6 +35,7 @@
  1. llvm.eh.exception
  2. llvm.eh.selector
  3. +
  4. llvm.eh.resume
  5. llvm.eh.typeid.for
  6. llvm.eh.sjlj.setjmp
  7. llvm.eh.sjlj.longjmp
  8. @@ -317,15 +318,28 @@
    -

    To handle destructors and cleanups in try code, control may not run - directly from a landing pad to the first catch. Control may actually flow - from the landing pad to clean up code and then to the first catch. Since the - required clean up for each invoke in a try may be different - (e.g. intervening constructor), there may be several landing pads for a given - try. If cleanups need to be run, an i32 0 should be passed as the - last llvm.eh.selector argument. - However, when using DWARF exception handling with C++, a i8* null - must be passed instead.

    +

    A cleanup is extra code which needs to be run as part of unwinding + a scope. C++ destructors are a prominent example, but other + languages and language extensions provide a variety of different + kinds of cleanup. In general, a landing pad may need to run + arbitrary amounts of cleanup code before actually entering a catch + block. To indicate the presence of cleanups, a landing pad's call + to llvm.eh.selector should + end with the argument i32 0; otherwise, the unwinder will + not stop at the landing pad if there are no catches or filters that + require it to.

    + +

    Do not allow a new exception to propagate out of the execution of a + cleanup. This can corrupt the internal state of the unwinder. + Different languages describe different high-level semantics for + these situations: for example, C++ requires that the process be + terminated, whereas Ada cancels both exceptions and throws a third.

    + +

    When all cleanups have completed, if the exception is not handled + by the current function, resume unwinding by calling the + llvm.eh.resume intrinsic, + passing in the results of llvm.eh.exception and + llvm.eh.selector for the original landing pad.

    @@ -363,22 +377,29 @@
    -

    The semantics of the invoke instruction require that any exception that - unwinds through an invoke call should result in a branch to the invoke's - unwind label. However such a branch will only happen if the - llvm.eh.selector matches. Thus in - order to ensure correct operation, the front-end must only generate - llvm.eh.selector calls that are - guaranteed to always match whatever exception unwinds through the invoke. - For most languages it is enough to pass zero, indicating the presence of - a cleanup, as the - last llvm.eh.selector argument. - However for C++ this is not sufficient, because the C++ personality function - will terminate the program if it detects that unwinding the exception only - results in matches with cleanups. For C++ a null i8* should be - passed as the last llvm.eh.selector - argument instead. This is interpreted as a catch-all by the C++ personality - function, and will always match.

    +

    The unwinder delegates the decision of whether to stop in a call + frame to that call frame's language-specific personality function. + Not all personalities functions guarantee that they will stop to + perform cleanups: for example, the GNU C++ personality doesn't do + so unless the exception is actually caught somewhere further up the + stack. When using this personality to implement EH for a language + that guarantees that cleanups will always be run, be sure to + indicate a catch-all in the + llvm.eh.selector call + rather than just cleanups.

    + +

    In order for inlining to behave correctly, landing pads must be + prepared to handle selector results that they did not originally + advertise. Suppose that a function catches exceptions of + type A, and it's inlined into a function that catches + exceptions of type B. The inliner will update the + selector for the inlined landing pad to include the fact + that B is caught. If that landing pad assumes that it + will only be entered to catch an A, it's in for a rude + surprise. Consequently, landing pads must test for the selector + results they understand and then resume exception propagation + with the llvm.eh.resume + intrinsic if none of the conditions match.

    @@ -424,22 +445,32 @@

    This intrinsic is used to compare the exception with the given type infos, filters and cleanups.

    -

    llvm.eh.selector takes a minimum of - three arguments. The first argument is the reference to the exception - structure. The second argument is a reference to the personality function to - be used for this try catch sequence. Each of the remaining arguments is - either a reference to the type info for a catch statement, - a filter expression, or the number zero - representing a cleanup. The exception is tested - against the arguments sequentially from first to last. The result of - the llvm.eh.selector is a positive - number if the exception matched a type info, a negative number if it matched - a filter, and zero if it matched a cleanup. If nothing is matched, the - behaviour of the program is undefined. If a type - info matched then the selector value is the index of the type info in the - exception table, which can be obtained using the +

    llvm.eh.selector takes a + minimum of three arguments. The first argument is the reference to + the exception structure. The second argument is a reference to the + personality function to be used for this try catch sequence. Each + of the remaining arguments is either a reference to the type info + for a catch statement, a filter + expression, or the number zero representing + a cleanup. The exception is tested against + the arguments sequentially from first to last. The result of + the llvm.eh.selector is a + positive number if the exception matched a type info, a negative + number if it matched a filter, and zero if it matched a cleanup. + If nothing is matched, or if only a cleanup is matched, different + personality functions may or may not cause control to stop at the + landing pad; see the restrictions for + more information. If a type info matched then the selector value + is the index of the type info in the exception table, which can be + obtained using the llvm.eh.typeid.for intrinsic.

    +

    If a landing pad containing a call to llvm.eh.selector is + inlined into an invoke instruction, the selector arguments + for the outer landing pad are appended to those of the inlined + landing pad. Consequently, landing pads must be written to ignore + selector values that they did not originally advertise.

    + @@ -462,6 +493,33 @@

    + llvm.eh.resume +

    + +
    + +
    +  void %llvm.eh.resume(i8*, i32) noreturn
    +
    + +

    This intrinsic is used to resume propagation of an exception after + landing at a landing pad. The first argument should be the result + of llvm.eh.exception for that + landing pad, and the second argument should be the result of + llvm.eh.selector. When a call to + this intrinsic is inlined into an invoke, the call is transformed + into a branch to the invoke's unwind destination, using its + arguments in place of the calls + to llvm.eh.exception and + llvm.eh.selector there.

    + +

    This intrinsic is not implicitly nounwind; calls to it + will always throw. It may not be invoked.

    + +
    + + +

    llvm.eh.sjlj.setjmp

    @@ -637,7 +695,7 @@ Chris Lattner
    LLVM Compiler Infrastructure
    - Last modified: $Date: 2011-04-23 02:30:22 +0200 (Sat, 23 Apr 2011) $ + Last modified: $Date: 2011-05-28 09:45:59 +0200 (Sat, 28 May 2011) $ Modified: vendor/llvm/dist/docs/HowToSubmitABug.html ============================================================================== --- vendor/llvm/dist/docs/HowToSubmitABug.html Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/docs/HowToSubmitABug.html Sun Jun 12 15:42:51 2011 (r223013) @@ -151,7 +151,7 @@ Then run:

    This command should do two things: it should print out a list of passes, and -then it should crash in the same was as llvm-gcc. If it doesn't crash, please +then it should crash in the same way as llvm-gcc. If it doesn't crash, please follow the instructions for a front-end bug.

    If this does crash, then you should be able to debug this with the following @@ -340,7 +340,7 @@ the following:

    Chris Lattner
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2011-04-23 02:30:22 +0200 (Sat, 23 Apr 2011) $ + Last modified: $Date: 2011-06-07 22:03:13 +0200 (Tue, 07 Jun 2011) $ Modified: vendor/llvm/dist/docs/LangRef.html ============================================================================== --- vendor/llvm/dist/docs/LangRef.html Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/docs/LangRef.html Sun Jun 12 15:42:51 2011 (r223013) @@ -239,6 +239,8 @@
  9. 'llvm.sin.*' Intrinsic
  10. 'llvm.cos.*' Intrinsic
  11. 'llvm.pow.*' Intrinsic
  12. +
  13. 'llvm.exp.*' Intrinsic
  14. +
  15. 'llvm.log.*' Intrinsic
  • Bit Manipulation Intrinsics @@ -2446,11 +2448,11 @@ entry: %narrowaddr = bitcast i32* @g to i16* %wideaddr = bitcast i32* @g to i64* - %trap3 = load 16* %narrowaddr ; Returns a trap value. - %trap4 = load i64* %widaddr ; Returns a trap value. + %trap3 = load i16* %narrowaddr ; Returns a trap value. + %trap4 = load i64* %wideaddr ; Returns a trap value. - %cmp = icmp i32 slt %trap, 0 ; Returns a trap value. - %br i1 %cmp, %true, %end ; Branch to either destination. + %cmp = icmp slt i32 %trap, 0 ; Returns a trap value. + br i1 %cmp, label %true, label %end ; Branch to either destination. true: volatile store i32 0, i32* @g ; This is control-dependent on %cmp, so @@ -2467,19 +2469,19 @@ end: ; if %cmp is true, or the store in %entry ; otherwise, so this is undefined behavior. - %br i1 %cmp, %second_true, %second_end + br i1 %cmp, label %second_true, label %second_end ; The same branch again, but this time the ; true block doesn't have side effects. second_true: ; No side effects! - br label %end + ret void second_end: volatile store i32 0, i32* @g ; This time, the instruction always depends ; on the store in %end. Also, it is ; control-equivalent to %end, so this is - ; well- defined (again, ignoring earlier + ; well-defined (again, ignoring earlier ; undefined behavior in this example). @@ -4302,7 +4304,7 @@ that the invoke/unwind semantics are lik
    Syntax:
    -  <result> = insertvalue <aggregate type> <val>, <ty> <elt>, <idx>    ; yields <aggregate type>
    +  <result> = insertvalue <aggregate type> <val>, <ty> <elt>, <idx>{, }*    ; yields <aggregate type>
     
    Overview:
    @@ -4326,8 +4328,9 @@ that the invoke/unwind semantics are lik
    Example:
    -  %agg1 = insertvalue {i32, float} undef, i32 1, 0         ; yields {i32 1, float undef}
    -  %agg2 = insertvalue {i32, float} %agg1, float %val, 1    ; yields {i32 1, float %val}
    +  %agg1 = insertvalue {i32, float} undef, i32 1, 0              ; yields {i32 1, float undef}
    +  %agg2 = insertvalue {i32, float} %agg1, float %val, 1         ; yields {i32 1, float %val}
    +  %agg3 = insertvalue {i32, {float}} %agg1, float %val, 1, 0    ; yields {i32 1, float %val}
     
    @@ -6496,6 +6499,72 @@ LLVM.

    + +

    + 'llvm.exp.*' Intrinsic +

    + +
    + +
    Syntax:
    +

    This is an overloaded intrinsic. You can use llvm.exp on any + floating point or vector of floating point type. Not all targets support all + types however.

    + +
    +  declare float     @llvm.exp.f32(float  %Val)
    +  declare double    @llvm.exp.f64(double %Val)
    +  declare x86_fp80  @llvm.exp.f80(x86_fp80  %Val)
    +  declare fp128     @llvm.exp.f128(fp128 %Val)
    +  declare ppc_fp128 @llvm.exp.ppcf128(ppc_fp128  %Val)
    +
    + +
    Overview:
    +

    The 'llvm.exp.*' intrinsics perform the exp function.

    + +
    Arguments:
    +

    The argument and return value are floating point numbers of the same + type.

    + +
    Semantics:
    +

    This function returns the same values as the libm exp functions + would, and handles error conditions in the same way.

    + +
    + + +

    + 'llvm.log.*' Intrinsic +

    + +
    + +
    Syntax:
    +

    This is an overloaded intrinsic. You can use llvm.log on any + floating point or vector of floating point type. Not all targets support all + types however.

    + +
    +  declare float     @llvm.log.f32(float  %Val)
    +  declare double    @llvm.log.f64(double %Val)
    +  declare x86_fp80  @llvm.log.f80(x86_fp80  %Val)
    +  declare fp128     @llvm.log.f128(fp128 %Val)
    +  declare ppc_fp128 @llvm.log.ppcf128(ppc_fp128  %Val)
    +
    + +
    Overview:
    +

    The 'llvm.log.*' intrinsics perform the log function.

    + +
    Arguments:
    +

    The argument and return value are floating point numbers of the same + type.

    + +
    Semantics:
    +

    This function returns the same values as the libm log functions + would, and handles error conditions in the same way.

    + +
    +

    Bit Manipulation Intrinsics @@ -7948,7 +8017,7 @@ LLVM.

    Chris Lattner
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2011-04-23 02:30:22 +0200 (Sat, 23 Apr 2011) $ + Last modified: $Date: 2011-05-27 02:36:31 +0200 (Fri, 27 May 2011) $ Modified: vendor/llvm/dist/docs/Projects.html ============================================================================== --- vendor/llvm/dist/docs/Projects.html Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/docs/Projects.html Sun Jun 12 15:42:51 2011 (r223013) @@ -49,7 +49,7 @@ these facilities, a Makefile from a proj
  • PROJ_SRC_ROOT - The root of the project's source tree.
  • PROJ_OBJ_ROOT - The root of the project's object tree.
  • PROJ_INSTALL_ROOT - The root installation directory.
  • -
  • LEVEL - The relative path from the current directory to the +
  • LEVEL - The relative path from the current directory to the project's root ($PROJ_OBJ_ROOT).
  • Include Makefile.config from $(LLVM_OBJ_ROOT).
  • @@ -59,9 +59,9 @@ these facilities, a Makefile from a proj

    There are two ways that you can set all of these variables:

    1. You can write your own Makefiles which hard-code these values.
    2. -
    3. You can use the pre-made LLVM sample project. This sample project - includes Makefiles, a configure script that can be used to configure the - location of LLVM, and the ability to support multiple object directories +
    4. You can use the pre-made LLVM sample project. This sample project + includes Makefiles, a configure script that can be used to configure the + location of LLVM, and the ability to support multiple object directories from a single source directory.
    @@ -88,9 +88,9 @@ choosing. You can place it anywhere you the name of your project.
  • -If you downloaded LLVM using Subversion, remove all the directories named .svn -(and all the files therein) from your project's new source tree. This will -keep Subversion from thinking that your project is inside +If you downloaded LLVM using Subversion, remove all the directories named .svn +(and all the files therein) from your project's new source tree. This will +keep Subversion from thinking that your project is inside llvm/trunk/projects/sample.
  • Add your source code and Makefiles to your source tree.
  • @@ -139,7 +139,7 @@ can find LLVM:

    That's it! Now all you have to do is type gmake (or make -if your on a GNU/Linux system) in the root of your object directory, and your +if your on a GNU/Linux system) in the root of your object directory, and your project should build.

    @@ -209,7 +209,7 @@ directories:

    test procedure uses RUN lines in the actual test case to determine how to run the test. See the TestingGuide for more details. You - can easily write Makefile support similar to the Makefiles in + can easily write Makefile support similar to the Makefiles in llvm/test to use Dejagnu to run your project's tests.
  • LLVM contains an optional package called llvm-test @@ -339,16 +339,41 @@ do:

    USEDLIBS
    - This variable holds a space separated list of libraries that - should be linked into the program. These libraries must either - be LLVM libraries or libraries that come from your lib - directory. The libraries must be specified by their base name. - For example, to link libsample.a, you would set USEDLIBS to - sample. + This variable holds a space separated list of libraries that should + be linked into the program. These libraries must be libraries that + come from your lib directory. The libraries must be + specified without their "lib" prefix. For example, to link + libsample.a, you would set USEDLIBS to + sample.a.

    Note that this works only for statically linked libraries.

    +

    LLVMLIBS +
    + This variable holds a space separated list of libraries that should + be linked into the program. These libraries must be LLVM libraries. + The libraries must be specified without their "lib" prefix. For + example, to link with a driver that performs an IR transformation + you might set LLVMLIBS to this minimal set of libraries + LLVMSupport.a LLVMCore.a LLVMBitReader.a LLVMAsmParser.a LLVMAnalysis.a LLVMTransformUtils.a LLVMScalarOpts.a LLVMTarget.a. +

    + Note that this works only for statically linked libraries. LLVM is + split into a large number of static libraries, and the list of libraries you + require may be much longer than the list above. To see a full list + of libraries use: + llvm-config --libs all. + Using LINK_COMPONENTS as described below, obviates the need to set LLVMLIBS. +

    + +

    LINK_COMPONENTS +
    This variable holds a space separated list of components that + the LLVM Makefiles pass to the llvm-config tool to generate + a link line for the program. For example, to link with all LLVM + libraries use + LINK_COMPONENTS = all. +

    +

    LIBS
    To link dynamic libraries, add -l<library base name> to @@ -361,6 +386,9 @@ do:

    LIBS += -lsample +

    + Note that LIBS must occur in the Makefile after the inclusion of Makefile.common. +

    @@ -441,7 +469,7 @@ href="http://mail.cs.uiuc.edu/mailman/li Mailing List.

    - +
    @@ -453,7 +481,7 @@ Mailing List.

    John Criswell
    The LLVM Compiler Infrastructure
    - Last modified: $Date: 2011-04-23 02:30:22 +0200 (Sat, 23 Apr 2011) $ + Last modified: $Date: 2011-06-03 04:20:48 +0200 (Fri, 03 Jun 2011) $
    Modified: vendor/llvm/dist/docs/ReleaseNotes.html ============================================================================== --- vendor/llvm/dist/docs/ReleaseNotes.html Sun Jun 12 15:19:38 2011 (r223012) +++ vendor/llvm/dist/docs/ReleaseNotes.html Sun Jun 12 15:42:51 2011 (r223013) @@ -4,11 +4,11 @@ - LLVM 2.9 Release Notes + LLVM 3.0 Release Notes -

    LLVM 2.9 Release Notes

    +

    LLVM 3.0 Release Notes

    LLVM Dragon Logo @@ -16,8 +16,8 @@
    1. Introduction
    2. Sub-project Status Update
    3. -
    4. External Projects Using LLVM 2.9
    5. -
    6. What's New in LLVM 2.9?
    7. +
    8. External Projects Using LLVM 3.0
    9. +
    10. What's New in LLVM 3.0?
    11. Installation Instructions
    12. Known Problems
    13. Additional Information
    14. @@ -28,10 +28,10 @@ @@ -44,7 +44,7 @@ Release Notes.

      This document contains the release notes for the LLVM Compiler -Infrastructure, release 2.9. Here we describe the status of LLVM, including +Infrastructure, release 3.0. Here we describe the status of LLVM, including major improvements from the previous release and significant known problems. All LLVM releases may be downloaded from the LLVM releases web site.

      @@ -79,7 +79,7 @@ current one. To see the release notes f

      -The LLVM 2.9 distribution currently consists of code from the core LLVM +The LLVM 3.0 distribution currently consists of code from the core LLVM repository (which roughly includes the LLVM optimizers, code generators and supporting tools), the Clang repository and the llvm-gcc repository. In addition to this code, the LLVM Project includes other sub-projects that are in @@ -102,13 +102,7 @@ integrating with other development tools production-quality compiler for C, Objective-C, C++ and Objective-C++ on x86 (32- and 64-bit), and for darwin/arm targets.

      -

      In the LLVM 2.9 time-frame, the Clang team has made many improvements in C, -C++ and Objective-C support. C++ support is now generally rock solid, has -been exercised on a broad variety of code, and has several new C++'0x features -implemented (such as rvalue references and variadic templates). LLVM 2.9 has -also brought in a large range of bug fixes and minor features (e.g. __label__ -support), and is much more compatible with the Linux Kernel.

      +

      In the LLVM 3.0 time-frame, the Clang team has made many improvements:

      If Clang rejects your code but another compiler accepts it, please take a look at the language @@ -136,15 +130,11 @@ not known whether the compiled code actu

      -The 2.9 release has the following notable changes: +The 3.0 release has the following notable changes:

        -
      • The plugin is much more stable when compiling Fortran.
      • -
      • Inline assembly where an asm output is tied to an input of a different size -is now supported in many more cases.
      • -
      • Basic support for the __float128 type was added. It is now possible to -generate LLVM IR from programs using __float128 but code generation does not -work yet.
      • -
      • Compiling Java programs no longer systematically crashes the plugin.
      • +
      @@ -165,13 +155,7 @@ function. The compiler-rt library provid this and other low-level routines (some are 3x faster than the equivalent libgcc routines).

      -

      In the LLVM 2.9 timeframe, compiler_rt has had several minor changes for - better ARM support, and a fairly major license change. All of the code in the - compiler-rt project is now dual - licensed under MIT and UIUC license, which allows you to use compiler-rt - in applications without the binary copyright reproduction clause. If you - prefer the LLVM/UIUC license, you are free to continue using it under that - license as well.

      +

      In the LLVM 3.0 timeframe,

      @@ -189,7 +173,7 @@ libraries in the larger LLVM Project, su LLVM disassembler and the LLVM JIT.

      -LLDB is has advanced by leaps and bounds in the 2.9 timeframe. It is +LLDB is has advanced by leaps and bounds in the 3.0 timeframe. It is dramatically more stable and useful, and includes both a new tutorial and a side-by-side comparison with @@ -210,8 +194,7 @@ ground up to specifically target the for delivering great performance.

      -In the LLVM 2.9 timeframe, libc++ has had numerous bugs fixed, and is now being -co-developed with Clang's C++'0x mode.

      +In the LLVM 3.0 timeframe,

      Like compiler_rt, libc++ is now dual @@ -245,7 +228,7 @@ Like compiler_rt, libc++ is now

      The VMKit project is an implementation of a Java Virtual Machine (Java VM or JVM) that uses LLVM for static and - just-in-time compilation. As of LLVM 2.9, VMKit now supports generational + just-in-time compilation. As of LLVM 3.0, VMKit now supports generational garbage collectors. The garbage collectors are provided by the MMTk framework, and VMKit can be configured to use one of the numerous implemented collectors of MMTk. @@ -275,7 +258,7 @@ be used to verify some algorithms.

      - External Open Source Projects Using LLVM 2.9 + External Open Source Projects Using LLVM 3.0

      @@ -283,7 +266,7 @@ be used to verify some algorithms.

      An exciting aspect of LLVM is that it is used as an enabling technology for a lot of other language and tools projects. This section lists some of the - projects that have already been updated to work with LLVM 2.9.

      + projects that have already been updated to work with LLVM 3.0.

      Crack Programming Language

      @@ -344,7 +327,7 @@ bitcode with SystemC-specific informatio modules, and inline C, C++, Fortran and Faust code in Pure programs if the corresponding LLVM-enabled compilers are installed).

      -

      Pure version 0.47 has been tested and is known to work with LLVM 2.9 +

      Pure version 0.47 has been tested and is known to work with LLVM 3.0 (and continues to work with older LLVM releases >= 2.5).

      @@ -363,7 +346,7 @@ code.

      OpenJDK 7 b112, IcedTea6 1.9 and IcedTea7 1.13 and later have been tested -and are known to work with LLVM 2.9 (and continue to work with older LLVM +and are known to work with LLVM 3.0 (and continue to work with older LLVM releases >= 2.6 as well).

      @@ -420,7 +403,7 @@ and parallelism.

      audio signal processing. The name FAUST stands for Functional AUdio STream. Its programming model combines two approaches: functional programming and block diagram composition. In addition with the C, C++, JAVA output formats, the -Faust compiler can now generate LLVM bitcode, and works with LLVM 2.7-2.9.

      +Faust compiler can now generate LLVM bitcode, and works with LLVM 2.7-3.0.

      @@ -428,7 +411,7 @@ Faust compiler can now generate LLVM bit

      - What's New in LLVM 2.9? + What's New in LLVM 3.0?

      @@ -446,24 +429,13 @@ in this section.
      -

      LLVM 2.9 includes several major new capabilities:

      +

      LLVM 3.0 includes several major new capabilities:

        - -
      • Type Based Alias Analysis (TBAA) is now implemented and turned on by default - in Clang. This allows substantially better load/store optimization in some - cases. TBAA can be disabled by passing -fno-strict-aliasing. -
      • -
      • This release has seen a continued focus on quality of debug information. - LLVM now generates much higher fidelity debug information, particularly when - debugging optimized code.
      • - -
      • Inline assembly now supports multiple alternative constraints.
      • - -
      • A new backend for the NVIDIA PTX virtual ISA (used to target its GPUs) is - under rapid development. It is not generally useful in 2.9, but is making - rapid progress.
      • +
      @@ -479,19 +451,9 @@ in this section. expose new optimization opportunities:

        -
      • The udiv, ashr, lshr, and shl - instructions now have support exact and nuw/nsw bits to indicate that they - don't overflow or shift out bits. This is useful for optimization of pointer differences and other cases.
      • - -
      • LLVM IR now supports the unnamed_addr - attribute to indicate that constant global variables with identical - initializers can be merged. This fixed an - issue where LLVM would incorrectly merge two globals which were supposed - to have distinct addresses.
      • - -
      • The new hotpatch attribute has been added - to allow runtime patching of functions.
      • +
      @@ -507,57 +469,9 @@ expose new optimization opportunities:
        -
      • Link Time Optimization (LTO) has been improved to use MC for parsing inline - assembly and now can build large programs like Firefox 4 on both Mac OS X and - Linux.
      • - -
      • The new -loop-idiom pass recognizes memset/memcpy loops (and memset_pattern - on darwin), turning them into library calls, which are typically better - optimized than inline code. If you are building a libc and notice that your - memcpy and memset functions are compiled into infinite recursion, please build - with -ffreestanding or -fno-builtin to disable this pass.
      • - -
      • A new -early-cse pass does a fast pass over functions to fold constants, - simplify expressions, perform simple dead store elimination, and perform - common subexpression elimination. It does a good job at catching some of the - trivial redundancies that exist in unoptimized code, making later passes more - effective.
      • - -
      • A new -loop-instsimplify pass is used to clean up loop bodies in the loop - optimizer.
      • - -
      • The new TargetLibraryInfo interface allows mid-level optimizations to know - whether the current target's runtime library has certain functions. For - example, the optimizer can now transform integer-only printf calls to call - iprintf, allowing reduced code size for embedded C libraries (e.g. newlib). -
      • - -
      • LLVM has a new RegionPass - infrastructure for region-based optimizations.
      • - -
      • Several optimizer passes have been substantially sped up: - GVN is much faster on functions with deep dominator trees and lots of basic - blocks. The dominator tree and dominance frontier passes are much faster to - compute, and preserved by more passes (so they are computed less often). The - -scalar-repl pass is also much faster and doesn't use DominanceFrontier. -
      • - -
      • The Dead Store Elimination pass is more aggressive optimizing stores of - different types: e.g. a large store following a small one to the same address. - The MemCpyOptimizer pass handles several new forms of memcpy elimination.
      • *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 15:44:15 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 183601065670; Sun, 12 Jun 2011 15:44:15 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E436C8FC0C; Sun, 12 Jun 2011 15:44:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CFiEuY030802; Sun, 12 Jun 2011 15:44:14 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CFiEcB030801; Sun, 12 Jun 2011 15:44:14 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201106121544.p5CFiEcB030801@svn.freebsd.org> From: Dimitry Andric Date: Sun, 12 Jun 2011 15:44:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223014 - vendor/llvm/llvm-r132879 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 15:44:15 -0000 Author: dim Date: Sun Jun 12 15:44:14 2011 New Revision: 223014 URL: http://svn.freebsd.org/changeset/base/223014 Log: Tag llvm r132879. Added: vendor/llvm/llvm-r132879/ - copied from r223013, vendor/llvm/dist/ From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 15:46:17 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 22493106566C; Sun, 12 Jun 2011 15:46:17 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0DDB18FC13; Sun, 12 Jun 2011 15:46:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CFkHss030931; Sun, 12 Jun 2011 15:46:17 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CFkGKg030914; Sun, 12 Jun 2011 15:46:16 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201106121546.p5CFkGKg030914@svn.freebsd.org> From: Dimitry Andric Date: Sun, 12 Jun 2011 15:46:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223015 - in vendor/clang/dist: . clang.xcodeproj docs examples examples/Tooling examples/Tooling/RemoveCStrCalls examples/clang-interpreter examples/wpa include/clang-c include/clang/A... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 15:46:17 -0000 Author: dim Date: Sun Jun 12 15:46:16 2011 New Revision: 223015 URL: http://svn.freebsd.org/changeset/base/223015 Log: Vendor import of clang trunk r132879: http://llvm.org/svn/llvm-project/cfe/trunk@132879 Added: vendor/clang/dist/examples/Tooling/RemoveCStrCalls/ vendor/clang/dist/test/Analysis/misc-ps-cxx0x.cpp vendor/clang/dist/test/Analysis/misc-ps.c vendor/clang/dist/test/Analysis/retain-release.mm vendor/clang/dist/test/CXX/class/class.mem/p5-0x.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p1.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.elab/p2-0x.cpp vendor/clang/dist/test/CXX/dcl.decl/dcl.init/dcl.init.aggr/p1-0x.cpp vendor/clang/dist/test/CXX/dcl.decl/dcl.init/p14-0x.cpp vendor/clang/dist/test/CXX/expr/expr.const/p2-0x.cpp vendor/clang/dist/test/CXX/expr/expr.post/expr.call/p7-0x.cpp vendor/clang/dist/test/CXX/expr/expr.prim/p12-0x.cpp vendor/clang/dist/test/CXX/expr/expr.prim/p4-0x.cpp vendor/clang/dist/test/CXX/special/class.ctor/p5-0x.cpp vendor/clang/dist/test/CXX/special/class.dtor/p3-0x.cpp vendor/clang/dist/test/CXX/special/class.init/class.base.init/p8-0x.cpp vendor/clang/dist/test/CXX/special/class.init/class.base.init/p9-0x.cpp vendor/clang/dist/test/CXX/stmt.stmt/stmt.dcl/p3-0x.cpp vendor/clang/dist/test/CXX/stmt.stmt/stmt.dcl/p3.cpp vendor/clang/dist/test/CXX/temp/temp.decls/p3.cpp vendor/clang/dist/test/CXX/temp/temp.decls/temp.alias/p1.cpp vendor/clang/dist/test/CXX/temp/temp.decls/temp.alias/p2.cpp vendor/clang/dist/test/CXX/temp/temp.decls/temp.alias/p3.cpp vendor/clang/dist/test/CXX/temp/temp.fct.spec/temp.deduct/cwg1170.cpp vendor/clang/dist/test/CXX/temp/temp.param/p10-0x.cpp vendor/clang/dist/test/CXX/temp/temp.res/temp.dep/temp.dep.type/p1.cpp vendor/clang/dist/test/CXX/temp/temp.spec/temp.expl.spec/examples.cpp vendor/clang/dist/test/CXX/temp/temp.spec/temp.expl.spec/p5-example.cpp vendor/clang/dist/test/CXX/temp/temp.type/p1-0x.cpp vendor/clang/dist/test/CodeGen/arm-asm.c vendor/clang/dist/test/CodeGen/asm-label.c vendor/clang/dist/test/CodeGen/avx-cmp-builtins.c vendor/clang/dist/test/CodeGen/byval-memcpy-elim.c vendor/clang/dist/test/CodeGen/ms_struct-bitfield-1.c vendor/clang/dist/test/CodeGen/ms_struct-bitfield-2.c vendor/clang/dist/test/CodeGen/ms_struct-bitfield-3.c vendor/clang/dist/test/CodeGen/ms_struct-pack.c vendor/clang/dist/test/CodeGen/ms_struct.c vendor/clang/dist/test/CodeGenCXX/abstract-class-ctors-dtors.cpp vendor/clang/dist/test/CodeGenCXX/cxx0x-defaulted-templates.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-pubtypes.cpp vendor/clang/dist/test/CodeGenCXX/instrument-functions.cpp vendor/clang/dist/test/CodeGenCXX/mangle-alias-template.cpp vendor/clang/dist/test/CodeGenCXX/mangle-unnameable-conversions.cpp vendor/clang/dist/test/CodeGenCXX/member-init-ctor.cpp vendor/clang/dist/test/CodeGenCXX/pr9965.cpp vendor/clang/dist/test/CodeGenCXX/scoped-enums.cpp vendor/clang/dist/test/CodeGenCXX/skip-vtable-pointer-initialization.cpp vendor/clang/dist/test/CodeGenCXX/vararg-non-pod.cpp vendor/clang/dist/test/CodeGenObjC/constant-string-class-1.m vendor/clang/dist/test/CodeGenObjC/debug-info-block-helper.m vendor/clang/dist/test/CodeGenObjC/debug-info-blocks.m vendor/clang/dist/test/CodeGenObjC/debug-info-class-extension.m vendor/clang/dist/test/CodeGenObjC/debug-info-class-extension2.m vendor/clang/dist/test/CodeGenObjC/debug-info-class-extension3.m vendor/clang/dist/test/CodeGenObjC/debug-info-pubtypes.m vendor/clang/dist/test/CodeGenObjC/debug-property-synth.m vendor/clang/dist/test/CodeGenObjC/forward-decl-param.m vendor/clang/dist/test/CodeGenObjCXX/block-in-template-inst.mm vendor/clang/dist/test/Driver/cfi.c vendor/clang/dist/test/Driver/nostdlib.c vendor/clang/dist/test/Driver/sysroot.c vendor/clang/dist/test/Frontend/undef.c vendor/clang/dist/test/Index/Inputs/guarded.h vendor/clang/dist/test/Index/Inputs/pragma-once.h vendor/clang/dist/test/Index/nested-macro-instantiations.cpp vendor/clang/dist/test/Lexer/has_extension.c vendor/clang/dist/test/Lexer/has_extension_cxx.cpp vendor/clang/dist/test/Lexer/has_feature_c1x.c vendor/clang/dist/test/Misc/diag-format.c vendor/clang/dist/test/PCH/cxx-alias-decl.cpp vendor/clang/dist/test/PCH/cxx-alias-decl.h vendor/clang/dist/test/PCH/cxx-member-init.cpp vendor/clang/dist/test/PCH/cxx0x-default-delete.cpp vendor/clang/dist/test/PCH/cxx0x-delegating-ctors.cpp vendor/clang/dist/test/PCH/modified-header-error.c vendor/clang/dist/test/Parser/cxx-default-delete.cpp vendor/clang/dist/test/Parser/cxx-ext-delete-default.cpp vendor/clang/dist/test/Parser/cxx0x-member-initializers.cpp vendor/clang/dist/test/Parser/nested-namespaces-recovery.cpp vendor/clang/dist/test/Parser/opencl-astype.cl vendor/clang/dist/test/Sema/parentheses.cpp vendor/clang/dist/test/SemaCXX/PR9884.cpp vendor/clang/dist/test/SemaCXX/PR9902.cpp vendor/clang/dist/test/SemaCXX/PR9908.cpp vendor/clang/dist/test/SemaCXX/alias-template.cpp vendor/clang/dist/test/SemaCXX/cxx0x-cursory-default-delete.cpp vendor/clang/dist/test/SemaCXX/cxx0x-defaulted-functions.cpp vendor/clang/dist/test/SemaCXX/cxx0x-deleted-default-ctor.cpp vendor/clang/dist/test/SemaCXX/cxx0x-nontrivial-union.cpp vendor/clang/dist/test/SemaCXX/default-arg-special-member.cpp vendor/clang/dist/test/SemaCXX/defaulted-ctor-loop.cpp vendor/clang/dist/test/SemaCXX/dependent-noexcept-unevaluated.cpp vendor/clang/dist/test/SemaCXX/generalized-initializers.cpp vendor/clang/dist/test/SemaCXX/implicit-exception-spec.cpp vendor/clang/dist/test/SemaCXX/member-init.cpp vendor/clang/dist/test/SemaCXX/redeclared-alias-template.cpp vendor/clang/dist/test/SemaCXX/tag-ambig.cpp vendor/clang/dist/test/SemaCXX/underlying_type.cpp vendor/clang/dist/test/SemaCXX/warn-bad-memaccess.cpp vendor/clang/dist/test/SemaCXX/warn-pure-virtual-call-from-ctor-dtor.cpp vendor/clang/dist/test/SemaObjC/gc-attributes.m vendor/clang/dist/test/SemaObjC/related-result-type-inference.m vendor/clang/dist/test/SemaObjCXX/gc-attributes.mm vendor/clang/dist/test/SemaObjCXX/namespace-lookup.mm vendor/clang/dist/test/SemaObjCXX/nullptr.mm vendor/clang/dist/test/SemaObjCXX/related-result-type-inference.mm vendor/clang/dist/test/SemaTemplate/alias-church-numerals.cpp vendor/clang/dist/test/SemaTemplate/alias-nested-nontag.cpp vendor/clang/dist/test/SemaTemplate/alias-template-template-param.cpp vendor/clang/dist/test/SemaTemplate/alias-templates.cpp vendor/clang/dist/test/SemaTemplate/dependent-names-no-std.cpp vendor/clang/dist/test/SemaTemplate/rdar9173693.cpp vendor/clang/dist/test/Tooling/ Deleted: vendor/clang/dist/docs/doxygen.cfg vendor/clang/dist/docs/libIndex.html vendor/clang/dist/examples/Tooling/CMakeLists.txt vendor/clang/dist/examples/Tooling/ClangCheck.cpp vendor/clang/dist/examples/Tooling/Makefile vendor/clang/dist/include/clang/Tooling/Tooling.h vendor/clang/dist/lib/Frontend/DiagChecker.cpp vendor/clang/dist/lib/Tooling/CMakeLists.txt vendor/clang/dist/lib/Tooling/JsonCompileCommandLineDatabase.cpp vendor/clang/dist/lib/Tooling/JsonCompileCommandLineDatabase.h vendor/clang/dist/lib/Tooling/Makefile vendor/clang/dist/lib/Tooling/Tooling.cpp vendor/clang/dist/test/CodeGenObjC/unwind-fn.m vendor/clang/dist/test/PCH/cxx-static_assert.h vendor/clang/dist/test/SemaCXX/deleted-function-extension.cpp vendor/clang/dist/test/SemaCXX/warn-non-pod-memset.cpp vendor/clang/dist/unittests/Tooling/JsonCompileCommandLineDatabaseTest.cpp vendor/clang/dist/unittests/Tooling/ToolingTest.cpp vendor/clang/dist/www/CheckerNotes.html vendor/clang/dist/www/StaticAnalysis.html vendor/clang/dist/www/StaticAnalysisUsage.html vendor/clang/dist/www/clang-tutorial.html vendor/clang/dist/www/distclang_status.html Modified: vendor/clang/dist/CMakeLists.txt vendor/clang/dist/clang.xcodeproj/project.pbxproj vendor/clang/dist/docs/LanguageExtensions.html vendor/clang/dist/docs/Makefile vendor/clang/dist/docs/UsersManual.html vendor/clang/dist/docs/doxygen.cfg.in vendor/clang/dist/examples/CMakeLists.txt vendor/clang/dist/examples/clang-interpreter/Makefile vendor/clang/dist/examples/clang-interpreter/main.cpp vendor/clang/dist/examples/wpa/Makefile vendor/clang/dist/include/clang-c/Index.h vendor/clang/dist/include/clang/AST/APValue.h vendor/clang/dist/include/clang/AST/ASTContext.h vendor/clang/dist/include/clang/AST/CanonicalType.h vendor/clang/dist/include/clang/AST/Decl.h vendor/clang/dist/include/clang/AST/DeclBase.h vendor/clang/dist/include/clang/AST/DeclCXX.h vendor/clang/dist/include/clang/AST/DeclObjC.h vendor/clang/dist/include/clang/AST/DeclTemplate.h vendor/clang/dist/include/clang/AST/Expr.h vendor/clang/dist/include/clang/AST/ExternalASTSource.h vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h vendor/clang/dist/include/clang/AST/StmtVisitor.h vendor/clang/dist/include/clang/AST/Type.h vendor/clang/dist/include/clang/AST/TypeLoc.h vendor/clang/dist/include/clang/AST/TypeNodes.def vendor/clang/dist/include/clang/Basic/BuiltinsARM.def vendor/clang/dist/include/clang/Basic/BuiltinsX86.def vendor/clang/dist/include/clang/Basic/DeclNodes.td vendor/clang/dist/include/clang/Basic/Diagnostic.h vendor/clang/dist/include/clang/Basic/DiagnosticCommonKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticFrontendKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td vendor/clang/dist/include/clang/Basic/DiagnosticIDs.h vendor/clang/dist/include/clang/Basic/DiagnosticParseKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td vendor/clang/dist/include/clang/Basic/ExceptionSpecificationType.h vendor/clang/dist/include/clang/Basic/IdentifierTable.h vendor/clang/dist/include/clang/Basic/LangOptions.h vendor/clang/dist/include/clang/Basic/SourceLocation.h vendor/clang/dist/include/clang/Basic/SourceManager.h vendor/clang/dist/include/clang/Basic/Specifiers.h vendor/clang/dist/include/clang/Basic/StmtNodes.td vendor/clang/dist/include/clang/Basic/TargetInfo.h vendor/clang/dist/include/clang/Basic/TokenKinds.def vendor/clang/dist/include/clang/Basic/TypeTraits.h vendor/clang/dist/include/clang/Basic/arm_neon.td vendor/clang/dist/include/clang/Driver/CC1AsOptions.td vendor/clang/dist/include/clang/Driver/CC1Options.td vendor/clang/dist/include/clang/Driver/Options.td vendor/clang/dist/include/clang/Driver/ToolChain.h vendor/clang/dist/include/clang/Frontend/ASTUnit.h vendor/clang/dist/include/clang/Frontend/CodeGenOptions.h vendor/clang/dist/include/clang/Frontend/DiagnosticOptions.h vendor/clang/dist/include/clang/Frontend/LangStandard.h vendor/clang/dist/include/clang/Frontend/LangStandards.def vendor/clang/dist/include/clang/Frontend/PreprocessorOptions.h vendor/clang/dist/include/clang/Frontend/Utils.h vendor/clang/dist/include/clang/Lex/HeaderSearch.h vendor/clang/dist/include/clang/Lex/LiteralSupport.h vendor/clang/dist/include/clang/Lex/PreprocessingRecord.h vendor/clang/dist/include/clang/Lex/Preprocessor.h vendor/clang/dist/include/clang/Parse/Parser.h vendor/clang/dist/include/clang/Sema/CodeCompleteConsumer.h vendor/clang/dist/include/clang/Sema/DeclSpec.h vendor/clang/dist/include/clang/Sema/Initialization.h vendor/clang/dist/include/clang/Sema/Lookup.h vendor/clang/dist/include/clang/Sema/Overload.h vendor/clang/dist/include/clang/Sema/Scope.h vendor/clang/dist/include/clang/Sema/Sema.h vendor/clang/dist/include/clang/Sema/Template.h vendor/clang/dist/include/clang/Serialization/ASTBitCodes.h vendor/clang/dist/include/clang/Serialization/ASTReader.h vendor/clang/dist/include/clang/Serialization/ASTWriter.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/Checker.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/CheckerManager.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/GRState.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/ObjCMessage.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h vendor/clang/dist/lib/AST/APValue.cpp vendor/clang/dist/lib/AST/ASTContext.cpp vendor/clang/dist/lib/AST/ASTDiagnostic.cpp vendor/clang/dist/lib/AST/ASTImporter.cpp vendor/clang/dist/lib/AST/Decl.cpp vendor/clang/dist/lib/AST/DeclBase.cpp vendor/clang/dist/lib/AST/DeclCXX.cpp vendor/clang/dist/lib/AST/DeclObjC.cpp vendor/clang/dist/lib/AST/DeclPrinter.cpp vendor/clang/dist/lib/AST/DeclTemplate.cpp vendor/clang/dist/lib/AST/DumpXML.cpp vendor/clang/dist/lib/AST/Expr.cpp vendor/clang/dist/lib/AST/ExprClassification.cpp vendor/clang/dist/lib/AST/ExprConstant.cpp vendor/clang/dist/lib/AST/ExternalASTSource.cpp vendor/clang/dist/lib/AST/ItaniumMangle.cpp vendor/clang/dist/lib/AST/Mangle.cpp vendor/clang/dist/lib/AST/MicrosoftMangle.cpp vendor/clang/dist/lib/AST/RecordLayoutBuilder.cpp vendor/clang/dist/lib/AST/StmtPrinter.cpp vendor/clang/dist/lib/AST/StmtProfile.cpp vendor/clang/dist/lib/AST/Type.cpp vendor/clang/dist/lib/AST/TypePrinter.cpp vendor/clang/dist/lib/Analysis/AnalysisContext.cpp vendor/clang/dist/lib/Analysis/CFG.cpp vendor/clang/dist/lib/Analysis/CocoaConventions.cpp vendor/clang/dist/lib/Analysis/LiveVariables.cpp vendor/clang/dist/lib/Analysis/UninitializedValues.cpp vendor/clang/dist/lib/Basic/Diagnostic.cpp vendor/clang/dist/lib/Basic/DiagnosticIDs.cpp vendor/clang/dist/lib/Basic/FileManager.cpp vendor/clang/dist/lib/Basic/IdentifierTable.cpp vendor/clang/dist/lib/Basic/SourceManager.cpp vendor/clang/dist/lib/Basic/Targets.cpp vendor/clang/dist/lib/CMakeLists.txt vendor/clang/dist/lib/CodeGen/BackendUtil.cpp vendor/clang/dist/lib/CodeGen/CGBlocks.cpp vendor/clang/dist/lib/CodeGen/CGBuiltin.cpp vendor/clang/dist/lib/CodeGen/CGCXX.cpp vendor/clang/dist/lib/CodeGen/CGCall.cpp vendor/clang/dist/lib/CodeGen/CGCall.h vendor/clang/dist/lib/CodeGen/CGClass.cpp vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp vendor/clang/dist/lib/CodeGen/CGDebugInfo.h vendor/clang/dist/lib/CodeGen/CGDecl.cpp vendor/clang/dist/lib/CodeGen/CGDeclCXX.cpp vendor/clang/dist/lib/CodeGen/CGException.cpp vendor/clang/dist/lib/CodeGen/CGExpr.cpp vendor/clang/dist/lib/CodeGen/CGExprAgg.cpp vendor/clang/dist/lib/CodeGen/CGExprCXX.cpp vendor/clang/dist/lib/CodeGen/CGExprConstant.cpp vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp vendor/clang/dist/lib/CodeGen/CGObjC.cpp vendor/clang/dist/lib/CodeGen/CGObjCGNU.cpp vendor/clang/dist/lib/CodeGen/CGObjCMac.cpp vendor/clang/dist/lib/CodeGen/CGObjCRuntime.cpp vendor/clang/dist/lib/CodeGen/CGObjCRuntime.h vendor/clang/dist/lib/CodeGen/CGRecordLayoutBuilder.cpp vendor/clang/dist/lib/CodeGen/CGStmt.cpp vendor/clang/dist/lib/CodeGen/CGVTT.cpp vendor/clang/dist/lib/CodeGen/CGVTables.cpp vendor/clang/dist/lib/CodeGen/CodeGenFunction.cpp vendor/clang/dist/lib/CodeGen/CodeGenFunction.h vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp vendor/clang/dist/lib/CodeGen/CodeGenModule.h vendor/clang/dist/lib/CodeGen/CodeGenTypes.h vendor/clang/dist/lib/CodeGen/ItaniumCXXABI.cpp vendor/clang/dist/lib/CodeGen/ModuleBuilder.cpp vendor/clang/dist/lib/CodeGen/TargetInfo.cpp vendor/clang/dist/lib/Driver/Driver.cpp vendor/clang/dist/lib/Driver/HostInfo.cpp vendor/clang/dist/lib/Driver/ToolChains.cpp vendor/clang/dist/lib/Driver/ToolChains.h vendor/clang/dist/lib/Driver/Tools.cpp vendor/clang/dist/lib/Driver/Tools.h vendor/clang/dist/lib/Frontend/ASTConsumers.cpp vendor/clang/dist/lib/Frontend/ASTUnit.cpp vendor/clang/dist/lib/Frontend/CMakeLists.txt vendor/clang/dist/lib/Frontend/CompilerInstance.cpp vendor/clang/dist/lib/Frontend/CompilerInvocation.cpp vendor/clang/dist/lib/Frontend/CreateInvocationFromCommandLine.cpp vendor/clang/dist/lib/Frontend/InitHeaderSearch.cpp vendor/clang/dist/lib/Frontend/InitPreprocessor.cpp vendor/clang/dist/lib/Frontend/LogDiagnosticPrinter.cpp vendor/clang/dist/lib/Frontend/TextDiagnosticPrinter.cpp vendor/clang/dist/lib/Frontend/Warnings.cpp vendor/clang/dist/lib/Headers/emmintrin.h vendor/clang/dist/lib/Headers/mmintrin.h vendor/clang/dist/lib/Headers/xmmintrin.h vendor/clang/dist/lib/Index/CallGraph.cpp vendor/clang/dist/lib/Index/Indexer.cpp vendor/clang/dist/lib/Lex/HeaderSearch.cpp vendor/clang/dist/lib/Lex/Lexer.cpp vendor/clang/dist/lib/Lex/LiteralSupport.cpp vendor/clang/dist/lib/Lex/MacroInfo.cpp vendor/clang/dist/lib/Lex/PPDirectives.cpp vendor/clang/dist/lib/Lex/PPMacroExpansion.cpp vendor/clang/dist/lib/Lex/Pragma.cpp vendor/clang/dist/lib/Lex/PreprocessingRecord.cpp vendor/clang/dist/lib/Lex/Preprocessor.cpp vendor/clang/dist/lib/Makefile vendor/clang/dist/lib/Parse/ParseCXXInlineMethods.cpp vendor/clang/dist/lib/Parse/ParseDecl.cpp vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp vendor/clang/dist/lib/Parse/ParseExpr.cpp vendor/clang/dist/lib/Parse/ParseExprCXX.cpp vendor/clang/dist/lib/Parse/ParseObjc.cpp vendor/clang/dist/lib/Parse/ParsePragma.cpp vendor/clang/dist/lib/Parse/ParseStmt.cpp vendor/clang/dist/lib/Parse/ParseTemplate.cpp vendor/clang/dist/lib/Parse/ParseTentative.cpp vendor/clang/dist/lib/Parse/Parser.cpp vendor/clang/dist/lib/Rewrite/RewriteObjC.cpp vendor/clang/dist/lib/Sema/AnalysisBasedWarnings.cpp vendor/clang/dist/lib/Sema/DeclSpec.cpp vendor/clang/dist/lib/Sema/JumpDiagnostics.cpp vendor/clang/dist/lib/Sema/Sema.cpp vendor/clang/dist/lib/Sema/SemaAccess.cpp vendor/clang/dist/lib/Sema/SemaCXXCast.cpp vendor/clang/dist/lib/Sema/SemaCXXScopeSpec.cpp vendor/clang/dist/lib/Sema/SemaChecking.cpp vendor/clang/dist/lib/Sema/SemaCodeComplete.cpp vendor/clang/dist/lib/Sema/SemaDecl.cpp vendor/clang/dist/lib/Sema/SemaDeclCXX.cpp vendor/clang/dist/lib/Sema/SemaDeclObjC.cpp vendor/clang/dist/lib/Sema/SemaExceptionSpec.cpp vendor/clang/dist/lib/Sema/SemaExpr.cpp vendor/clang/dist/lib/Sema/SemaExprCXX.cpp vendor/clang/dist/lib/Sema/SemaExprObjC.cpp vendor/clang/dist/lib/Sema/SemaInit.cpp vendor/clang/dist/lib/Sema/SemaLookup.cpp vendor/clang/dist/lib/Sema/SemaOverload.cpp vendor/clang/dist/lib/Sema/SemaStmt.cpp vendor/clang/dist/lib/Sema/SemaTemplate.cpp vendor/clang/dist/lib/Sema/SemaTemplateDeduction.cpp vendor/clang/dist/lib/Sema/SemaTemplateInstantiate.cpp vendor/clang/dist/lib/Sema/SemaTemplateInstantiateDecl.cpp vendor/clang/dist/lib/Sema/SemaTemplateVariadic.cpp vendor/clang/dist/lib/Sema/SemaType.cpp vendor/clang/dist/lib/Sema/TreeTransform.h vendor/clang/dist/lib/Serialization/ASTReader.cpp vendor/clang/dist/lib/Serialization/ASTReaderDecl.cpp vendor/clang/dist/lib/Serialization/ASTReaderStmt.cpp vendor/clang/dist/lib/Serialization/ASTWriter.cpp vendor/clang/dist/lib/Serialization/ASTWriterDecl.cpp vendor/clang/dist/lib/Serialization/ASTWriterStmt.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/CStringChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/NSErrorChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/BasicStore.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/BasicValueFactory.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/CFRefCount.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/CXXExprEngine.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/CheckerManager.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/Environment.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/ExprEngine.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/FlatStore.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/GRState.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/ObjCMessage.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/RegionStore.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp vendor/clang/dist/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp vendor/clang/dist/test/Analysis/CFNumber.c vendor/clang/dist/test/Analysis/bstring.c vendor/clang/dist/test/Analysis/misc-ps-region-store.cpp vendor/clang/dist/test/Analysis/misc-ps-region-store.m vendor/clang/dist/test/Analysis/misc-ps.m vendor/clang/dist/test/Analysis/plist-output-alternate.m vendor/clang/dist/test/Analysis/retain-release.m vendor/clang/dist/test/Analysis/string.c vendor/clang/dist/test/CMakeLists.txt vendor/clang/dist/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp vendor/clang/dist/test/CXX/class.access/class.friend/p2-cxx03.cpp vendor/clang/dist/test/CXX/class.access/p4.cpp vendor/clang/dist/test/CXX/class/class.friend/p2.cpp vendor/clang/dist/test/CXX/class/class.mem/p1b.cpp vendor/clang/dist/test/CXX/dcl.dcl/basic.namespace/namespace.def/p7.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p5.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.type/p3-0x.cpp vendor/clang/dist/test/CXX/dcl.decl/dcl.init/p6.cpp vendor/clang/dist/test/CXX/except/except.spec/p1.cpp vendor/clang/dist/test/CXX/except/except.spec/p14.cpp vendor/clang/dist/test/CXX/except/except.spec/p9-dynamic.cpp vendor/clang/dist/test/CXX/expr/expr.unary/expr.unary.noexcept/sema.cpp vendor/clang/dist/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp vendor/clang/dist/test/CXX/temp/temp.decls/temp.friend/p3.cpp vendor/clang/dist/test/CXX/temp/temp.decls/temp.variadic/ext-blocks.cpp vendor/clang/dist/test/CXX/temp/temp.param/p11-0x.cpp vendor/clang/dist/test/CXX/temp/temp.param/p9-0x.cpp vendor/clang/dist/test/CXX/temp/temp.spec/temp.expl.spec/p15.cpp vendor/clang/dist/test/CXX/temp/temp.spec/temp.expl.spec/p16.cpp vendor/clang/dist/test/CXX/temp/temp.spec/temp.expl.spec/p17.cpp vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p2.cpp vendor/clang/dist/test/CodeGen/2009-10-20-GlobalDebug.c vendor/clang/dist/test/CodeGen/altivec.c vendor/clang/dist/test/CodeGen/asm-errors.c vendor/clang/dist/test/CodeGen/available-externally-suppress.c vendor/clang/dist/test/CodeGen/builtins-ppc-altivec.c vendor/clang/dist/test/CodeGen/builtins-x86.c vendor/clang/dist/test/CodeGen/builtinshufflevector.c vendor/clang/dist/test/CodeGen/debug-info-crash.c vendor/clang/dist/test/CodeGen/debug-info.c vendor/clang/dist/test/CodeGen/decl.c vendor/clang/dist/test/CodeGen/ext-vector.c vendor/clang/dist/test/CodeGen/extern-inline.c vendor/clang/dist/test/CodeGen/frame-pointer-elim.c vendor/clang/dist/test/CodeGen/inline.c vendor/clang/dist/test/CodeGen/mmx-builtins.c vendor/clang/dist/test/CodeGen/packed-arrays.c vendor/clang/dist/test/CodeGen/packed-structure.c vendor/clang/dist/test/CodeGen/palignr.c vendor/clang/dist/test/CodeGen/string-literal-short-wstring.c vendor/clang/dist/test/CodeGen/string-literal.c vendor/clang/dist/test/CodeGen/struct-passing.c vendor/clang/dist/test/CodeGen/transparent-union.c vendor/clang/dist/test/CodeGen/x86_32-arguments-darwin.c vendor/clang/dist/test/CodeGen/x86_32-arguments-linux.c vendor/clang/dist/test/CodeGen/x86_64-arguments.c vendor/clang/dist/test/CodeGenCXX/PR5050-constructor-conversion.cpp vendor/clang/dist/test/CodeGenCXX/arm.cpp vendor/clang/dist/test/CodeGenCXX/array-construction.cpp vendor/clang/dist/test/CodeGenCXX/array-operator-delete-call.cpp vendor/clang/dist/test/CodeGenCXX/call-arg-zero-temp.cpp vendor/clang/dist/test/CodeGenCXX/cast-conversion.cpp vendor/clang/dist/test/CodeGenCXX/constructor-conversion.cpp vendor/clang/dist/test/CodeGenCXX/constructor-default-arg.cpp vendor/clang/dist/test/CodeGenCXX/constructor-for-array-members.cpp vendor/clang/dist/test/CodeGenCXX/constructor-template.cpp vendor/clang/dist/test/CodeGenCXX/convert-to-fptr.cpp vendor/clang/dist/test/CodeGenCXX/copy-assign-synthesis-1.cpp vendor/clang/dist/test/CodeGenCXX/cxx0x-delegating-ctors.cpp vendor/clang/dist/test/CodeGenCXX/decl-ref-init.cpp vendor/clang/dist/test/CodeGenCXX/default-constructor-for-members.cpp vendor/clang/dist/test/CodeGenCXX/derived-to-base-conv.cpp vendor/clang/dist/test/CodeGenCXX/destructors.cpp vendor/clang/dist/test/CodeGenCXX/eh.cpp vendor/clang/dist/test/CodeGenCXX/exceptions.cpp vendor/clang/dist/test/CodeGenCXX/global-array-destruction.cpp vendor/clang/dist/test/CodeGenCXX/global-llvm-constant.cpp vendor/clang/dist/test/CodeGenCXX/goto.cpp vendor/clang/dist/test/CodeGenCXX/internal-linkage.cpp vendor/clang/dist/test/CodeGenCXX/mangle-exprs.cpp vendor/clang/dist/test/CodeGenCXX/mangle-subst-std.cpp vendor/clang/dist/test/CodeGenCXX/mangle.cpp vendor/clang/dist/test/CodeGenCXX/new.cpp vendor/clang/dist/test/CodeGenCXX/nrvo.cpp vendor/clang/dist/test/CodeGenCXX/ptr-to-member-function.cpp vendor/clang/dist/test/CodeGenCXX/static-init-2.cpp vendor/clang/dist/test/CodeGenCXX/template-instantiation.cpp vendor/clang/dist/test/CodeGenCXX/threadsafe-statics-exceptions.cpp vendor/clang/dist/test/CodeGenCXX/thunks.cpp vendor/clang/dist/test/CodeGenCXX/virtual-base-destructor-call.cpp vendor/clang/dist/test/CodeGenCXX/x86_32-arguments.cpp vendor/clang/dist/test/CodeGenObjC/bitfield-ivar-offsets.m vendor/clang/dist/test/CodeGenObjC/blocks-2.m vendor/clang/dist/test/CodeGenObjC/constant-string-class.m vendor/clang/dist/test/CodeGenObjC/debug-info-crash.m vendor/clang/dist/test/CodeGenObjC/debug-info-getter-name.m vendor/clang/dist/test/CodeGenObjC/debug-info-static-var.m vendor/clang/dist/test/CodeGenObjC/encode-test.m vendor/clang/dist/test/CodeGenObjC/instance-method-metadata.m vendor/clang/dist/test/CodeGenObjC/interface-layout-64.m vendor/clang/dist/test/CodeGenObjC/ivar-layout-array0-struct.m vendor/clang/dist/test/CodeGenObjC/ivar-layout-no-optimize.m vendor/clang/dist/test/CodeGenObjC/messages-2.m vendor/clang/dist/test/CodeGenObjC/metadata-symbols-64.m vendor/clang/dist/test/CodeGenObjC/no-vararg-messaging.m vendor/clang/dist/test/CodeGenObjC/objc-read-weak-byref.m vendor/clang/dist/test/CodeGenObjC/protocol-in-extended-class.m vendor/clang/dist/test/CodeGenObjC/try.m vendor/clang/dist/test/CodeGenObjCXX/blocks.mm vendor/clang/dist/test/CodeGenObjCXX/encode.mm vendor/clang/dist/test/CodeGenObjCXX/mangle.mm vendor/clang/dist/test/CodeGenObjCXX/property-object-conditional-exp.mm vendor/clang/dist/test/Driver/cc-log-diagnostics.c vendor/clang/dist/test/Driver/darwin-debug-flags.c vendor/clang/dist/test/Driver/darwin-ld.c vendor/clang/dist/test/Driver/rewrite-objc.m vendor/clang/dist/test/FixIt/fixit-cxx0x.cpp vendor/clang/dist/test/Frontend/diagnostic-name.c vendor/clang/dist/test/Frontend/ir-support-codegen.ll vendor/clang/dist/test/Index/annotate-context-sensitive.cpp vendor/clang/dist/test/Index/annotate-tokens-pp.c vendor/clang/dist/test/Index/annotate-tokens.m vendor/clang/dist/test/Index/complete-kvc.m vendor/clang/dist/test/Index/complete-member-access.m vendor/clang/dist/test/Index/complete-property-flags.m vendor/clang/dist/test/Index/overrides.cpp vendor/clang/dist/test/Index/properties-class-extensions.m vendor/clang/dist/test/Index/recursive-cxx-member-calls.cpp vendor/clang/dist/test/Index/usrs.cpp vendor/clang/dist/test/Index/usrs.m vendor/clang/dist/test/Lexer/block_cmt_end.c vendor/clang/dist/test/Lexer/has_feature_cxx0x.cpp vendor/clang/dist/test/Lexer/has_feature_type_traits.cpp vendor/clang/dist/test/Misc/Inputs/include.h vendor/clang/dist/test/Misc/include-stack-for-note-flag.cpp vendor/clang/dist/test/PCH/cxx-for-range.cpp vendor/clang/dist/test/PCH/cxx-reference.cpp vendor/clang/dist/test/PCH/cxx-static_assert.cpp vendor/clang/dist/test/PCH/objc_methods.h vendor/clang/dist/test/PCH/objc_methods.m vendor/clang/dist/test/PCH/objcxx-ivar-class.mm vendor/clang/dist/test/Parser/MicrosoftExtensions.cpp vendor/clang/dist/test/Parser/cxx-friend.cpp vendor/clang/dist/test/Preprocessor/if_warning.c vendor/clang/dist/test/Preprocessor/pragma_sysheader.c vendor/clang/dist/test/Sema/MicrosoftExtensions.c vendor/clang/dist/test/Sema/arm-neon-types.c vendor/clang/dist/test/Sema/asm.c vendor/clang/dist/test/Sema/attr-unknown.c vendor/clang/dist/test/Sema/builtins-arm.c vendor/clang/dist/test/Sema/carbon.c vendor/clang/dist/test/Sema/exprs.c vendor/clang/dist/test/Sema/illegal-types.c vendor/clang/dist/test/Sema/parentheses.c vendor/clang/dist/test/Sema/stdcall-fastcall.c vendor/clang/dist/test/Sema/uninit-variables.c vendor/clang/dist/test/Sema/x86-builtin-palignr.c vendor/clang/dist/test/SemaCXX/MicrosoftExtensions.cpp vendor/clang/dist/test/SemaCXX/PR9572.cpp vendor/clang/dist/test/SemaCXX/aggregate-initialization.cpp vendor/clang/dist/test/SemaCXX/anonymous-union.cpp vendor/clang/dist/test/SemaCXX/attr-cxx0x.cpp vendor/clang/dist/test/SemaCXX/attr-noreturn.cpp vendor/clang/dist/test/SemaCXX/attr-regparm.cpp vendor/clang/dist/test/SemaCXX/class.cpp vendor/clang/dist/test/SemaCXX/conversion.cpp vendor/clang/dist/test/SemaCXX/copy-constructor-error.cpp vendor/clang/dist/test/SemaCXX/cxx0x-delegating-ctors.cpp vendor/clang/dist/test/SemaCXX/default-constructor-initializers.cpp vendor/clang/dist/test/SemaCXX/deleted-function.cpp vendor/clang/dist/test/SemaCXX/dependent-types.cpp vendor/clang/dist/test/SemaCXX/destructor.cpp vendor/clang/dist/test/SemaCXX/enum-scoped.cpp vendor/clang/dist/test/SemaCXX/expressions.cpp vendor/clang/dist/test/SemaCXX/implicit-member-functions.cpp vendor/clang/dist/test/SemaCXX/member-expr.cpp vendor/clang/dist/test/SemaCXX/member-pointer.cpp vendor/clang/dist/test/SemaCXX/nullptr.cpp vendor/clang/dist/test/SemaCXX/overload-call.cpp vendor/clang/dist/test/SemaCXX/overloaded-operator.cpp vendor/clang/dist/test/SemaCXX/reinterpret-cast.cpp vendor/clang/dist/test/SemaCXX/return.cpp vendor/clang/dist/test/SemaCXX/struct-class-redecl.cpp vendor/clang/dist/test/SemaCXX/switch.cpp vendor/clang/dist/test/SemaCXX/type-traits.cpp vendor/clang/dist/test/SemaCXX/value-initialization.cpp vendor/clang/dist/test/SemaCXX/vararg-non-pod.cpp vendor/clang/dist/test/SemaCXX/vtable-instantiation.cc vendor/clang/dist/test/SemaObjC/exprs.m vendor/clang/dist/test/SemaObjC/objc2-warn-weak-decl.m vendor/clang/dist/test/SemaObjCXX/blocks.mm vendor/clang/dist/test/SemaObjCXX/overload-gc.mm vendor/clang/dist/test/SemaObjCXX/overload.mm vendor/clang/dist/test/SemaTemplate/deduction-crash.cpp vendor/clang/dist/test/SemaTemplate/dependent-names.cpp vendor/clang/dist/test/SemaTemplate/friend-template.cpp vendor/clang/dist/test/SemaTemplate/instantiate-call.cpp vendor/clang/dist/test/SemaTemplate/instantiate-function-1.cpp vendor/clang/dist/test/SemaTemplate/instantiate-init.cpp vendor/clang/dist/test/SemaTemplate/partial-spec-instantiate.cpp vendor/clang/dist/test/SemaTemplate/typename-specifier.cpp vendor/clang/dist/test/lit.cfg vendor/clang/dist/tools/c-index-test/c-index-test.c vendor/clang/dist/tools/driver/cc1as_main.cpp vendor/clang/dist/tools/libclang/CIndex.cpp vendor/clang/dist/tools/libclang/CIndexCodeCompletion.cpp vendor/clang/dist/tools/libclang/CIndexDiagnostic.cpp vendor/clang/dist/tools/libclang/CIndexUSRs.cpp vendor/clang/dist/tools/libclang/CIndexer.h vendor/clang/dist/tools/libclang/CXCursor.cpp vendor/clang/dist/tools/libclang/CXType.cpp vendor/clang/dist/tools/libclang/libclang.darwin.exports vendor/clang/dist/tools/libclang/libclang.exports vendor/clang/dist/unittests/CMakeLists.txt vendor/clang/dist/www/analyzer/latest_checker.html.incl vendor/clang/dist/www/analyzer/release_notes.html vendor/clang/dist/www/comparison.html vendor/clang/dist/www/compatibility.html vendor/clang/dist/www/cxx_status.html vendor/clang/dist/www/diagnostics.html vendor/clang/dist/www/features.html vendor/clang/dist/www/libstdc++4.4-clang0x.patch Modified: vendor/clang/dist/CMakeLists.txt ============================================================================== --- vendor/clang/dist/CMakeLists.txt Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/CMakeLists.txt Sun Jun 12 15:46:16 2011 (r223015) @@ -57,6 +57,13 @@ set(CLANG_RESOURCE_DIR "" CACHE STRING set(C_INCLUDE_DIRS "" CACHE STRING "Colon separated list of directories clang will search for headers.") +set(CLANG_VENDOR "" CACHE STRING + "Vendor-specific text for showing with version information.") + +if( CLANG_VENDOR ) + add_definitions( -DCLANG_VENDOR="${CLANG_VENDOR} " ) +endif() + set(CLANG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(CLANG_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) @@ -103,7 +110,7 @@ configure_file( ${CMAKE_CURRENT_BINARY_DIR}/include/clang/Basic/Version.inc) # Add appropriate flags for GCC -if (CMAKE_COMPILER_IS_GNUCXX) +if (LLVM_COMPILER_IS_GCC_COMPATIBLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings") endif () Modified: vendor/clang/dist/clang.xcodeproj/project.pbxproj ============================================================================== --- vendor/clang/dist/clang.xcodeproj/project.pbxproj Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/clang.xcodeproj/project.pbxproj Sun Jun 12 15:46:16 2011 (r223015) @@ -6,6 +6,12 @@ objectVersion = 42; objects = { +/* Begin PBXBuildFile section */ + BD6B0EDF13A1824C00B8E3FE /* Mangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BD6B0EDE13A1824C00B8E3FE /* Mangle.cpp */; }; + BD6B0EE213A182A600B8E3FE /* ItaniumMangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BD6B0EE113A182A600B8E3FE /* ItaniumMangle.cpp */; }; + BD6B0EE413A182DA00B8E3FE /* MicrosoftMangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BD6B0EE313A182DA00B8E3FE /* MicrosoftMangle.cpp */; }; +/* End PBXBuildFile section */ + /* Begin PBXCopyFilesBuildPhase section */ 8DD76F690486A84900D96B5E /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; @@ -472,6 +478,9 @@ BD59A952121496B9003A5A02 /* SemaConsumer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SemaConsumer.h; path = clang/Sema/SemaConsumer.h; sourceTree = ""; }; BD59A953121496B9003A5A02 /* SemaDiagnostic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SemaDiagnostic.h; path = clang/Sema/SemaDiagnostic.h; sourceTree = ""; }; BD59A954121496B9003A5A02 /* Template.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Template.h; path = clang/Sema/Template.h; sourceTree = ""; }; + BD6B0EDE13A1824C00B8E3FE /* Mangle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Mangle.cpp; sourceTree = ""; }; + BD6B0EE113A182A600B8E3FE /* ItaniumMangle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ItaniumMangle.cpp; sourceTree = ""; }; + BD6B0EE313A182DA00B8E3FE /* MicrosoftMangle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MicrosoftMangle.cpp; sourceTree = ""; }; BDF87CF60FD746F300BBF872 /* SemaTemplateDeduction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = SemaTemplateDeduction.cpp; path = lib/Sema/SemaTemplateDeduction.cpp; sourceTree = ""; tabWidth = 2; }; BF89C3E111595818001C2D68 /* AnalysisBasedWarnings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnalysisBasedWarnings.cpp; path = lib/Sema/AnalysisBasedWarnings.cpp; sourceTree = ""; }; BF89C3E5115958A1001C2D68 /* TargetAttributesSema.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TargetAttributesSema.h; path = lib/Sema/TargetAttributesSema.h; sourceTree = ""; }; @@ -1514,6 +1523,9 @@ DEC8D9920A9433F400353FCA /* AST */ = { isa = PBXGroup; children = ( + BD6B0EDE13A1824C00B8E3FE /* Mangle.cpp */, + BD6B0EE313A182DA00B8E3FE /* MicrosoftMangle.cpp */, + BD6B0EE113A182A600B8E3FE /* ItaniumMangle.cpp */, BF9FEE051225E770003A8B71 /* MicrosoftCXXABI.cpp */, BF9FEE031225E759003A8B71 /* ItaniumCXXABI.cpp */, BF9FEE011225E73F003A8B71 /* ExprClassification.cpp */, @@ -1900,6 +1912,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + BD6B0EDF13A1824C00B8E3FE /* Mangle.cpp in Sources */, + BD6B0EE213A182A600B8E3FE /* ItaniumMangle.cpp in Sources */, + BD6B0EE413A182DA00B8E3FE /* MicrosoftMangle.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: vendor/clang/dist/docs/LanguageExtensions.html ============================================================================== --- vendor/clang/dist/docs/LanguageExtensions.html Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/docs/LanguageExtensions.html Sun Jun 12 15:46:16 2011 (r223015) @@ -32,28 +32,42 @@ td {
    15. Checks for Upcoming Standard Language Features
    16. Checks for Type Traits
    17. Blocks
    18. +
    19. Objective-C Features + +
    20. Function Overloading in C
    21. -
    22. Generic Selections
    23. Builtin Functions
      • __builtin_shufflevector
      • @@ -115,28 +129,48 @@ not. It can be used like this:

        -

        __has_feature

        +

        __has_feature and __has_extension

        -

        This function-like macro takes a single identifier argument that is the name -of a feature. It evaluates to 1 if the feature is supported or 0 if not. It -can be used like this:

        +

        These function-like macros take a single identifier argument that is the +name of a feature. __has_feature evaluates to 1 if the feature +is both supported by Clang and standardized in the current language standard +or 0 if not (but see below), while +__has_extension evaluates to 1 if the feature is supported by +Clang in the current language (either as a language extension or a standard +language feature) or 0 if not. They can be used like this:

         #ifndef __has_feature         // Optional of course.
           #define __has_feature(x) 0  // Compatibility with non-clang compilers.
         #endif
        +#ifndef __has_extension
        +  #define __has_extension __has_feature // Compatibility with pre-3.0 compilers.
        +#endif
         
         ...
        -#if __has_feature(attribute_overloadable) || \
        -    __has_feature(blocks)
        -...
        +#if __has_feature(cxx_rvalue_references)
        +// This code will only be compiled with the -std=c++0x and -std=gnu++0x
        +// options, because rvalue references are only standardized in C++0x.
        +#endif
        +
        +#if __has_extension(cxx_rvalue_references)
        +// This code will be compiled with the -std=c++0x, -std=gnu++0x, -std=c++98
        +// and -std=gnu++98 options, because rvalue references are supported as a
        +// language extension in C++98.
         #endif
        -...
         
        +

        For backwards compatibility reasons, +__has_feature can also be used to test for support for +non-standardized features, i.e. features not prefixed c_, +cxx_ or objc_.

        + +

        If the -pedantic-errors option is given, +__has_extension is equivalent to __has_feature.

        +

        The feature tag is described along with the language feature below.

        @@ -293,7 +327,7 @@ float4 foo(float2 a, float2 b) { -

        Query for this feature with __has_feature(attribute_ext_vector_type).

        +

        Query for this feature with __has_extension(attribute_ext_vector_type).

        See also __builtin_shufflevector.

        @@ -318,8 +352,8 @@ will be incorporated into the appropriat

        Query for this feature -with __has_feature(attribute_deprecated_with_message) -and __has_feature(attribute_unavailable_with_message).

        +with __has_extension(attribute_deprecated_with_message) +and __has_extension(attribute_unavailable_with_message).

        Attributes on Enumerators

        @@ -342,7 +376,7 @@ initializer, like so:

        Attributes on the enum declaration do not apply to individual enumerators.

        -

        Query for this feature with __has_feature(enumerator_attributes).

        +

        Query for this feature with __has_extension(enumerator_attributes).

        Checks for Standard Language Features

        @@ -365,106 +399,165 @@ compiling code with -fno-rtti d

        Checks for Upcoming Standard Language Features

        -

        The __has_feature macro can be used to query if certain upcoming -standard language features are enabled. Those features are listed here.

        +

        The __has_feature or __has_extension macros can be used +to query if certain upcoming standard language features are enabled. Those +features are listed here. Features that are not yet implemented will be +noted.

        -

        Currently, all features listed here are slated for inclusion in the upcoming -C++0x standard. As a result, all the features that clang supports are enabled -with the -std=c++0x option when compiling C++ code. Features that are -not yet implemented will be noted.

        +

        C++0x

        -

        C++0x decltype()

        +

        The features listed below are slated for inclusion in the upcoming +C++0x standard. As a result, all these features are enabled +with the -std=c++0x option when compiling C++ code.

        -

        Use __has_feature(cxx_decltype) to determine if support for the +

        C++0x decltype()

        + +

        Use __has_feature(cxx_decltype) or +__has_extension(cxx_decltype) to determine if support for the decltype() specifier is enabled.

        -

        C++0x attributes

        +

        C++0x SFINAE includes access control

        -

        Use __has_feature(cxx_attributes) to determine if support for -attribute parsing with C++0x's square bracket notation is enabled.

        +

        Use __has_feature(cxx_access_control_sfinae) or __has_extension(cxx_access_control_sfinae) to determine whether access-control errors (e.g., calling a private constructor) are considered to be template argument deduction errors (aka SFINAE errors), per C++ DR1170.

        -

        C++0x default template arguments in function templates

        +

        C++0x alias templates

        -

        Use __has_feature(cxx_default_function_template_args) to determine if support for default template arguments in function templates is enabled.

        +

        Use __has_feature(cxx_alias_templates) or +__has_extension(cxx_alias_templates) to determine if support for +C++0x's alias declarations and alias templates is enabled.

        -

        C++0x deleted functions

        +

        C++0x attributes

        -

        Use __has_feature(cxx_deleted_functions) to determine if support for -deleted function definitions (with = delete) is enabled.

        +

        Use __has_feature(cxx_attributes) or +__has_extension(cxx_attributes) to determine if support for attribute +parsing with C++0x's square bracket notation is enabled.

        -

        C++0x lambdas

        +

        C++0x default template arguments in function templates

        -

        Use __has_feature(cxx_lambdas) to determine if support for -lambdas is enabled. clang does not currently implement this feature.

        +

        Use __has_feature(cxx_default_function_template_args) or +__has_extension(cxx_default_function_template_args) to determine +if support for default template arguments in function templates is enabled.

        -

        C++0x nullptr

        +

        C++0x deleted functions

        -

        Use __has_feature(cxx_nullptr) to determine if support for -nullptr is enabled. clang does not yet fully implement this -feature.

        +

        Use __has_feature(cxx_deleted_functions) or +__has_extension(cxx_deleted_functions) to determine if support for +deleted function definitions (with = delete) is enabled.

        -

        C++0x override control

        +

        C++0x lambdas

        -

        Use __has_feature(cxx_override_control) to determine if support for -the override control keywords is enabled.

        +

        Use __has_feature(cxx_lambdas) or +__has_extension(cxx_lambdas) to determine if support for lambdas +is enabled. clang does not currently implement this feature.

        -

        C++0x reference-qualified functions

        -

        Use __has_feature(cxx_reference_qualified_functions) to determine if support for reference-qualified functions (e.g., member functions with & or && applied to *this) is enabled.

        +

        C++0x nullptr

        -

        C++0x range-based for loop

        +

        Use __has_feature(cxx_nullptr) or +__has_extension(cxx_nullptr) to determine if support for +nullptr is enabled.

        -

        Use __has_feature(cxx_range_for) to determine if support for -the range-based for loop is enabled.

        +

        C++0x override control

        + +

        Use __has_feature(cxx_override_control) or +__has_extension(cxx_override_control) to determine if support for +the override control keywords is enabled.

        -

        C++0x rvalue references

        +

        C++0x reference-qualified functions

        +

        Use __has_feature(cxx_reference_qualified_functions) or +__has_extension(cxx_reference_qualified_functions) to determine +if support for reference-qualified functions (e.g., member functions with +& or && applied to *this) +is enabled.

        + +

        C++0x range-based for loop

        + +

        Use __has_feature(cxx_range_for) or +__has_extension(cxx_range_for) to determine if support for the +range-based for loop is enabled.

        -

        Use __has_feature(cxx_rvalue_references) to determine if support for +

        C++0x rvalue references

        + +

        Use __has_feature(cxx_rvalue_references) or +__has_extension(cxx_rvalue_references) to determine if support for rvalue references is enabled.

        -

        C++0x static_assert()

        +

        C++0x static_assert()

        -

        Use __has_feature(cxx_static_assert) to determine if support for +

        Use __has_feature(cxx_static_assert) or +__has_extension(cxx_static_assert) to determine if support for compile-time assertions using static_assert is enabled.

        -

        C++0x type inference

        +

        C++0x type inference

        -

        Use __has_feature(cxx_auto_type) to determine C++0x type inference -is supported using the auto specifier. If this is disabled, -auto will instead be a storage class specifier, as in C or C++98.

        +

        Use __has_feature(cxx_auto_type) or +__has_extension(cxx_auto_type) to determine C++0x type inference is +supported using the auto specifier. If this is disabled, auto +will instead be a storage class specifier, as in C or C++98.

        -

        C++0x variadic templates

        +

        C++0x variadic templates

        -

        Use __has_feature(cxx_variadic_templates) to determine if support +

        Use __has_feature(cxx_variadic_templates) or +__has_extension(cxx_variadic_templates) to determine if support for variadic templates is enabled.

        -

        C++0x inline namespaces

        +

        C++0x inline namespaces

        -

        Use __has_feature(cxx_inline_namespaces) to determine if support for +

        Use __has_feature(cxx_inline_namespaces) or +__has_extension(cxx_inline_namespaces) to determine if support for inline namespaces is enabled.

        -

        C++0x trailing return type

        +

        C++0x trailing return type

        -

        Use __has_feature(cxx_trailing_return) to determine if support for -the alternate function declaration syntax with trailing return type is enabled.

        +

        Use __has_feature(cxx_trailing_return) or +__has_extension(cxx_trailing_return) to determine if support for the +alternate function declaration syntax with trailing return type is enabled.

        -

        C++0x noexcept

        +

        C++0x noexcept

        -

        Use __has_feature(cxx_noexcept) to determine if support for -noexcept exception specifications is enabled.

        +

        Use __has_feature(cxx_noexcept) or +__has_extension(cxx_noexcept) to determine if support for noexcept +exception specifications is enabled.

        -

        C++0x strongly typed enumerations

        +

        C++0x strongly typed enumerations

        -

        Use __has_feature(cxx_strong_enums) to determine if support for +

        Use __has_feature(cxx_strong_enums) or +__has_extension(cxx_strong_enums) to determine if support for strongly typed, scoped enumerations is enabled.

        +

        C1X

        + +

        The features listed below are slated for inclusion in the upcoming +C1X standard. As a result, all these features are enabled +with the -std=c1x option when compiling C code.

        + +

        C1X generic selections

        + +

        Use __has_feature(c_generic_selections) or +__has_extension(c_generic_selections) to determine if support for +generic selections is enabled.

        + +

        As an extension, the C1X generic selection expression is available in all +languages supported by Clang. The syntax is the same as that given in the +C1X draft standard.

        + +

        In C, type compatibility is decided according to the rules given in the +appropriate standard, but in C++, which lacks the type compatibility rules +used in C, types are considered compatible only if they are equivalent.

        + +

        C1X _Static_assert()

        + +

        Use __has_feature(c_static_assert) or +__has_extension(c_static_assert) to determine if support for +compile-time assertions using _Static_assert is enabled.

        +

        Checks for Type Traits

        -

        Clang supports the GNU C++ type traits and a subset of the Microsoft Visual C++ Type traits. For each supported type trait __X, __has_feature(X) indicates the presence of the type trait. For example: +

        Clang supports the GNU C++ type traits and a subset of the Microsoft Visual C++ Type traits. For each supported type trait __X, __has_extension(X) indicates the presence of the type trait. For example:

        -#if __has_feature(is_convertible_to)
        +#if __has_extension(is_convertible_to)
         template<typename From, typename To>
         struct is_convertible_to {
           static const bool value = __is_convertible_to(From, To);
        @@ -507,7 +600,74 @@ details for the clang implementation are
         href="Block-ABI-Apple.txt">Block-ABI-Apple.txt.

        -

        Query for this feature with __has_feature(blocks).

        +

        Query for this feature with __has_extension(blocks).

        + + +

        Objective-C Features

        + + +

        Related result types

        + +

        According to Cocoa conventions, Objective-C methods with certain names ("init", "alloc", etc.) always return objects that are an instance of the receiving class's type. Such methods are said to have a "related result type", meaning that a message send to one of these methods will have the same static type as an instance of the receiver class. For example, given the following classes:

        + +
        +
        +@interface NSObject
        ++ (id)alloc;
        +- (id)init;
        +@end
        +
        +@interface NSArray : NSObject
        +@end
        +
        +
        + +

        and this common initialization pattern

        + +
        +
        +NSArray *array = [[NSArray alloc] init];
        +
        +
        + +

        the type of the expression [NSArray alloc] is +NSArray* because alloc implicitly has a +related result type. Similarly, the type of the expression +[[NSArray alloc] init] is NSArray*, since +init has a related result type and its receiver is known +to have the type NSArray *. If neither alloc nor init had a related result type, the expressions would have had type id, as declared in the method signature.

        + +

        To determine whether a method has a related result type, the first +word in the camel-case selector (e.g., "init" in "initWithObjects") is +considered, and the method will a related result type if its return +type is compatible with the type of its class and if + +

          + +
        • the first word is "alloc" or "new", and the method is a class + method, or
        • + +
        • the first word is "autorelease", "init", "retain", or "self", + and the method is an instance method.
        • + +

        + +

        If a method with a related result type is overridden by a subclass +method, the subclass method must also return a type that is compatible +with the subclass type. For example:

        + +
        +
        +@interface NSString : NSObject
        +- (NSUnrelated *)init; // incorrect usage: NSUnrelated is not NSString or a superclass of NSString
        +@end
        +
        +
        + +

        Related result types only affect the type of a message send or +property access via the given method. In all other respects, a method +with a related result type is treated the same way as method without a +related result type.

        Function Overloading in C

        @@ -607,22 +767,8 @@ caveats to this use of name mangling:

      -

      Query for this feature with __has_feature(attribute_overloadable).

      - - - -

      Generic Selections

      - - -

      The C1X generic selection expression is available in all languages -supported by Clang. The syntax is the same as that given in the C1X draft -standard.

      - -

      In C, type compatibility is decided according to the rules given in the -appropriate standard, but in C++, which lacks the type compatibility rules -used in C, types are considered compatible only if they are equivalent.

      +

      Query for this feature with __has_extension(attribute_overloadable).

      -

      Query for this feature with __has_feature(generic_selections).

      Builtin Functions

      Modified: vendor/clang/dist/docs/Makefile ============================================================================== --- vendor/clang/dist/docs/Makefile Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/docs/Makefile Sun Jun 12 15:46:16 2011 (r223015) @@ -16,10 +16,10 @@ DOXYGEN = doxygen $(PROJ_OBJ_DIR)/doxygen.cfg: doxygen.cfg.in cat $< | sed \ - -e 's/@abs_top_srcdir@/../g' \ + -e 's/@abs_srcdir@/./g' \ -e 's/@DOT@/dot/g' \ -e 's/@PACKAGE_VERSION@/mainline/' \ - -e 's/@abs_top_builddir@/../g' > $@ + -e 's/@abs_builddir@/./g' > $@ endif include $(CLANG_LEVEL)/Makefile Modified: vendor/clang/dist/docs/UsersManual.html ============================================================================== --- vendor/clang/dist/docs/UsersManual.html Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/docs/UsersManual.html Sun Jun 12 15:46:16 2011 (r223015) @@ -273,6 +273,35 @@ when this is enabled, Clang will print s
    +
    -fdiagnostics-format=clang/msvc/vi: +Changes diagnostic output format to better match IDEs and command line tools.
    +
    This option controls the output format of the filename, line number, and column printed in diagnostic messages. The options, and their affect on formatting a simple conversion diagnostic, follow: + +
    +
    clang (default)
    +
    +
    t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int'
    +
    + +
    msvc
    +
    +
    t.c(3,11) : warning: conversion specifies type 'char *' but the argument has type 'int'
    +
    + +
    vi
    +
    +
    t.c +3:11: warning: conversion specifies type 'char *' but the argument has type 'int'
    +
    +
    +
    + + +
    -f[no-]diagnostics-show-name: +Enable the display of the diagnostic name.
    +
    This option, which defaults to off, controls whether or not +Clang prints the associated name.
    +
    +
    -f[no-]diagnostics-show-option: Enable [-Woption] information in diagnostic line.
    This option, which defaults to on, @@ -499,6 +528,8 @@ it:

  • A categorization of the diagnostic as a note, warning, error, or fatal error.
  • A text string that describes what the problem is.
  • +
  • An option that indicates whether to print the diagnostic name [-fdiagnostics-show-name].
  • An option that indicates how to control the diagnostic (for diagnostics that support it) [-fdiagnostics-show-option].
  • Modified: vendor/clang/dist/docs/doxygen.cfg.in ============================================================================== --- vendor/clang/dist/docs/doxygen.cfg.in Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/docs/doxygen.cfg.in Sun Jun 12 15:46:16 2011 (r223015) @@ -30,7 +30,7 @@ PROJECT_NUMBER = @PACKAGE_VERSIO # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. -OUTPUT_DIRECTORY = @abs_top_builddir@/docs/doxygen +OUTPUT_DIRECTORY = @abs_builddir@/doxygen # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output @@ -450,9 +450,9 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = @abs_top_srcdir@/include \ - @abs_top_srcdir@/lib \ - @abs_top_srcdir@/docs/doxygen.intro +INPUT = @abs_srcdir@/../include \ + @abs_srcdir@/../lib \ + @abs_srcdir@/doxygen.intro # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp @@ -493,7 +493,7 @@ EXCLUDE_PATTERNS = # directories that contain example code fragments that are included (see # the \include command). -EXAMPLE_PATH = @abs_top_srcdir@/examples +EXAMPLE_PATH = @abs_srcdir@/../examples # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp @@ -513,7 +513,7 @@ EXAMPLE_RECURSIVE = YES # directories that contain image that are included in the documentation (see # the \image command). -IMAGE_PATH = @abs_top_srcdir@/docs/img +IMAGE_PATH = @abs_srcdir@/img # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program @@ -636,13 +636,13 @@ HTML_FILE_EXTENSION = .html # each generated HTML page. If it is left blank doxygen will generate a # standard header. -HTML_HEADER = @abs_top_srcdir@/docs/doxygen.header +HTML_HEADER = @abs_srcdir@/doxygen.header # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. -HTML_FOOTER = @abs_top_srcdir@/docs/doxygen.footer +HTML_FOOTER = @abs_srcdir@/doxygen.footer # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to @@ -651,7 +651,7 @@ HTML_FOOTER = @abs_top_srcdir # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! -HTML_STYLESHEET = @abs_top_srcdir@/docs/doxygen.css +HTML_STYLESHEET = @abs_srcdir@/doxygen.css # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to Modified: vendor/clang/dist/examples/CMakeLists.txt ============================================================================== --- vendor/clang/dist/examples/CMakeLists.txt Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/examples/CMakeLists.txt Sun Jun 12 15:46:16 2011 (r223015) @@ -1,3 +1,2 @@ add_subdirectory(clang-interpreter) add_subdirectory(PrintFunctionNames) -add_subdirectory(Tooling) Modified: vendor/clang/dist/examples/clang-interpreter/Makefile ============================================================================== --- vendor/clang/dist/examples/clang-interpreter/Makefile Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/examples/clang-interpreter/Makefile Sun Jun 12 15:46:16 2011 (r223015) @@ -18,7 +18,8 @@ TOOL_NO_EXPORTS = 1 LINK_COMPONENTS := jit interpreter nativecodegen bitreader bitwriter ipo \ selectiondag asmparser instrumentation USEDLIBS = clangFrontend.a clangSerialization.a clangDriver.a clangCodeGen.a \ - clangSema.a clangStaticAnalyzerFrontend.a clangStaticAnalyzerCheckers.a clangStaticAnalyzerCore.a clangAnalysis.a clangRewrite.a \ - clangAST.a clangParse.a clangLex.a clangBasic.a + clangParse.a clangSema.a clangStaticAnalyzerFrontend.a \ + clangStaticAnalyzerCheckers.a clangStaticAnalyzerCore.a \ + clangAnalysis.a clangRewrite.a clangAST.a clangLex.a clangBasic.a include $(CLANG_LEVEL)/Makefile Modified: vendor/clang/dist/examples/clang-interpreter/main.cpp ============================================================================== --- vendor/clang/dist/examples/clang-interpreter/main.cpp Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/examples/clang-interpreter/main.cpp Sun Jun 12 15:46:16 2011 (r223015) @@ -94,7 +94,7 @@ int main(int argc, const char **argv, ch // We expect to get back exactly one command job, if we didn't something // failed. Extract that job from the compilation. const driver::JobList &Jobs = C->getJobs(); - if (Jobs.size() != 1 || !isa(Jobs.begin())) { + if (Jobs.size() != 1 || !isa(*Jobs.begin())) { llvm::SmallString<256> Msg; llvm::raw_svector_ostream OS(Msg); C->PrintJob(OS, C->getJobs(), "; ", true); Modified: vendor/clang/dist/examples/wpa/Makefile ============================================================================== --- vendor/clang/dist/examples/wpa/Makefile Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/examples/wpa/Makefile Sun Jun 12 15:46:16 2011 (r223015) @@ -16,8 +16,11 @@ NO_INSTALL = 1 TOOL_NO_EXPORTS = 1 LINK_COMPONENTS := asmparser bitreader mc core -USEDLIBS = clangStaticAnalyzerFrontend.a clangStaticAnalyzerCheckers.a clangStaticAnalyzerCore.a clangIndex.a clangFrontend.a clangDriver.a \ - clangSema.a clangAnalysis.a clangSerialization.a \ - clangAST.a clangParse.a clangLex.a clangBasic.a +USEDLIBS = clangStaticAnalyzerFrontend.a \ + clangStaticAnalyzerCheckers.a \ + clangStaticAnalyzerCore.a \ + clangIndex.a clangFrontend.a clangDriver.a \ + clangParse.a clangSema.a clangAnalysis.a clangSerialization.a \ + clangAST.a clangLex.a clangBasic.a include $(CLANG_LEVEL)/Makefile Modified: vendor/clang/dist/include/clang-c/Index.h ============================================================================== --- vendor/clang/dist/include/clang-c/Index.h Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/include/clang-c/Index.h Sun Jun 12 15:46:16 2011 (r223015) @@ -222,6 +222,14 @@ CINDEX_LINKAGE CXString clang_getFileNam CINDEX_LINKAGE time_t clang_getFileTime(CXFile SFile); /** + * \brief Determine whether the given header is guarded against + * multiple inclusions, either with the conventional + * #ifndef/#define/#endif macro guards or with #pragma once. + */ +CINDEX_LINKAGE unsigned +clang_isFileMultipleIncludeGuarded(CXTranslationUnit tu, CXFile file); + +/** * \brief Retrieve a file handle within the given translation unit. * * \param tu the translation unit @@ -821,7 +829,18 @@ enum CXTranslationUnit_Flags { * Note: this is a *temporary* option that is available only while * we are testing C++ precompiled preamble support. */ - CXTranslationUnit_CXXChainedPCH = 0x20 + CXTranslationUnit_CXXChainedPCH = 0x20, + + /** + * \brief Used to indicate that the "detailed" preprocessing record, + * if requested, should also contain nested macro instantiations. + * + * Nested macro instantiations (i.e., macro instantiations that occur + * inside another macro instantiation) can, in some code bases, require + * a large amount of storage to due preprocessor metaprogramming. Moreover, + * its fairly rare that this information is useful for libclang clients. + */ + CXTranslationUnit_NestedMacroInstantiations = 0x40 }; /** @@ -1027,12 +1046,14 @@ enum CXTUResourceUsageKind { CXTUResourceUsage_SourceManager_Membuffer_MMap = 8, CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc = 9, CXTUResourceUsage_ExternalASTSource_Membuffer_MMap = 10, + CXTUResourceUsage_Preprocessor = 11, + CXTUResourceUsage_PreprocessingRecord = 12, CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN = CXTUResourceUsage_AST, CXTUResourceUsage_MEMORY_IN_BYTES_END = - CXTUResourceUsage_ExternalASTSource_Membuffer_MMap, + CXTUResourceUsage_PreprocessingRecord, CXTUResourceUsage_First = CXTUResourceUsage_AST, - CXTUResourceUsage_Last = CXTUResourceUsage_ExternalASTSource_Membuffer_MMap + CXTUResourceUsage_Last = CXTUResourceUsage_PreprocessingRecord }; /** @@ -1166,8 +1187,12 @@ enum CXCursorKind { CXCursor_UsingDeclaration = 35, /** \brief A C++ alias declaration */ CXCursor_TypeAliasDecl = 36, + /** \brief An Objective-C @synthesize definition. */ + CXCursor_ObjCSynthesizeDecl = 37, + /** \brief An Objective-C @dynamic definition. */ + CXCursor_ObjCDynamicDecl = 38, CXCursor_FirstDecl = CXCursor_UnexposedDecl, - CXCursor_LastDecl = CXCursor_TypeAliasDecl, + CXCursor_LastDecl = CXCursor_ObjCDynamicDecl, /* References */ CXCursor_FirstRef = 40, /* Decl references */ @@ -2246,6 +2271,13 @@ CINDEX_LINKAGE CXCursor clang_getCanonic CINDEX_LINKAGE unsigned clang_CXXMethod_isStatic(CXCursor C); /** + * \brief Determine if a C++ member function or member function template is + * explicitly declared 'virtual' or if it overrides a virtual method from + * one of the base classes. + */ +CINDEX_LINKAGE unsigned clang_CXXMethod_isVirtual(CXCursor C); + +/** * \brief Given a cursor that represents a template, determine * the cursor kind of the specializations would be generated by instantiating * the template. Modified: vendor/clang/dist/include/clang/AST/APValue.h ============================================================================== --- vendor/clang/dist/include/clang/AST/APValue.h Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/include/clang/AST/APValue.h Sun Jun 12 15:46:16 2011 (r223015) @@ -85,10 +85,10 @@ public: APValue(const APValue &RHS) : Kind(Uninitialized) { *this = RHS; } - APValue(Expr* B, const CharUnits &O) : Kind(Uninitialized) { + APValue(const Expr* B, const CharUnits &O) : Kind(Uninitialized) { MakeLValue(); setLValue(B, O); } - APValue(Expr* B); + APValue(const Expr* B); ~APValue() { MakeUninit(); @@ -167,7 +167,7 @@ public: return const_cast(this)->getComplexFloatImag(); } - Expr* getLValueBase() const; + const Expr* getLValueBase() const; CharUnits getLValueOffset() const; void setInt(const APSInt &I) { @@ -199,7 +199,7 @@ public: ((ComplexAPFloat*)(char*)Data)->Real = R; ((ComplexAPFloat*)(char*)Data)->Imag = I; } - void setLValue(Expr *B, const CharUnits &O); + void setLValue(const Expr *B, const CharUnits &O); const APValue &operator=(const APValue &RHS); Modified: vendor/clang/dist/include/clang/AST/ASTContext.h ============================================================================== --- vendor/clang/dist/include/clang/AST/ASTContext.h Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/include/clang/AST/ASTContext.h Sun Jun 12 15:46:16 2011 (r223015) @@ -406,6 +406,21 @@ public: /// bitfield which follows the bitfield 'LastFD'. bool ZeroBitfieldFollowsBitfield(const FieldDecl *FD, const FieldDecl *LastFD) const; + + /// BitfieldFollowsBitfield - return 'true" if 'FD' is a + /// bitfield which follows the bitfield 'LastFD'. + bool BitfieldFollowsBitfield(const FieldDecl *FD, + const FieldDecl *LastFD) const; + + /// NoneBitfieldFollowsBitfield - return 'true" if 'FD' is not a + /// bitfield which follows the bitfield 'LastFD'. + bool NoneBitfieldFollowsBitfield(const FieldDecl *FD, + const FieldDecl *LastFD) const; + + /// BitfieldFollowsNoneBitfield - return 'true" if 'FD' is a + /// bitfield which follows the none bitfield 'LastFD'. + bool BitfieldFollowsNoneBitfield(const FieldDecl *FD, + const FieldDecl *LastFD) const; // Access to the set of methods overridden by the given C++ method. typedef CXXMethodVector::iterator overridden_cxx_method_iterator; @@ -764,6 +779,10 @@ public: /// getDecltypeType - C++0x decltype. QualType getDecltypeType(Expr *e) const; + /// getUnaryTransformType - unary type transforms + QualType getUnaryTransformType(QualType BaseType, QualType UnderlyingType, + UnaryTransformType::UTTKind UKind) const; + /// getAutoType - C++0x deduced auto type. QualType getAutoType(QualType DeducedType) const; @@ -895,12 +914,18 @@ public: std::string &S) const; /// getObjCEncodingForFunctionDecl - Returns the encoded type for this - //function. This is in the same format as Objective-C method encodings. - void getObjCEncodingForFunctionDecl(const FunctionDecl *Decl, std::string& S); + /// function. This is in the same format as Objective-C method encodings. + /// + /// \returns true if an error occurred (e.g., because one of the parameter + /// types is incomplete), false otherwise. + bool getObjCEncodingForFunctionDecl(const FunctionDecl *Decl, std::string& S); /// getObjCEncodingForMethodDecl - Return the encoded type for this method /// declaration. - void getObjCEncodingForMethodDecl(const ObjCMethodDecl *Decl, std::string &S) + /// + /// \returns true if an error occurred (e.g., because one of the parameter + /// types is incomplete), false otherwise. + bool getObjCEncodingForMethodDecl(const ObjCMethodDecl *Decl, std::string &S) const; /// getObjCEncodingForBlock - Return the encoded type for this block @@ -1438,7 +1463,8 @@ public: /// MakeIntValue - Make an APSInt of the appropriate width and /// signedness for the given \arg Value and integer \arg Type. llvm::APSInt MakeIntValue(uint64_t Value, QualType Type) const { - llvm::APSInt Res(getIntWidth(Type), !Type->isSignedIntegerType()); + llvm::APSInt Res(getIntWidth(Type), + !Type->isSignedIntegerOrEnumerationType()); Res = Value; return Res; } @@ -1526,6 +1552,13 @@ public: /// which declarations were built. static unsigned NumImplicitCopyConstructorsDeclared; + /// \brief The number of implicitly-declared move constructors. + static unsigned NumImplicitMoveConstructors; + + /// \brief The number of implicitly-declared move constructors for + /// which declarations were built. + static unsigned NumImplicitMoveConstructorsDeclared; + /// \brief The number of implicitly-declared copy assignment operators. static unsigned NumImplicitCopyAssignmentOperators; @@ -1533,6 +1566,13 @@ public: /// which declarations were built. static unsigned NumImplicitCopyAssignmentOperatorsDeclared; + /// \brief The number of implicitly-declared move assignment operators. + static unsigned NumImplicitMoveAssignmentOperators; + + /// \brief The number of implicitly-declared move assignment operators for + /// which declarations were built. + static unsigned NumImplicitMoveAssignmentOperatorsDeclared; + /// \brief The number of implicitly-declared destructors. static unsigned NumImplicitDestructors; @@ -1553,7 +1593,13 @@ private: bool ExpandStructures, const FieldDecl *Field, bool OutermostType = false, - bool EncodingProperty = false) const; + bool EncodingProperty = false, + bool StructField = false) const; + + // Adds the encoding of the structure's members. + void getObjCEncodingForStructureImpl(RecordDecl *RD, std::string &S, + const FieldDecl *Field, + bool includeVBases = true) const; const ASTRecordLayout & getObjCLayout(const ObjCInterfaceDecl *D, Modified: vendor/clang/dist/include/clang/AST/CanonicalType.h ============================================================================== --- vendor/clang/dist/include/clang/AST/CanonicalType.h Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/include/clang/AST/CanonicalType.h Sun Jun 12 15:46:16 2011 (r223015) @@ -291,6 +291,8 @@ public: LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isPromotableIntegerType) LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isSignedIntegerType) LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isUnsignedIntegerType) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isSignedIntegerOrEnumerationType) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isUnsignedIntegerOrEnumerationType) LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isConstantSizeType) LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isSpecifierType) @@ -630,6 +632,14 @@ struct CanProxyAdaptor : p LLVM_CLANG_CANPROXY_TYPE_ACCESSOR(getUnderlyingType) }; +template <> +struct CanProxyAdaptor + : public CanProxyBase { + LLVM_CLANG_CANPROXY_TYPE_ACCESSOR(getBaseType) + LLVM_CLANG_CANPROXY_TYPE_ACCESSOR(getUnderlyingType) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(UnaryTransformType::UTTKind, getUTTKind) +}; + template<> struct CanProxyAdaptor : public CanProxyBase { LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(TagDecl *, getDecl) Modified: vendor/clang/dist/include/clang/AST/Decl.h ============================================================================== --- vendor/clang/dist/include/clang/AST/Decl.h Sun Jun 12 15:44:14 2011 (r223014) +++ vendor/clang/dist/include/clang/AST/Decl.h Sun Jun 12 15:46:16 2011 (r223015) @@ -1365,6 +1365,8 @@ private: bool HasWrittenPrototype : 1; bool IsDeleted : 1; bool IsTrivial : 1; // sunk from CXXMethodDecl + bool IsDefaulted : 1; // sunk from CXXMethoDecl + bool IsExplicitlyDefaulted : 1; //sunk from CXXMethodDecl bool HasImplicitReturnZero : 1; bool IsLateTemplateParsed : 1; @@ -1448,6 +1450,7 @@ protected: IsInline(isInlineSpecified), IsInlineSpecified(isInlineSpecified), IsVirtualAsWritten(false), IsPure(false), HasInheritedPrototype(false), HasWrittenPrototype(true), IsDeleted(false), IsTrivial(false), + IsDefaulted(false), IsExplicitlyDefaulted(false), HasImplicitReturnZero(false), IsLateTemplateParsed(false), EndRangeLoc(NameInfo.getEndLoc()), TemplateOrSpecialization(), @@ -1512,6 +1515,20 @@ public: return hasBody(Definition); } + /// hasTrivialBody - Returns whether the function has a trivial body that does + /// not require any specific codegen. + bool hasTrivialBody() const; + + /// isDefined - Returns true if the function is defined at all, including + /// a deleted definition. Except for the behavior when the function is + /// deleted, behaves like hasBody. + bool isDefined(const FunctionDecl *&Definition) const; + + virtual bool isDefined() const { + const FunctionDecl* Definition; + return isDefined(Definition); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 15:46:57 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BF0DB1065670; Sun, 12 Jun 2011 15:46:57 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 968468FC1E; Sun, 12 Jun 2011 15:46:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CFkvQR030989; Sun, 12 Jun 2011 15:46:57 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CFkvHf030988; Sun, 12 Jun 2011 15:46:57 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201106121546.p5CFkvHf030988@svn.freebsd.org> From: Dimitry Andric Date: Sun, 12 Jun 2011 15:46:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223016 - vendor/clang/clang-r132879 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 15:46:57 -0000 Author: dim Date: Sun Jun 12 15:46:57 2011 New Revision: 223016 URL: http://svn.freebsd.org/changeset/base/223016 Log: Tag clang r132879. Added: vendor/clang/clang-r132879/ - copied from r223015, vendor/clang/dist/ From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 18:01:32 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EAFE9106564A; Sun, 12 Jun 2011 18:01:32 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9E2078FC0C; Sun, 12 Jun 2011 18:01:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CI1WLK035295; Sun, 12 Jun 2011 18:01:32 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CI1Wr6035268; Sun, 12 Jun 2011 18:01:32 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201106121801.p5CI1Wr6035268@svn.freebsd.org> From: Dimitry Andric Date: Sun, 12 Jun 2011 18:01:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223017 - in head: contrib/llvm/include/llvm contrib/llvm/include/llvm-c contrib/llvm/include/llvm/ADT contrib/llvm/include/llvm/Analysis contrib/llvm/include/llvm/CodeGen contrib/llvm/... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 18:01:33 -0000 Author: dim Date: Sun Jun 12 18:01:31 2011 New Revision: 223017 URL: http://svn.freebsd.org/changeset/base/223017 Log: Upgrade our copy of llvm/clang to r132879, from upstream's trunk. Added: head/contrib/llvm/include/llvm/ADT/PackedVector.h - copied unchanged from r223016, vendor/llvm/dist/include/llvm/ADT/PackedVector.h head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h - copied unchanged from r223016, vendor/llvm/dist/include/llvm/Analysis/BranchProbabilityInfo.h head/contrib/llvm/include/llvm/DefaultPasses.h - copied unchanged from r223016, vendor/llvm/dist/include/llvm/DefaultPasses.h head/contrib/llvm/include/llvm/MC/MCWin64EH.h - copied unchanged from r223016, vendor/llvm/dist/include/llvm/MC/MCWin64EH.h head/contrib/llvm/include/llvm/Support/BranchProbability.h - copied unchanged from r223016, vendor/llvm/dist/include/llvm/Support/BranchProbability.h head/contrib/llvm/include/llvm/Support/PassManagerBuilder.h - copied unchanged from r223016, vendor/llvm/dist/include/llvm/Support/PassManagerBuilder.h head/contrib/llvm/include/llvm/Support/Win64EH.h - copied unchanged from r223016, vendor/llvm/dist/include/llvm/Support/Win64EH.h head/contrib/llvm/lib/Analysis/BranchProbabilityInfo.cpp - copied unchanged from r223016, vendor/llvm/dist/lib/Analysis/BranchProbabilityInfo.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/Win64Exception.cpp - copied unchanged from r223016, vendor/llvm/dist/lib/CodeGen/AsmPrinter/Win64Exception.cpp head/contrib/llvm/lib/CodeGen/RegisterClassInfo.cpp - copied unchanged from r223016, vendor/llvm/dist/lib/CodeGen/RegisterClassInfo.cpp head/contrib/llvm/lib/CodeGen/RegisterClassInfo.h - copied unchanged from r223016, vendor/llvm/dist/lib/CodeGen/RegisterClassInfo.h head/contrib/llvm/lib/ExecutionEngine/TargetSelect.cpp - copied unchanged from r223016, vendor/llvm/dist/lib/ExecutionEngine/TargetSelect.cpp head/contrib/llvm/lib/MC/MCWin64EH.cpp - copied unchanged from r223016, vendor/llvm/dist/lib/MC/MCWin64EH.cpp head/contrib/llvm/lib/Support/BranchProbability.cpp - copied unchanged from r223016, vendor/llvm/dist/lib/Support/BranchProbability.cpp head/contrib/llvm/lib/Target/Mips/MipsEmitGPRestore.cpp - copied unchanged from r223016, vendor/llvm/dist/lib/Target/Mips/MipsEmitGPRestore.cpp head/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp - copied unchanged from r223016, vendor/llvm/dist/utils/TableGen/CodeGenRegisters.cpp head/contrib/llvm/utils/TableGen/SetTheory.cpp - copied unchanged from r223016, vendor/llvm/dist/utils/TableGen/SetTheory.cpp head/contrib/llvm/utils/TableGen/SetTheory.h - copied unchanged from r223016, vendor/llvm/dist/utils/TableGen/SetTheory.h Deleted: head/contrib/llvm/include/llvm/Support/StandardPasses.h head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfTableException.cpp head/contrib/llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp head/contrib/llvm/lib/ExecutionEngine/MCJIT/TargetSelect.cpp head/contrib/llvm/tools/clang/include/clang/Tooling/Tooling.h head/contrib/llvm/tools/clang/lib/Frontend/DiagChecker.cpp head/contrib/llvm/tools/clang/lib/Tooling/JsonCompileCommandLineDatabase.cpp head/contrib/llvm/tools/clang/lib/Tooling/JsonCompileCommandLineDatabase.h head/contrib/llvm/tools/clang/lib/Tooling/Tooling.cpp Modified: head/contrib/llvm/include/llvm-c/Core.h head/contrib/llvm/include/llvm-c/Disassembler.h head/contrib/llvm/include/llvm/ADT/FoldingSet.h head/contrib/llvm/include/llvm/ADT/StringRef.h head/contrib/llvm/include/llvm/ADT/Triple.h head/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h head/contrib/llvm/include/llvm/Analysis/CallGraph.h head/contrib/llvm/include/llvm/Analysis/DIBuilder.h head/contrib/llvm/include/llvm/Analysis/DebugInfo.h head/contrib/llvm/include/llvm/Analysis/FindUsedTypes.h head/contrib/llvm/include/llvm/Analysis/IVUsers.h head/contrib/llvm/include/llvm/Analysis/RegionPass.h head/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h head/contrib/llvm/include/llvm/Argument.h head/contrib/llvm/include/llvm/Attributes.h head/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h head/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h head/contrib/llvm/include/llvm/CodeGen/FastISel.h head/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h head/contrib/llvm/include/llvm/CodeGen/LiveInterval.h head/contrib/llvm/include/llvm/CodeGen/MachineInstr.h head/contrib/llvm/include/llvm/CodeGen/MachineInstrBuilder.h head/contrib/llvm/include/llvm/CodeGen/MachineModuleInfo.h head/contrib/llvm/include/llvm/CodeGen/MachineOperand.h head/contrib/llvm/include/llvm/CodeGen/PseudoSourceValue.h head/contrib/llvm/include/llvm/CodeGen/RegAllocPBQP.h head/contrib/llvm/include/llvm/CodeGen/ScheduleDAG.h head/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h head/contrib/llvm/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h head/contrib/llvm/include/llvm/CompilerDriver/Common.td head/contrib/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h head/contrib/llvm/include/llvm/Function.h head/contrib/llvm/include/llvm/InitializePasses.h head/contrib/llvm/include/llvm/IntrinsicInst.h head/contrib/llvm/include/llvm/Intrinsics.td head/contrib/llvm/include/llvm/IntrinsicsARM.td head/contrib/llvm/include/llvm/IntrinsicsX86.td head/contrib/llvm/include/llvm/IntrinsicsXCore.td head/contrib/llvm/include/llvm/LinkAllPasses.h head/contrib/llvm/include/llvm/MC/MCAsmInfo.h head/contrib/llvm/include/llvm/MC/MCDwarf.h head/contrib/llvm/include/llvm/MC/MCELFSymbolFlags.h head/contrib/llvm/include/llvm/MC/MCExpr.h head/contrib/llvm/include/llvm/MC/MCInstPrinter.h head/contrib/llvm/include/llvm/MC/MCParser/MCAsmLexer.h head/contrib/llvm/include/llvm/MC/MCParser/MCAsmParser.h head/contrib/llvm/include/llvm/MC/MCParser/MCAsmParserExtension.h head/contrib/llvm/include/llvm/MC/MCStreamer.h head/contrib/llvm/include/llvm/Metadata.h head/contrib/llvm/include/llvm/Operator.h head/contrib/llvm/include/llvm/Support/Casting.h head/contrib/llvm/include/llvm/Support/CrashRecoveryContext.h head/contrib/llvm/include/llvm/Support/Dwarf.h head/contrib/llvm/include/llvm/Support/IRBuilder.h head/contrib/llvm/include/llvm/Support/MemoryBuffer.h head/contrib/llvm/include/llvm/Support/PatternMatch.h head/contrib/llvm/include/llvm/Support/Program.h head/contrib/llvm/include/llvm/Support/SourceMgr.h head/contrib/llvm/include/llvm/Target/Target.td head/contrib/llvm/include/llvm/Target/TargetAsmInfo.h head/contrib/llvm/include/llvm/Target/TargetInstrItineraries.h head/contrib/llvm/include/llvm/Target/TargetLibraryInfo.h head/contrib/llvm/include/llvm/Target/TargetLowering.h head/contrib/llvm/include/llvm/Target/TargetLoweringObjectFile.h head/contrib/llvm/include/llvm/Target/TargetOptions.h head/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h head/contrib/llvm/include/llvm/Target/TargetSelectionDAG.td head/contrib/llvm/include/llvm/Transforms/Instrumentation.h head/contrib/llvm/include/llvm/Transforms/Utils/Local.h head/contrib/llvm/include/llvm/Transforms/Utils/SSAUpdater.h head/contrib/llvm/include/llvm/Type.h head/contrib/llvm/lib/Analysis/Analysis.cpp head/contrib/llvm/lib/Analysis/BasicAliasAnalysis.cpp head/contrib/llvm/lib/Analysis/ConstantFolding.cpp head/contrib/llvm/lib/Analysis/DIBuilder.cpp head/contrib/llvm/lib/Analysis/IPA/CallGraph.cpp head/contrib/llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp head/contrib/llvm/lib/Analysis/IPA/FindUsedTypes.cpp head/contrib/llvm/lib/Analysis/IVUsers.cpp head/contrib/llvm/lib/Analysis/InlineCost.cpp head/contrib/llvm/lib/Analysis/InstructionSimplify.cpp head/contrib/llvm/lib/Analysis/LazyValueInfo.cpp head/contrib/llvm/lib/Analysis/Loads.cpp head/contrib/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp head/contrib/llvm/lib/Analysis/RegionPass.cpp head/contrib/llvm/lib/Analysis/ScalarEvolution.cpp head/contrib/llvm/lib/Analysis/ValueTracking.cpp head/contrib/llvm/lib/AsmParser/LLLexer.cpp head/contrib/llvm/lib/AsmParser/LLLexer.h head/contrib/llvm/lib/AsmParser/LLParser.cpp head/contrib/llvm/lib/AsmParser/LLToken.h head/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.cpp head/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp head/contrib/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp head/contrib/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp head/contrib/llvm/lib/CodeGen/AggressiveAntiDepBreaker.h head/contrib/llvm/lib/CodeGen/AllocationOrder.cpp head/contrib/llvm/lib/CodeGen/AllocationOrder.h head/contrib/llvm/lib/CodeGen/AntiDepBreaker.h head/contrib/llvm/lib/CodeGen/AsmPrinter/ARMException.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfException.h head/contrib/llvm/lib/CodeGen/BranchFolding.cpp head/contrib/llvm/lib/CodeGen/BranchFolding.h head/contrib/llvm/lib/CodeGen/CalcSpillWeights.cpp head/contrib/llvm/lib/CodeGen/CallingConvLower.cpp head/contrib/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp head/contrib/llvm/lib/CodeGen/CriticalAntiDepBreaker.h head/contrib/llvm/lib/CodeGen/DwarfEHPrepare.cpp head/contrib/llvm/lib/CodeGen/IfConversion.cpp head/contrib/llvm/lib/CodeGen/InlineSpiller.cpp head/contrib/llvm/lib/CodeGen/LLVMTargetMachine.cpp head/contrib/llvm/lib/CodeGen/LiveDebugVariables.cpp head/contrib/llvm/lib/CodeGen/LiveDebugVariables.h head/contrib/llvm/lib/CodeGen/LiveRangeEdit.cpp head/contrib/llvm/lib/CodeGen/LiveRangeEdit.h head/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp head/contrib/llvm/lib/CodeGen/MachineFunction.cpp head/contrib/llvm/lib/CodeGen/MachineInstr.cpp head/contrib/llvm/lib/CodeGen/MachineRegisterInfo.cpp head/contrib/llvm/lib/CodeGen/MachineVerifier.cpp head/contrib/llvm/lib/CodeGen/PostRASchedulerList.cpp head/contrib/llvm/lib/CodeGen/RegAllocBase.h head/contrib/llvm/lib/CodeGen/RegAllocBasic.cpp head/contrib/llvm/lib/CodeGen/RegAllocFast.cpp head/contrib/llvm/lib/CodeGen/RegAllocGreedy.cpp head/contrib/llvm/lib/CodeGen/RegisterScavenging.cpp head/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp head/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.h head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp head/contrib/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp head/contrib/llvm/lib/CodeGen/SimpleRegisterCoalescing.h head/contrib/llvm/lib/CodeGen/SjLjEHPrepare.cpp head/contrib/llvm/lib/CodeGen/SplitKit.cpp head/contrib/llvm/lib/CodeGen/SplitKit.h head/contrib/llvm/lib/CodeGen/TailDuplication.cpp head/contrib/llvm/lib/CodeGen/TargetInstrInfoImpl.cpp head/contrib/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp head/contrib/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp head/contrib/llvm/lib/CodeGen/UnreachableBlockElim.cpp head/contrib/llvm/lib/CodeGen/VirtRegMap.cpp head/contrib/llvm/lib/ExecutionEngine/ExecutionEngine.cpp head/contrib/llvm/lib/ExecutionEngine/JIT/JIT.cpp head/contrib/llvm/lib/ExecutionEngine/JIT/JIT.h head/contrib/llvm/lib/ExecutionEngine/MCJIT/MCJIT.cpp head/contrib/llvm/lib/ExecutionEngine/MCJIT/MCJIT.h head/contrib/llvm/lib/ExecutionEngine/MCJIT/MCJITMemoryManager.h head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp head/contrib/llvm/lib/MC/ELFObjectWriter.cpp head/contrib/llvm/lib/MC/ELFObjectWriter.h head/contrib/llvm/lib/MC/MCAsmInfo.cpp head/contrib/llvm/lib/MC/MCAsmInfoDarwin.cpp head/contrib/llvm/lib/MC/MCAsmStreamer.cpp head/contrib/llvm/lib/MC/MCAssembler.cpp head/contrib/llvm/lib/MC/MCDisassembler/Disassembler.cpp head/contrib/llvm/lib/MC/MCDwarf.cpp head/contrib/llvm/lib/MC/MCELF.cpp head/contrib/llvm/lib/MC/MCELFStreamer.cpp head/contrib/llvm/lib/MC/MCExpr.cpp head/contrib/llvm/lib/MC/MCInstPrinter.cpp head/contrib/llvm/lib/MC/MCMachOStreamer.cpp head/contrib/llvm/lib/MC/MCObjectStreamer.cpp head/contrib/llvm/lib/MC/MCParser/AsmLexer.cpp head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp head/contrib/llvm/lib/MC/MCParser/COFFAsmParser.cpp head/contrib/llvm/lib/MC/MCParser/DarwinAsmParser.cpp head/contrib/llvm/lib/MC/MCStreamer.cpp head/contrib/llvm/lib/MC/WinCOFFStreamer.cpp head/contrib/llvm/lib/Support/APInt.cpp head/contrib/llvm/lib/Support/Dwarf.cpp head/contrib/llvm/lib/Support/FoldingSet.cpp head/contrib/llvm/lib/Support/Host.cpp head/contrib/llvm/lib/Support/MemoryBuffer.cpp head/contrib/llvm/lib/Support/SourceMgr.cpp head/contrib/llvm/lib/Support/Unix/Host.inc head/contrib/llvm/lib/Support/Unix/Program.inc head/contrib/llvm/lib/Support/Windows/Program.inc head/contrib/llvm/lib/Target/ARM/ARMAsmBackend.cpp head/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.cpp head/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.h head/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp head/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.h head/contrib/llvm/lib/Target/ARM/ARMCodeEmitter.cpp head/contrib/llvm/lib/Target/ARM/ARMFastISel.cpp head/contrib/llvm/lib/Target/ARM/ARMFixupKinds.h head/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp head/contrib/llvm/lib/Target/ARM/ARMISelLowering.h head/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td head/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td head/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td head/contrib/llvm/lib/Target/ARM/ARMInstrThumb.td head/contrib/llvm/lib/Target/ARM/ARMInstrThumb2.td head/contrib/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp head/contrib/llvm/lib/Target/ARM/ARMMCAsmInfo.cpp head/contrib/llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp head/contrib/llvm/lib/Target/ARM/ARMPerfectShuffle.h head/contrib/llvm/lib/Target/ARM/ARMRegisterInfo.td head/contrib/llvm/lib/Target/ARM/ARMSelectionDAGInfo.cpp head/contrib/llvm/lib/Target/ARM/ARMSelectionDAGInfo.h head/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp head/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp head/contrib/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h head/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp head/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h head/contrib/llvm/lib/Target/ARM/Thumb1RegisterInfo.cpp head/contrib/llvm/lib/Target/Alpha/AlphaISelLowering.cpp head/contrib/llvm/lib/Target/Alpha/AlphaISelLowering.h head/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp head/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.h head/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.td head/contrib/llvm/lib/Target/Blackfin/BlackfinFrameLowering.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinFrameLowering.h head/contrib/llvm/lib/Target/Blackfin/BlackfinISelDAGToDAG.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinISelLowering.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinISelLowering.h head/contrib/llvm/lib/Target/Blackfin/BlackfinInstrInfo.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.h head/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.td head/contrib/llvm/lib/Target/CBackend/CBackend.cpp head/contrib/llvm/lib/Target/CellSPU/SPUISelLowering.cpp head/contrib/llvm/lib/Target/CellSPU/SPUISelLowering.h head/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.cpp head/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.h head/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.td head/contrib/llvm/lib/Target/MBlaze/MBlazeISelLowering.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeISelLowering.h head/contrib/llvm/lib/Target/MBlaze/MBlazeInstrInfo.td head/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.h head/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.td head/contrib/llvm/lib/Target/MSP430/MSP430ISelLowering.cpp head/contrib/llvm/lib/Target/MSP430/MSP430ISelLowering.h head/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.cpp head/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.h head/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.td head/contrib/llvm/lib/Target/Mips/Mips.h head/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.cpp head/contrib/llvm/lib/Target/Mips/MipsFrameLowering.cpp head/contrib/llvm/lib/Target/Mips/MipsFrameLowering.h head/contrib/llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp head/contrib/llvm/lib/Target/Mips/MipsISelLowering.h head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td head/contrib/llvm/lib/Target/Mips/MipsInstrFormats.td head/contrib/llvm/lib/Target/Mips/MipsInstrInfo.h head/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td head/contrib/llvm/lib/Target/Mips/MipsMCAsmInfo.cpp head/contrib/llvm/lib/Target/Mips/MipsMachineFunction.h head/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.cpp head/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.h head/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.td head/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp head/contrib/llvm/lib/Target/Mips/MipsTargetMachine.h head/contrib/llvm/lib/Target/PTX/PTX.td head/contrib/llvm/lib/Target/PTX/PTXISelLowering.cpp head/contrib/llvm/lib/Target/PTX/PTXISelLowering.h head/contrib/llvm/lib/Target/PTX/PTXInstrInfo.td head/contrib/llvm/lib/Target/PTX/PTXRegisterInfo.h head/contrib/llvm/lib/Target/PTX/PTXSubtarget.cpp head/contrib/llvm/lib/Target/PTX/PTXSubtarget.h head/contrib/llvm/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp head/contrib/llvm/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h head/contrib/llvm/lib/Target/PowerPC/PPC.h head/contrib/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp head/contrib/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp head/contrib/llvm/lib/Target/PowerPC/PPCHazardRecognizers.cpp head/contrib/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp head/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp head/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.h head/contrib/llvm/lib/Target/PowerPC/PPCInstr64Bit.td head/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.td head/contrib/llvm/lib/Target/PowerPC/PPCMCAsmInfo.cpp head/contrib/llvm/lib/Target/PowerPC/PPCMCInstLower.cpp head/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp head/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.h head/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.td head/contrib/llvm/lib/Target/Sparc/SparcISelLowering.cpp head/contrib/llvm/lib/Target/Sparc/SparcISelLowering.h head/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.cpp head/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.h head/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.td head/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp head/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.h head/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp head/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.h head/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td head/contrib/llvm/lib/Target/TargetLibraryInfo.cpp head/contrib/llvm/lib/Target/TargetLoweringObjectFile.cpp head/contrib/llvm/lib/Target/TargetMachine.cpp head/contrib/llvm/lib/Target/TargetRegisterInfo.cpp head/contrib/llvm/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp head/contrib/llvm/lib/Target/X86/InstPrinter/X86ATTInstPrinter.h head/contrib/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp head/contrib/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.h head/contrib/llvm/lib/Target/X86/X86.td head/contrib/llvm/lib/Target/X86/X86FastISel.cpp head/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp head/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp head/contrib/llvm/lib/Target/X86/X86ISelLowering.h head/contrib/llvm/lib/Target/X86/X86InstrCompiler.td head/contrib/llvm/lib/Target/X86/X86InstrExtension.td head/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td head/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp head/contrib/llvm/lib/Target/X86/X86InstrInfo.h head/contrib/llvm/lib/Target/X86/X86InstrInfo.td head/contrib/llvm/lib/Target/X86/X86InstrMMX.td head/contrib/llvm/lib/Target/X86/X86InstrSSE.td head/contrib/llvm/lib/Target/X86/X86MCAsmInfo.cpp head/contrib/llvm/lib/Target/X86/X86MCCodeEmitter.cpp head/contrib/llvm/lib/Target/X86/X86MCInstLower.cpp head/contrib/llvm/lib/Target/X86/X86RegisterInfo.cpp head/contrib/llvm/lib/Target/X86/X86RegisterInfo.h head/contrib/llvm/lib/Target/X86/X86RegisterInfo.td head/contrib/llvm/lib/Target/X86/X86Subtarget.cpp head/contrib/llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp head/contrib/llvm/lib/Target/XCore/XCoreISelLowering.cpp head/contrib/llvm/lib/Target/XCore/XCoreISelLowering.h head/contrib/llvm/lib/Target/XCore/XCoreInstrInfo.td head/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.cpp head/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.h head/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.td head/contrib/llvm/lib/Transforms/IPO/DeadTypeElimination.cpp head/contrib/llvm/lib/Transforms/IPO/ExtractGV.cpp head/contrib/llvm/lib/Transforms/IPO/GlobalOpt.cpp head/contrib/llvm/lib/Transforms/IPO/PruneEH.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombine.h head/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp head/contrib/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp head/contrib/llvm/lib/Transforms/Instrumentation/PathProfiling.cpp head/contrib/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp head/contrib/llvm/lib/Transforms/Scalar/GVN.cpp head/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp head/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp head/contrib/llvm/lib/Transforms/Scalar/LICM.cpp head/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp head/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp head/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp head/contrib/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp head/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp head/contrib/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp head/contrib/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp head/contrib/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp head/contrib/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp head/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp head/contrib/llvm/lib/Transforms/Utils/BuildLibCalls.cpp head/contrib/llvm/lib/Transforms/Utils/InlineFunction.cpp head/contrib/llvm/lib/Transforms/Utils/Local.cpp head/contrib/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp head/contrib/llvm/lib/Transforms/Utils/SSAUpdater.cpp head/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp head/contrib/llvm/lib/VMCore/Attributes.cpp head/contrib/llvm/lib/VMCore/AutoUpgrade.cpp head/contrib/llvm/lib/VMCore/DebugInfoProbe.cpp head/contrib/llvm/lib/VMCore/Function.cpp head/contrib/llvm/lib/VMCore/IRBuilder.cpp head/contrib/llvm/lib/VMCore/InlineAsm.cpp head/contrib/llvm/lib/VMCore/Instructions.cpp head/contrib/llvm/lib/VMCore/PassManager.cpp head/contrib/llvm/lib/VMCore/Type.cpp head/contrib/llvm/lib/VMCore/Verifier.cpp head/contrib/llvm/tools/clang/include/clang-c/Index.h head/contrib/llvm/tools/clang/include/clang/AST/APValue.h head/contrib/llvm/tools/clang/include/clang/AST/ASTContext.h head/contrib/llvm/tools/clang/include/clang/AST/CanonicalType.h head/contrib/llvm/tools/clang/include/clang/AST/Decl.h head/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h head/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h head/contrib/llvm/tools/clang/include/clang/AST/DeclObjC.h head/contrib/llvm/tools/clang/include/clang/AST/DeclTemplate.h head/contrib/llvm/tools/clang/include/clang/AST/Expr.h head/contrib/llvm/tools/clang/include/clang/AST/ExternalASTSource.h head/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h head/contrib/llvm/tools/clang/include/clang/AST/StmtVisitor.h head/contrib/llvm/tools/clang/include/clang/AST/Type.h head/contrib/llvm/tools/clang/include/clang/AST/TypeLoc.h head/contrib/llvm/tools/clang/include/clang/AST/TypeNodes.def head/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsARM.def head/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def head/contrib/llvm/tools/clang/include/clang/Basic/DeclNodes.td head/contrib/llvm/tools/clang/include/clang/Basic/Diagnostic.h head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticCommonKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticFrontendKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticIDs.h head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/ExceptionSpecificationType.h head/contrib/llvm/tools/clang/include/clang/Basic/IdentifierTable.h head/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.h head/contrib/llvm/tools/clang/include/clang/Basic/SourceLocation.h head/contrib/llvm/tools/clang/include/clang/Basic/SourceManager.h head/contrib/llvm/tools/clang/include/clang/Basic/Specifiers.h head/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td head/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h head/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def head/contrib/llvm/tools/clang/include/clang/Basic/TypeTraits.h head/contrib/llvm/tools/clang/include/clang/Basic/arm_neon.td head/contrib/llvm/tools/clang/include/clang/Driver/CC1AsOptions.td head/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td head/contrib/llvm/tools/clang/include/clang/Driver/Options.td head/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h head/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h head/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h head/contrib/llvm/tools/clang/include/clang/Frontend/DiagnosticOptions.h head/contrib/llvm/tools/clang/include/clang/Frontend/LangStandard.h head/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def head/contrib/llvm/tools/clang/include/clang/Frontend/PreprocessorOptions.h head/contrib/llvm/tools/clang/include/clang/Frontend/Utils.h head/contrib/llvm/tools/clang/include/clang/Lex/HeaderSearch.h head/contrib/llvm/tools/clang/include/clang/Lex/LiteralSupport.h head/contrib/llvm/tools/clang/include/clang/Lex/PreprocessingRecord.h head/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h head/contrib/llvm/tools/clang/include/clang/Parse/Parser.h head/contrib/llvm/tools/clang/include/clang/Sema/CodeCompleteConsumer.h head/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h head/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h head/contrib/llvm/tools/clang/include/clang/Sema/Lookup.h head/contrib/llvm/tools/clang/include/clang/Sema/Overload.h head/contrib/llvm/tools/clang/include/clang/Sema/Scope.h head/contrib/llvm/tools/clang/include/clang/Sema/Sema.h head/contrib/llvm/tools/clang/include/clang/Sema/Template.h head/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h head/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h head/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/Checker.h head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/GRState.h head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ObjCMessage.h head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h head/contrib/llvm/tools/clang/lib/AST/APValue.cpp head/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp head/contrib/llvm/tools/clang/lib/AST/ASTDiagnostic.cpp head/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp head/contrib/llvm/tools/clang/lib/AST/Decl.cpp head/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp head/contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp head/contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp head/contrib/llvm/tools/clang/lib/AST/DeclPrinter.cpp head/contrib/llvm/tools/clang/lib/AST/DeclTemplate.cpp head/contrib/llvm/tools/clang/lib/AST/DumpXML.cpp head/contrib/llvm/tools/clang/lib/AST/Expr.cpp head/contrib/llvm/tools/clang/lib/AST/ExprClassification.cpp head/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp head/contrib/llvm/tools/clang/lib/AST/ExternalASTSource.cpp head/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp head/contrib/llvm/tools/clang/lib/AST/Mangle.cpp head/contrib/llvm/tools/clang/lib/AST/MicrosoftMangle.cpp head/contrib/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp head/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp head/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp head/contrib/llvm/tools/clang/lib/AST/Type.cpp head/contrib/llvm/tools/clang/lib/AST/TypePrinter.cpp head/contrib/llvm/tools/clang/lib/Analysis/AnalysisContext.cpp head/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp head/contrib/llvm/tools/clang/lib/Analysis/CocoaConventions.cpp head/contrib/llvm/tools/clang/lib/Analysis/LiveVariables.cpp head/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp head/contrib/llvm/tools/clang/lib/Basic/Diagnostic.cpp head/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp head/contrib/llvm/tools/clang/lib/Basic/FileManager.cpp head/contrib/llvm/tools/clang/lib/Basic/IdentifierTable.cpp head/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp head/contrib/llvm/tools/clang/lib/Basic/Targets.cpp head/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGCXX.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGCall.h head/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.h head/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGDeclCXX.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGException.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGObjC.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGObjCGNU.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGObjCMac.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.h head/contrib/llvm/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGVTT.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGVTables.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.h head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.h head/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp head/contrib/llvm/tools/clang/lib/CodeGen/ModuleBuilder.cpp head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp head/contrib/llvm/tools/clang/lib/Driver/Driver.cpp head/contrib/llvm/tools/clang/lib/Driver/HostInfo.cpp head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp head/contrib/llvm/tools/clang/lib/Driver/ToolChains.h head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp head/contrib/llvm/tools/clang/lib/Driver/Tools.h head/contrib/llvm/tools/clang/lib/Frontend/ASTConsumers.cpp head/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp head/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp head/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp head/contrib/llvm/tools/clang/lib/Frontend/CreateInvocationFromCommandLine.cpp head/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp head/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp head/contrib/llvm/tools/clang/lib/Frontend/LogDiagnosticPrinter.cpp head/contrib/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp head/contrib/llvm/tools/clang/lib/Frontend/Warnings.cpp head/contrib/llvm/tools/clang/lib/Headers/emmintrin.h head/contrib/llvm/tools/clang/lib/Headers/mmintrin.h head/contrib/llvm/tools/clang/lib/Headers/xmmintrin.h head/contrib/llvm/tools/clang/lib/Index/CallGraph.cpp head/contrib/llvm/tools/clang/lib/Index/Indexer.cpp head/contrib/llvm/tools/clang/lib/Lex/HeaderSearch.cpp head/contrib/llvm/tools/clang/lib/Lex/Lexer.cpp head/contrib/llvm/tools/clang/lib/Lex/LiteralSupport.cpp head/contrib/llvm/tools/clang/lib/Lex/MacroInfo.cpp head/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp head/contrib/llvm/tools/clang/lib/Lex/PPMacroExpansion.cpp head/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp head/contrib/llvm/tools/clang/lib/Lex/PreprocessingRecord.cpp head/contrib/llvm/tools/clang/lib/Lex/Preprocessor.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseObjc.cpp head/contrib/llvm/tools/clang/lib/Parse/ParsePragma.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseTentative.cpp head/contrib/llvm/tools/clang/lib/Parse/Parser.cpp head/contrib/llvm/tools/clang/lib/Rewrite/RewriteObjC.cpp head/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp head/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp head/contrib/llvm/tools/clang/lib/Sema/JumpDiagnostics.cpp head/contrib/llvm/tools/clang/lib/Sema/Sema.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaAccess.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaCXXCast.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaCXXScopeSpec.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaExceptionSpec.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaExprObjC.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateVariadic.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp head/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h head/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp head/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/NSErrorChecker.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/BasicStore.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/BasicValueFactory.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CFRefCount.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CXXExprEngine.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/Environment.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/FlatStore.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/GRState.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ObjCMessage.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp head/contrib/llvm/tools/clang/tools/driver/cc1as_main.cpp head/contrib/llvm/utils/TableGen/AsmMatcherEmitter.cpp head/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp head/contrib/llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp head/contrib/llvm/utils/TableGen/CodeGenIntrinsics.h head/contrib/llvm/utils/TableGen/CodeGenRegisters.h head/contrib/llvm/utils/TableGen/CodeGenTarget.cpp head/contrib/llvm/utils/TableGen/CodeGenTarget.h head/contrib/llvm/utils/TableGen/DAGISelMatcherGen.cpp head/contrib/llvm/utils/TableGen/EDEmitter.cpp head/contrib/llvm/utils/TableGen/FastISelEmitter.cpp head/contrib/llvm/utils/TableGen/IntrinsicEmitter.cpp head/contrib/llvm/utils/TableGen/LLVMCConfigurationEmitter.cpp head/contrib/llvm/utils/TableGen/NeonEmitter.cpp head/contrib/llvm/utils/TableGen/Record.cpp head/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp head/contrib/llvm/utils/TableGen/TGLexer.cpp head/contrib/llvm/utils/TableGen/TGLexer.h head/contrib/llvm/utils/TableGen/TGParser.h head/contrib/llvm/utils/TableGen/TableGen.cpp head/lib/clang/include/clang/Basic/Version.inc head/lib/clang/libclangfrontend/Makefile head/lib/clang/libllvmasmprinter/Makefile head/lib/clang/libllvmcodegen/Makefile head/lib/clang/libllvmmc/Makefile head/lib/clang/libllvmmipscodegen/Makefile head/sys/boot/i386/zfsboot/Makefile head/usr.bin/clang/tblgen/Makefile Directory Properties: head/contrib/llvm/ (props changed) head/contrib/llvm/tools/clang/ (props changed) Modified: head/contrib/llvm/include/llvm-c/Core.h ============================================================================== --- head/contrib/llvm/include/llvm-c/Core.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm-c/Core.h Sun Jun 12 18:01:31 2011 (r223017) @@ -282,6 +282,8 @@ typedef enum { LLVMRealPredicateTrue /**< Always true (always folded) */ } LLVMRealPredicate; +void LLVMInitializeCore(LLVMPassRegistryRef R); + /*===-- Error handling ----------------------------------------------------===*/ @@ -1164,6 +1166,7 @@ namespace llvm { for (LLVMValueRef *I = Vals, *E = Vals + Length; I != E; ++I) cast(*I); #endif + (void)Length; return reinterpret_cast(Vals); } Modified: head/contrib/llvm/include/llvm-c/Disassembler.h ============================================================================== --- head/contrib/llvm/include/llvm-c/Disassembler.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm-c/Disassembler.h Sun Jun 12 18:01:31 2011 (r223017) @@ -7,16 +7,16 @@ |* *| |*===----------------------------------------------------------------------===*| |* *| -|* This header provides public interface to a disassembler library. *| +|* This header provides a public interface to a disassembler library. *| |* LLVM provides an implementation of this interface. *| |* *| \*===----------------------------------------------------------------------===*/ #ifndef LLVM_C_DISASSEMBLER_H -#define LLVM_C_DISASSEMBLER_H 1 +#define LLVM_C_DISASSEMBLER_H -#include #include "llvm/Support/DataTypes.h" +#include /** * An opaque reference to a disassembler context. @@ -38,14 +38,11 @@ typedef void *LLVMDisasmContextRef; * will be the instruction width. The information is returned in TagBuf and is * Triple specific with its specific information defined by the value of * TagType for that Triple. If symbolic information is returned the function - * returns 1 else it returns 0. + * returns 1, otherwise it returns 0. */ -typedef int (*LLVMOpInfoCallback)(void *DisInfo, - uint64_t PC, - uint64_t Offset, - uint64_t Size, - int TagType, - void *TagBuf); +typedef int (*LLVMOpInfoCallback)(void *DisInfo, uint64_t PC, + uint64_t Offset, uint64_t Size, + int TagType, void *TagBuf); /** * The initial support in LLVM MC for the most general form of a relocatable @@ -68,10 +65,11 @@ typedef int (*LLVMOpInfoCallback)(void * * operands like "_foo@GOT", ":lower16:_foo", etc. */ struct LLVMOpInfoSymbol1 { - uint64_t Present; /* 1 if this symbol is present */ - char *Name; /* symbol name if not NULL */ - uint64_t Value; /* symbol value if name is NULL */ + uint64_t Present; /* 1 if this symbol is present */ + char *Name; /* symbol name if not NULL */ + uint64_t Value; /* symbol value if name is NULL */ }; + struct LLVMOpInfo1 { struct LLVMOpInfoSymbol1 AddSymbol; struct LLVMOpInfoSymbol1 SubtractSymbol; @@ -92,11 +90,11 @@ struct LLVMOpInfo1 { /** * The type for the symbol lookup function. This may be called by the - * disassembler for such things like adding a comment for a PC plus a constant + * disassembler for things like adding a comment for a PC plus a constant * offset load instruction to use a symbol name instead of a load address value. * It is passed the block information is saved when the disassembler context is * created and a value of a symbol to look up. If no symbol is found NULL is - * to be returned. + * returned. */ typedef const char *(*LLVMSymbolLookupCallback)(void *DisInfo, uint64_t SymbolValue); @@ -107,40 +105,33 @@ extern "C" { /** * Create a disassembler for the TripleName. Symbolic disassembly is supported - * by passing a block of information in the DisInfo parameter and specifing the - * TagType and call back functions as described above. These can all be passed - * as NULL. If successful this returns a disassembler context if not it + * by passing a block of information in the DisInfo parameter and specifying the + * TagType and callback functions as described above. These can all be passed + * as NULL. If successful, this returns a disassembler context. If not, it * returns NULL. */ -extern LLVMDisasmContextRef -LLVMCreateDisasm(const char *TripleName, - void *DisInfo, - int TagType, - LLVMOpInfoCallback GetOpInfo, - LLVMSymbolLookupCallback SymbolLookUp); +LLVMDisasmContextRef LLVMCreateDisasm(const char *TripleName, void *DisInfo, + int TagType, LLVMOpInfoCallback GetOpInfo, + LLVMSymbolLookupCallback SymbolLookUp); /** * Dispose of a disassembler context. */ -extern void -LLVMDisasmDispose(LLVMDisasmContextRef DC); +void LLVMDisasmDispose(LLVMDisasmContextRef DC); /** - * Disassmble a single instruction using the disassembler context specified in - * the parameter DC. The bytes of the instruction are specified in the parameter - * Bytes, and contains at least BytesSize number of bytes. The instruction is - * at the address specified by the PC parameter. If a valid instruction can be - * disassembled its string is returned indirectly in OutString which whos size - * is specified in the parameter OutStringSize. This function returns the - * number of bytes in the instruction or zero if there was no valid instruction. - */ -extern size_t -LLVMDisasmInstruction(LLVMDisasmContextRef DC, - uint8_t *Bytes, - uint64_t BytesSize, - uint64_t PC, - char *OutString, - size_t OutStringSize); + * Disassemble a single instruction using the disassembler context specified in + * the parameter DC. The bytes of the instruction are specified in the + * parameter Bytes, and contains at least BytesSize number of bytes. The + * instruction is at the address specified by the PC parameter. If a valid + * instruction can be disassembled, its string is returned indirectly in + * OutString whose size is specified in the parameter OutStringSize. This + * function returns the number of bytes in the instruction or zero if there was + * no valid instruction. + */ +size_t LLVMDisasmInstruction(LLVMDisasmContextRef DC, uint8_t *Bytes, + uint64_t BytesSize, uint64_t PC, + char *OutString, size_t OutStringSize); #ifdef __cplusplus } Modified: head/contrib/llvm/include/llvm/ADT/FoldingSet.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/FoldingSet.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/ADT/FoldingSet.h Sun Jun 12 18:01:31 2011 (r223017) @@ -671,17 +671,10 @@ public: // Partial specializations of FoldingSetTrait. template struct FoldingSetTrait { - static inline void Profile(const T *X, FoldingSetNodeID &ID) { + static inline void Profile(T *X, FoldingSetNodeID &ID) { ID.AddPointer(X); } }; - -template struct FoldingSetTrait { - static inline void Profile(const T *X, FoldingSetNodeID &ID) { - ID.AddPointer(X); - } -}; - } // End of namespace llvm. #endif Copied: head/contrib/llvm/include/llvm/ADT/PackedVector.h (from r223016, vendor/llvm/dist/include/llvm/ADT/PackedVector.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/llvm/include/llvm/ADT/PackedVector.h Sun Jun 12 18:01:31 2011 (r223017, copy of r223016, vendor/llvm/dist/include/llvm/ADT/PackedVector.h) @@ -0,0 +1,158 @@ +//===- llvm/ADT/PackedVector.h - Packed values vector -----------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements the PackedVector class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ADT_PACKEDVECTOR_H +#define LLVM_ADT_PACKEDVECTOR_H + +#include "llvm/ADT/BitVector.h" +#include + +namespace llvm { + +template +class PackedVectorBase; + +// This won't be necessary if we can specialize members without specializing +// the parent template. +template +class PackedVectorBase { +protected: + static T getValue(const llvm::BitVector &Bits, unsigned Idx) { + T val = T(); + for (unsigned i = 0; i != BitNum; ++i) + val = T(val | ((Bits[(Idx << (BitNum-1)) + i] ? 1UL : 0UL) << i)); + return val; + } + + static void setValue(llvm::BitVector &Bits, unsigned Idx, T val) { + assert((val >> BitNum) == 0 && "value is too big"); + for (unsigned i = 0; i != BitNum; ++i) + Bits[(Idx << (BitNum-1)) + i] = val & (T(1) << i); + } +}; + +template +class PackedVectorBase { +protected: + static T getValue(const llvm::BitVector &Bits, unsigned Idx) { + T val = T(); + for (unsigned i = 0; i != BitNum-1; ++i) + val = T(val | ((Bits[(Idx << (BitNum-1)) + i] ? 1UL : 0UL) << i)); + if (Bits[(Idx << (BitNum-1)) + BitNum-1]) + val = ~val; + return val; + } + + static void setValue(llvm::BitVector &Bits, unsigned Idx, T val) { + if (val < 0) { + val = ~val; + Bits.set((Idx << (BitNum-1)) + BitNum-1); + } + assert((val >> (BitNum-1)) == 0 && "value is too big"); + for (unsigned i = 0; i != BitNum-1; ++i) + Bits[(Idx << (BitNum-1)) + i] = val & (T(1) << i); + } +}; + +/// \brief Store a vector of values using a specific number of bits for each +/// value. Both signed and unsigned types can be used, e.g +/// @code +/// PackedVector vec; +/// @endcode +/// will create a vector accepting values -2, -1, 0, 1. Any other value will hit +/// an assertion. +template +class PackedVector : public PackedVectorBase::is_signed> { + llvm::BitVector Bits; + typedef PackedVectorBase::is_signed> base; + +public: + class reference { + PackedVector &Vec; + const unsigned Idx; + + reference(); // Undefined + public: + reference(PackedVector &vec, unsigned idx) : Vec(vec), Idx(idx) { } + + reference &operator=(T val) { + Vec.setValue(Vec.Bits, Idx, val); + return *this; + } + operator T() { + return Vec.getValue(Vec.Bits, Idx); + } + }; + + PackedVector() { } + explicit PackedVector(unsigned size) : Bits(size << (BitNum-1)) { } + + bool empty() const { return Bits.empty(); } + + unsigned size() const { return Bits.size() >> (BitNum-1); } + + void clear() { Bits.clear(); } + + void resize(unsigned N) { Bits.resize(N << (BitNum-1)); } + + void reserve(unsigned N) { Bits.reserve(N << (BitNum-1)); } + + PackedVector &reset() { + Bits.reset(); + return *this; + } + + void push_back(T val) { + resize(size()+1); + (*this)[size()-1] = val; + } + + reference operator[](unsigned Idx) { + return reference(*this, Idx); + } + + T operator[](unsigned Idx) const { + return base::getValue(Bits, Idx); + } + + bool operator==(const PackedVector &RHS) const { + return Bits == RHS.Bits; + } + + bool operator!=(const PackedVector &RHS) const { + return Bits != RHS.Bits; + } + + const PackedVector &operator=(const PackedVector &RHS) { + Bits = RHS.Bits; + return *this; + } + + PackedVector &operator|=(const PackedVector &RHS) { + Bits |= RHS.Bits; + return *this; + } + + void swap(PackedVector &RHS) { + Bits.swap(RHS.Bits); + } +}; + +// Leave BitNum=0 undefined. +template +class PackedVector; + +} // end llvm namespace + +#endif Modified: head/contrib/llvm/include/llvm/ADT/StringRef.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/StringRef.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/ADT/StringRef.h Sun Jun 12 18:01:31 2011 (r223017) @@ -46,7 +46,14 @@ namespace llvm { // integer works around this bug. static size_t min(size_t a, size_t b) { return a < b ? a : b; } static size_t max(size_t a, size_t b) { return a > b ? a : b; } - + + // Workaround memcmp issue with null pointers (undefined behavior) + // by providing a specialized version + static int compareMemory(const char *Lhs, const char *Rhs, size_t Length) { + if (Length == 0) { return 0; } + return ::memcmp(Lhs,Rhs,Length); + } + public: /// @name Constructors /// @{ @@ -56,11 +63,17 @@ namespace llvm { /// Construct a string ref from a cstring. /*implicit*/ StringRef(const char *Str) - : Data(Str), Length(::strlen(Str)) {} + : Data(Str) { + assert(Str && "StringRef cannot be built from a NULL argument"); + Length = ::strlen(Str); // invoking strlen(NULL) is undefined behavior + } /// Construct a string ref from a pointer and length. /*implicit*/ StringRef(const char *data, size_t length) - : Data(data), Length(length) {} + : Data(data), Length(length) { + assert((data || length == 0) && + "StringRef cannot be built from a NULL argument with non-null length"); + } /// Construct a string ref from an std::string. /*implicit*/ StringRef(const std::string &Str) @@ -104,7 +117,7 @@ namespace llvm { /// compare() when the relative ordering of inequal strings isn't needed. bool equals(StringRef RHS) const { return (Length == RHS.Length && - memcmp(Data, RHS.Data, RHS.Length) == 0); + compareMemory(Data, RHS.Data, RHS.Length) == 0); } /// equals_lower - Check for string equality, ignoring case. @@ -116,7 +129,7 @@ namespace llvm { /// is lexicographically less than, equal to, or greater than the \arg RHS. int compare(StringRef RHS) const { // Check the prefix for a mismatch. - if (int Res = memcmp(Data, RHS.Data, min(Length, RHS.Length))) + if (int Res = compareMemory(Data, RHS.Data, min(Length, RHS.Length))) return Res < 0 ? -1 : 1; // Otherwise the prefixes match, so we only need to check the lengths. @@ -183,13 +196,13 @@ namespace llvm { /// startswith - Check if this string starts with the given \arg Prefix. bool startswith(StringRef Prefix) const { return Length >= Prefix.Length && - memcmp(Data, Prefix.Data, Prefix.Length) == 0; + compareMemory(Data, Prefix.Data, Prefix.Length) == 0; } /// endswith - Check if this string ends with the given \arg Suffix. bool endswith(StringRef Suffix) const { return Length >= Suffix.Length && - memcmp(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0; + compareMemory(end() - Suffix.Length, Suffix.Data, Suffix.Length) == 0; } /// @} @@ -447,6 +460,10 @@ namespace llvm { return LHS.compare(RHS) != -1; } + inline std::string &operator+=(std::string &buffer, llvm::StringRef string) { + return buffer.append(string.data(), string.size()); + } + /// @} // StringRefs can be treated like a POD type. Modified: head/contrib/llvm/include/llvm/ADT/Triple.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/Triple.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/ADT/Triple.h Sun Jun 12 18:01:31 2011 (r223017) @@ -225,7 +225,7 @@ public: /// if the environment component is present). StringRef getOSAndEnvironmentName() const; - /// getOSNumber - Parse the version number from the OS name component of the + /// getOSVersion - Parse the version number from the OS name component of the /// triple, if present. /// /// For example, "fooos1.2.3" would return (1, 2, 3). Modified: head/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h Sun Jun 12 18:01:31 2011 (r223017) @@ -38,6 +38,7 @@ #define LLVM_ANALYSIS_ALIAS_ANALYSIS_H #include "llvm/Support/CallSite.h" +#include "llvm/ADT/DenseMap.h" namespace llvm { @@ -488,6 +489,32 @@ public: } }; +// Specialize DenseMapInfo for Location. +template<> +struct DenseMapInfo { + static inline AliasAnalysis::Location getEmptyKey() { + return + AliasAnalysis::Location(DenseMapInfo::getEmptyKey(), + 0, 0); + } + static inline AliasAnalysis::Location getTombstoneKey() { + return + AliasAnalysis::Location(DenseMapInfo::getTombstoneKey(), + 0, 0); + } + static unsigned getHashValue(const AliasAnalysis::Location &Val) { + return DenseMapInfo::getHashValue(Val.Ptr) ^ + DenseMapInfo::getHashValue(Val.Size) ^ + DenseMapInfo::getHashValue(Val.TBAATag); + } + static bool isEqual(const AliasAnalysis::Location &LHS, + const AliasAnalysis::Location &RHS) { + return LHS.Ptr == RHS.Ptr && + LHS.Size == RHS.Size && + LHS.TBAATag == RHS.TBAATag; + } +}; + /// isNoAliasCall - Return true if this pointer is returned by a noalias /// function. bool isNoAliasCall(const Value *V); Copied: head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h (from r223016, vendor/llvm/dist/include/llvm/Analysis/BranchProbabilityInfo.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h Sun Jun 12 18:01:31 2011 (r223017, copy of r223016, vendor/llvm/dist/include/llvm/Analysis/BranchProbabilityInfo.h) @@ -0,0 +1,78 @@ +//===--- BranchProbabilityInfo.h - Branch Probability Analysis --*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This pass is used to evaluate branch probabilties. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ANALYSIS_BRANCHPROBABILITYINFO_H +#define LLVM_ANALYSIS_BRANCHPROBABILITYINFO_H + +#include "llvm/InitializePasses.h" +#include "llvm/Support/BranchProbability.h" +#include "llvm/Analysis/LoopInfo.h" + +namespace llvm { + +class raw_ostream; + +class BranchProbabilityInfo : public FunctionPass { + + // Default weight value. Used when we don't have information about the edge. + static const uint32_t DEFAULT_WEIGHT = 16; + + typedef std::pair Edge; + + DenseMap Weights; + + // Get sum of the block successors' weights. + uint32_t getSumForBlock(BasicBlock *BB) const; + +public: + static char ID; + + BranchProbabilityInfo() : FunctionPass(ID) { + initializeBranchProbabilityInfoPass(*PassRegistry::getPassRegistry()); + } + + void getAnalysisUsage(AnalysisUsage &AU) const { + AU.addRequired(); + AU.setPreservesAll(); + } + + bool runOnFunction(Function &F); + + // Returned value is between 1 and UINT32_MAX. Look at + // BranchProbabilityInfo.cpp for details. + uint32_t getEdgeWeight(BasicBlock *Src, BasicBlock *Dst) const; + + // Look at BranchProbabilityInfo.cpp for details. Use it with caution! + void setEdgeWeight(BasicBlock *Src, BasicBlock *Dst, uint32_t Weight); + + // A 'Hot' edge is an edge which probability is >= 80%. + bool isEdgeHot(BasicBlock *Src, BasicBlock *Dst) const; + + // Return a hot successor for the block BB or null if there isn't one. + BasicBlock *getHotSucc(BasicBlock *BB) const; + + // Return a probability as a fraction between 0 (0% probability) and + // 1 (100% probability), however the value is never equal to 0, and can be 1 + // only iff SRC block has only one successor. + BranchProbability getEdgeProbability(BasicBlock *Src, BasicBlock *Dst) const; + + // Print value between 0 (0% probability) and 1 (100% probability), + // however the value is never equal to 0, and can be 1 only iff SRC block + // has only one successor. + raw_ostream &printEdgeProbability(raw_ostream &OS, BasicBlock *Src, + BasicBlock *Dst) const; +}; + +} + +#endif Modified: head/contrib/llvm/include/llvm/Analysis/CallGraph.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/CallGraph.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/Analysis/CallGraph.h Sun Jun 12 18:01:31 2011 (r223017) @@ -259,6 +259,9 @@ public: /// addCalledFunction - Add a function to the list of functions called by this /// one. void addCalledFunction(CallSite CS, CallGraphNode *M) { + assert(!CS.getInstruction() || + !CS.getCalledFunction() || + !CS.getCalledFunction()->isIntrinsic()); CalledFunctions.push_back(std::make_pair(CS.getInstruction(), M)); M->AddRef(); } Modified: head/contrib/llvm/include/llvm/Analysis/DIBuilder.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/DIBuilder.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/Analysis/DIBuilder.h Sun Jun 12 18:01:31 2011 (r223017) @@ -117,8 +117,9 @@ namespace llvm { /// @param Name Typedef name. /// @param File File where this type is defined. /// @param LineNo Line number. + /// @param Context The surrounding context for the typedef. DIType createTypedef(DIType Ty, StringRef Name, DIFile File, - unsigned LineNo); + unsigned LineNo, DIDescriptor Context); /// createFriend - Create debugging information entry for a 'friend'. DIType createFriend(DIType Ty, DIType FriendTy); Modified: head/contrib/llvm/include/llvm/Analysis/DebugInfo.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/DebugInfo.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/Analysis/DebugInfo.h Sun Jun 12 18:01:31 2011 (r223017) @@ -49,15 +49,16 @@ namespace llvm { class DIDescriptor { public: enum { - FlagPrivate = 1 << 0, - FlagProtected = 1 << 1, - FlagFwdDecl = 1 << 2, - FlagAppleBlock = 1 << 3, - FlagBlockByrefStruct = 1 << 4, - FlagVirtual = 1 << 5, - FlagArtificial = 1 << 6, - FlagExplicit = 1 << 7, - FlagPrototyped = 1 << 8 + FlagPrivate = 1 << 0, + FlagProtected = 1 << 1, + FlagFwdDecl = 1 << 2, + FlagAppleBlock = 1 << 3, + FlagBlockByrefStruct = 1 << 4, + FlagVirtual = 1 << 5, + FlagArtificial = 1 << 6, + FlagExplicit = 1 << 7, + FlagPrototyped = 1 << 8, + FlagObjcClassComplete = 1 << 9 }; protected: const MDNode *DbgNode; @@ -271,6 +272,9 @@ namespace llvm { bool isArtificial() const { return (getFlags() & FlagArtificial) != 0; } + bool isObjcClassComplete() const { + return (getFlags() & FlagObjcClassComplete) != 0; + } bool isValid() const { return DbgNode && (isBasicType() || isDerivedType() || isCompositeType()); } Modified: head/contrib/llvm/include/llvm/Analysis/FindUsedTypes.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/FindUsedTypes.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/Analysis/FindUsedTypes.h Sun Jun 12 18:01:31 2011 (r223017) @@ -14,8 +14,8 @@ #ifndef LLVM_ANALYSIS_FINDUSEDTYPES_H #define LLVM_ANALYSIS_FINDUSEDTYPES_H +#include "llvm/ADT/SetVector.h" #include "llvm/Pass.h" -#include namespace llvm { @@ -23,7 +23,7 @@ class Type; class Value; class FindUsedTypes : public ModulePass { - std::set UsedTypes; + SetVector UsedTypes; public: static char ID; // Pass identification, replacement for typeid FindUsedTypes() : ModulePass(ID) { @@ -33,7 +33,7 @@ public: /// getTypes - After the pass has been run, return the set containing all of /// the types used in the module. /// - const std::set &getTypes() const { return UsedTypes; } + const SetVector &getTypes() const { return UsedTypes; } /// Print the types found in the module. If the optional Module parameter is /// passed in, then the types are printed symbolically if possible, using the Modified: head/contrib/llvm/include/llvm/Analysis/IVUsers.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/IVUsers.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/Analysis/IVUsers.h Sun Jun 12 18:01:31 2011 (r223017) @@ -37,8 +37,8 @@ class TargetData; class IVStrideUse : public CallbackVH, public ilist_node { friend class IVUsers; public: - IVStrideUse(IVUsers *P, Instruction* U, Value *O) - : CallbackVH(U), Parent(P), OperandValToReplace(O) { + IVStrideUse(IVUsers *P, Instruction* U, Value *O, Value *PN) + : CallbackVH(U), Parent(P), OperandValToReplace(O), Phi(PN) { } /// getUser - Return the user instruction for this use. @@ -51,6 +51,11 @@ public: setValPtr(NewUser); } + /// getPhi - Return the phi node that represents this IV. + PHINode *getPhi() const { + return cast(Phi); + } + /// getOperandValToReplace - Return the Value of the operand in the user /// instruction that this IVStrideUse is representing. Value *getOperandValToReplace() const { @@ -81,6 +86,9 @@ private: /// that this IVStrideUse is representing. WeakVH OperandValToReplace; + /// Phi - The loop header phi that represents this IV. + WeakVH Phi; + /// PostIncLoops - The set of loops for which Expr has been adjusted to /// use post-inc mode. This corresponds with SCEVExpander's post-inc concept. PostIncLoopSet PostIncLoops; @@ -143,9 +151,9 @@ public: /// AddUsersIfInteresting - Inspect the specified Instruction. If it is a /// reducible SCEV, recursively add its users to the IVUsesByStride set and /// return true. Otherwise, return false. - bool AddUsersIfInteresting(Instruction *I); + bool AddUsersIfInteresting(Instruction *I, PHINode *Phi); - IVStrideUse &AddUser(Instruction *User, Value *Operand); + IVStrideUse &AddUser(Instruction *User, Value *Operand, PHINode *Phi); /// getReplacementExpr - Return a SCEV expression which computes the /// value of the OperandValToReplace of the given IVStrideUse. Modified: head/contrib/llvm/include/llvm/Analysis/RegionPass.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/RegionPass.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/Analysis/RegionPass.h Sun Jun 12 18:01:31 2011 (r223017) @@ -109,7 +109,7 @@ public: /// @brief Print passes managed by this manager. void dumpPassStructure(unsigned Offset); - /// @brief Print passes contained by this manager. + /// @brief Get passes contained by this manager. Pass *getContainedPass(unsigned N) { assert(N < PassVector.size() && "Pass number out of range!"); Pass *FP = static_cast(PassVector[N]); Modified: head/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h Sun Jun 12 18:01:31 2011 (r223017) @@ -270,30 +270,30 @@ namespace llvm { /// BackedgeTakenCounts - Cache the backedge-taken count of the loops for /// this function as they are computed. - std::map BackedgeTakenCounts; + DenseMap BackedgeTakenCounts; /// ConstantEvolutionLoopExitValue - This map contains entries for all of /// the PHI instructions that we attempt to compute constant evolutions for. /// This allows us to avoid potentially expensive recomputation of these /// properties. An instruction maps to null if we are unable to compute its /// exit value. - std::map ConstantEvolutionLoopExitValue; + DenseMap ConstantEvolutionLoopExitValue; /// ValuesAtScopes - This map contains entries for all the expressions /// that we attempt to compute getSCEVAtScope information for, which can /// be expensive in extreme cases. - std::map > ValuesAtScopes; /// LoopDispositions - Memoized computeLoopDisposition results. - std::map > LoopDispositions; /// computeLoopDisposition - Compute a LoopDisposition value. LoopDisposition computeLoopDisposition(const SCEV *S, const Loop *L); /// BlockDispositions - Memoized computeBlockDisposition results. - std::map > BlockDispositions; /// computeBlockDisposition - Compute a BlockDisposition value. Modified: head/contrib/llvm/include/llvm/Argument.h ============================================================================== --- head/contrib/llvm/include/llvm/Argument.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/Argument.h Sun Jun 12 18:01:31 2011 (r223017) @@ -51,6 +51,9 @@ public: /// hasByValAttr - Return true if this argument has the byval attribute on it /// in its containing function. bool hasByValAttr() const; + + /// getParamAlignment - If this is a byval argument, return its alignment. + unsigned getParamAlignment() const; /// hasNestAttr - Return true if this argument has the nest attribute on /// it in its containing function. Modified: head/contrib/llvm/include/llvm/Attributes.h ============================================================================== --- head/contrib/llvm/include/llvm/Attributes.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/Attributes.h Sun Jun 12 18:01:31 2011 (r223017) @@ -67,6 +67,20 @@ const Attributes StackAlignment = 7<<26 ///alignstack(1)) const Attributes Hotpatch = 1<<29; ///< Function should have special ///'hotpatch' sequence in prologue +const Attributes UWTable = 1<<30; ///< Function must be in a unwind + ///table + +/// Note that uwtable is about the ABI or the user mandating an entry in the +/// unwind table. The nounwind attribute is about an exception passing by the +/// function. +/// In a theoretical system that uses tables for profiling and sjlj for +/// exceptions, they would be fully independent. In a normal system that +/// uses tables for both, the semantics are: +/// nil = Needs an entry because an exception might pass by. +/// nounwind = No need for an entry +/// uwtable = Needs an entry because the ABI says so and because +/// an exception might pass by. +/// uwtable + nounwind = Needs an entry because the ABI says so. /// @brief Attributes that only apply to function parameters. const Attributes ParameterOnly = ByVal | Nest | StructRet | NoCapture; @@ -76,7 +90,7 @@ const Attributes ParameterOnly = ByVal | const Attributes FunctionOnly = NoReturn | NoUnwind | ReadNone | ReadOnly | NoInline | AlwaysInline | OptimizeForSize | StackProtect | StackProtectReq | NoRedZone | NoImplicitFloat | Naked | InlineHint | StackAlignment | - Hotpatch; + Hotpatch | UWTable; /// @brief Parameter attributes that do not apply to vararg call arguments. const Attributes VarArgsIncompatible = StructRet; Modified: head/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h ============================================================================== --- head/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h Sun Jun 12 18:01:31 2011 (r223017) @@ -185,7 +185,14 @@ namespace llvm { void emitPrologLabel(const MachineInstr &MI); - bool needsCFIMoves(); + enum CFIMoveType { + CFI_M_None, + CFI_M_EH, + CFI_M_Debug + }; + CFIMoveType needsCFIMoves(); + + bool needsSEHMoves(); /// EmitConstantPool - Print to the current output stream assembly /// representations of the constants in the constant pool MCP. This is @@ -381,10 +388,6 @@ namespace llvm { /// operands. virtual MachineLocation getDebugValueLocation(const MachineInstr *MI) const; - /// getDwarfRegOpSize - get size required to emit given machine location - /// using dwarf encoding. - virtual unsigned getDwarfRegOpSize(const MachineLocation &MLoc) const; - /// getISAEncoding - Get the value for DW_AT_APPLE_isa. Zero if no isa /// encoding specified. virtual unsigned getISAEncoding() { return 0; } @@ -396,12 +399,9 @@ namespace llvm { // Dwarf Lowering Routines //===------------------------------------------------------------------===// - /// EmitFrameMoves - Emit frame instructions to describe the layout of the + /// EmitCFIFrameMove - Emit frame instruction to describe the layout of the /// frame. - void EmitFrameMoves(const std::vector &Moves, - MCSymbol *BaseLabel, bool isEH) const; void EmitCFIFrameMove(const MachineMove &Move) const; - void EmitCFIFrameMoves(const std::vector &Moves) const; //===------------------------------------------------------------------===// // Inline Asm Support Modified: head/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h ============================================================================== --- head/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h Sun Jun 12 18:01:31 2011 (r223017) @@ -16,6 +16,7 @@ #define LLVM_CODEGEN_CALLINGCONVLOWER_H #include "llvm/ADT/SmallVector.h" +#include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/ValueTypes.h" #include "llvm/Target/TargetCallingConv.h" #include "llvm/CallingConv.h" @@ -141,14 +142,19 @@ typedef bool CCCustomFn(unsigned &ValNo, MVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, CCState &State); -typedef enum { Invalid, Prologue, Call } ParmContext; +/// ParmContext - This enum tracks whether calling convention lowering is in +/// the context of prologue or call generation. Not all backends make use of +/// this information. +typedef enum { Unknown, Prologue, Call } ParmContext; /// CCState - This class holds information needed while lowering arguments and /// return values. It captures which registers are already assigned and which /// stack slots are used. It provides accessors to allocate these values. class CCState { +private: CallingConv::ID CallingConv; bool IsVarArg; + MachineFunction &MF; const TargetMachine &TM; const TargetRegisterInfo &TRI; SmallVector &Locs; @@ -158,10 +164,14 @@ class CCState { SmallVector UsedRegs; unsigned FirstByValReg; bool FirstByValRegValid; + +protected: ParmContext CallOrPrologue; + public: - CCState(CallingConv::ID CC, bool isVarArg, const TargetMachine &TM, - SmallVector &locs, LLVMContext &C); + CCState(CallingConv::ID CC, bool isVarArg, MachineFunction &MF, + const TargetMachine &TM, SmallVector &locs, + LLVMContext &C); void addLoc(const CCValAssign &V) { Locs.push_back(V); @@ -169,6 +179,7 @@ public: LLVMContext &getContext() const { return Context; } const TargetMachine &getTarget() const { return TM; } + MachineFunction &getMachineFunction() const { return MF; } CallingConv::ID getCallingConv() const { return CallingConv; } bool isVarArg() const { return IsVarArg; } @@ -301,7 +312,6 @@ public: bool isFirstByValRegValid() { return FirstByValRegValid; } ParmContext getCallOrPrologue() { return CallOrPrologue; } - void setCallOrPrologue(ParmContext pc) { CallOrPrologue = pc; } private: /// MarkAllocated - Mark a register and all of its aliases as allocated. Modified: head/contrib/llvm/include/llvm/CodeGen/FastISel.h ============================================================================== --- head/contrib/llvm/include/llvm/CodeGen/FastISel.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/CodeGen/FastISel.h Sun Jun 12 18:01:31 2011 (r223017) @@ -241,6 +241,15 @@ protected: unsigned Op0, bool Op0IsKill, unsigned Op1, bool Op1IsKill); + /// FastEmitInst_rrr - Emit a MachineInstr with three register operands + /// and a result register in the given register class. + /// + unsigned FastEmitInst_rrr(unsigned MachineInstOpcode, + const TargetRegisterClass *RC, + unsigned Op0, bool Op0IsKill, + unsigned Op1, bool Op1IsKill, + unsigned Op2, bool Op2IsKill); + /// FastEmitInst_ri - Emit a MachineInstr with a register operand, /// an immediate, and a result register in the given register class. /// @@ -301,7 +310,7 @@ protected: /// the CFG. void FastEmitBranch(MachineBasicBlock *MBB, DebugLoc DL); - unsigned UpdateValueMap(const Value* I, unsigned Reg); + void UpdateValueMap(const Value* I, unsigned Reg, unsigned NumRegs = 1); unsigned createResultReg(const TargetRegisterClass *RC); @@ -334,6 +343,8 @@ private: bool SelectCast(const User *I, unsigned Opcode); + bool SelectExtractValue(const User *I); + /// HandlePHINodesInSuccessorBlocks - Handle PHI nodes in successor blocks. /// Emit code to ensure constants are copied into registers when needed. /// Remember the virtual registers that need to be added to the Machine PHI Modified: head/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h ============================================================================== --- head/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h Sun Jun 12 18:01:31 2011 (r223017) @@ -107,11 +107,11 @@ namespace ISD { // and returns an outchain. EH_SJLJ_LONGJMP, - // OUTCHAIN = EH_SJLJ_DISPATCHSETUP(INCHAIN, context) + // OUTCHAIN = EH_SJLJ_DISPATCHSETUP(INCHAIN, setjmpval) // This corresponds to the eh.sjlj.dispatchsetup intrinsic. It takes an - // input chain and a pointer to the sjlj function context as inputs and - // returns an outchain. By default, this does nothing. Targets can lower - // this to unwind setup code if needed. + // input chain and the value returning from setjmp as inputs and returns an + // outchain. By default, this does nothing. Targets can lower this to unwind + // setup code if needed. EH_SJLJ_DISPATCHSETUP, // TargetConstant* - Like Constant*, but the DAG does not do any folding, Modified: head/contrib/llvm/include/llvm/CodeGen/LiveInterval.h ============================================================================== --- head/contrib/llvm/include/llvm/CodeGen/LiveInterval.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/CodeGen/LiveInterval.h Sun Jun 12 18:01:31 2011 (r223017) @@ -492,9 +492,10 @@ namespace llvm { /// Returns true if the live interval is zero length, i.e. no live ranges /// span instructions. It doesn't pay to spill such an interval. - bool isZeroLength() const { + bool isZeroLength(SlotIndexes *Indexes) const { for (const_iterator i = begin(), e = end(); i != e; ++i) - if (i->end.getPrevIndex() > i->start) + if (Indexes->getNextNonNullIndex(i->start).getBaseIndex() < + i->end.getBaseIndex()) return false; return true; } Modified: head/contrib/llvm/include/llvm/CodeGen/MachineInstr.h ============================================================================== --- head/contrib/llvm/include/llvm/CodeGen/MachineInstr.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/CodeGen/MachineInstr.h Sun Jun 12 18:01:31 2011 (r223017) @@ -229,6 +229,7 @@ public: enum MICheckType { CheckDefs, // Check all operands for equality + CheckKillDead, // Check all operands including kill / dead markers IgnoreDefs, // Ignore all definitions IgnoreVRegDefs // Ignore virtual register definitions }; Modified: head/contrib/llvm/include/llvm/CodeGen/MachineInstrBuilder.h ============================================================================== --- head/contrib/llvm/include/llvm/CodeGen/MachineInstrBuilder.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/CodeGen/MachineInstrBuilder.h Sun Jun 12 18:01:31 2011 (r223017) @@ -88,7 +88,7 @@ public: return *this; } - const MachineInstrBuilder &addFrameIndex(unsigned Idx) const { + const MachineInstrBuilder &addFrameIndex(int Idx) const { MI->addOperand(MachineOperand::CreateFI(Idx)); return *this; } Modified: head/contrib/llvm/include/llvm/CodeGen/MachineModuleInfo.h ============================================================================== --- head/contrib/llvm/include/llvm/CodeGen/MachineModuleInfo.h Sun Jun 12 15:46:57 2011 (r223016) +++ head/contrib/llvm/include/llvm/CodeGen/MachineModuleInfo.h Sun Jun 12 18:01:31 2011 (r223017) @@ -52,27 +52,13 @@ namespace llvm { class Constant; class GlobalVariable; class MDNode; +class MMIAddrLabelMap; class MachineBasicBlock; class MachineFunction; class Module; class PointerType; class StructType; -/// MachineModuleInfoImpl - This class can be derived from and used by targets -/// to hold private target-specific information for each Module. Objects of -/// type are accessed/created with MMI::getInfo and destroyed when the -/// MachineModuleInfo is destroyed. -class MachineModuleInfoImpl { -public: - typedef PointerIntPair StubValueTy; - virtual ~MachineModuleInfoImpl(); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 18:46:48 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CC042106566B; Sun, 12 Jun 2011 18:46:48 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BC8B18FC14; Sun, 12 Jun 2011 18:46:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CIkmO1036754; Sun, 12 Jun 2011 18:46:48 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CIkmBP036751; Sun, 12 Jun 2011 18:46:48 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201106121846.p5CIkmBP036751@svn.freebsd.org> From: Kirk McKusick Date: Sun, 12 Jun 2011 18:46:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223018 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 18:46:48 -0000 Author: mckusick Date: Sun Jun 12 18:46:48 2011 New Revision: 223018 URL: http://svn.freebsd.org/changeset/base/223018 Log: Disable the soft updates journaling after a filesystem is successfully downgraded to read-only. It will be restarted if the filesystem is upgraded back to read-write. Modified: head/sys/ufs/ffs/ffs_softdep.c head/sys/ufs/ffs/ffs_vfsops.c Modified: head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- head/sys/ufs/ffs/ffs_softdep.c Sun Jun 12 18:01:31 2011 (r223017) +++ head/sys/ufs/ffs/ffs_softdep.c Sun Jun 12 18:46:48 2011 (r223018) @@ -2386,8 +2386,15 @@ softdep_unmount(mp) struct mount *mp; { - if (mp->mnt_kern_flag & MNTK_SUJ) - journal_unmount(mp); + MNT_ILOCK(mp); + mp->mnt_flag &= ~MNT_SOFTDEP; + if ((mp->mnt_kern_flag & MNTK_SUJ) == 0) { + MNT_IUNLOCK(mp); + return; + } + mp->mnt_kern_flag &= ~MNTK_SUJ; + MNT_IUNLOCK(mp); + journal_unmount(mp); } struct jblocks { Modified: head/sys/ufs/ffs/ffs_vfsops.c ============================================================================== --- head/sys/ufs/ffs/ffs_vfsops.c Sun Jun 12 18:01:31 2011 (r223017) +++ head/sys/ufs/ffs/ffs_vfsops.c Sun Jun 12 18:46:48 2011 (r223018) @@ -269,6 +269,8 @@ ffs_mount(struct mount *mp) vfs_write_resume(mp); return (error); } + if (mp->mnt_flag & MNT_SOFTDEP) + softdep_unmount(mp); DROP_GIANT(); g_topology_lock(); g_access(ump->um_cp, 0, -1, 0); From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 18:52:40 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 47958106566B; Sun, 12 Jun 2011 18:52:40 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1F3018FC21; Sun, 12 Jun 2011 18:52:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CIqeav036967; Sun, 12 Jun 2011 18:52:40 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CIqdJR036964; Sun, 12 Jun 2011 18:52:40 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201106121852.p5CIqdJR036964@svn.freebsd.org> From: Alexander Motin Date: Sun, 12 Jun 2011 18:52:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223019 - head/sys/cam/ata X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 18:52:40 -0000 Author: mav Date: Sun Jun 12 18:52:39 2011 New Revision: 223019 URL: http://svn.freebsd.org/changeset/base/223019 Log: Do not report CFA devices as ATAPI, even though IDENTIFY data look alike. Modified: head/sys/cam/ata/ata_all.c head/sys/cam/ata/ata_xpt.c Modified: head/sys/cam/ata/ata_all.c ============================================================================== --- head/sys/cam/ata/ata_all.c Sun Jun 12 18:46:48 2011 (r223018) +++ head/sys/cam/ata/ata_all.c Sun Jun 12 18:52:39 2011 (r223019) @@ -270,6 +270,7 @@ ata_print_ident(struct ata_params *ident sizeof(revision)); printf("<%s %s> %s-%d", product, revision, + (ident_data->config == ATA_PROTO_CFA) ? "CFA" : (ident_data->config & ATA_PROTO_ATAPI) ? "ATAPI" : "ATA", ata_version(ident_data->version_major)); if (ident_data->satacapabilities && ident_data->satacapabilities != 0xffff) { Modified: head/sys/cam/ata/ata_xpt.c ============================================================================== --- head/sys/cam/ata/ata_xpt.c Sun Jun 12 18:46:48 2011 (r223018) +++ head/sys/cam/ata/ata_xpt.c Sun Jun 12 18:52:39 2011 (r223019) @@ -1583,12 +1583,14 @@ ata_device_transport(struct cam_path *pa cts.proto_specific.valid = 0; if (ident_buf) { if (path->device->transport == XPORT_ATA) { - cts.xport_specific.ata.atapi = + cts.xport_specific.ata.atapi = + (ident_buf->config == ATA_PROTO_CFA) ? 0 : ((ident_buf->config & ATA_PROTO_MASK) == ATA_PROTO_ATAPI_16) ? 16 : ((ident_buf->config & ATA_PROTO_MASK) == ATA_PROTO_ATAPI_12) ? 12 : 0; cts.xport_specific.ata.valid = CTS_ATA_VALID_ATAPI; } else { - cts.xport_specific.sata.atapi = + cts.xport_specific.sata.atapi = + (ident_buf->config == ATA_PROTO_CFA) ? 0 : ((ident_buf->config & ATA_PROTO_MASK) == ATA_PROTO_ATAPI_16) ? 16 : ((ident_buf->config & ATA_PROTO_MASK) == ATA_PROTO_ATAPI_12) ? 12 : 0; cts.xport_specific.sata.valid = CTS_SATA_VALID_ATAPI; @@ -1638,7 +1640,9 @@ ata_action(union ccb *start_ccb) uint16_t p = device->ident_data.config & ATA_PROTO_MASK; - maxlen = (p == ATA_PROTO_ATAPI_16) ? 16 : + maxlen = + (device->ident_data.config == ATA_PROTO_CFA) ? 0 : + (p == ATA_PROTO_ATAPI_16) ? 16 : (p == ATA_PROTO_ATAPI_12) ? 12 : 0; } if (start_ccb->csio.cdb_len > maxlen) { From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 19:09:38 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx2.freebsd.org (mx2.freebsd.org [IPv6:2001:4f8:fff6::35]) by hub.freebsd.org (Postfix) with ESMTP id 4E8641065672; Sun, 12 Jun 2011 19:09:38 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from [127.0.0.1] (hub.freebsd.org [IPv6:2001:4f8:fff6::36]) by mx2.freebsd.org (Postfix) with ESMTP id C81FD163465; Sun, 12 Jun 2011 19:09:34 +0000 (UTC) Message-ID: <4DF50EEF.8010708@FreeBSD.org> Date: Sun, 12 Jun 2011 12:09:35 -0700 From: Doug Barton Organization: http://www.FreeBSD.org/ User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Alexey Dokuchaev References: <201106110908.p5B98kkE066709@svn.freebsd.org> <4DF3B12C.8020505@FreeBSD.org> <9583277B-6EC0-4B7F-9640-2B128A96C6B8@bsdimp.com> <4DF3D633.5060506@FreeBSD.org> <20110612111601.GA62801@FreeBSD.org> In-Reply-To: <20110612111601.GA62801@FreeBSD.org> X-Enigmail-Version: 1.1.1 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, Robert Watson , Joel Dahl , svn-src-head@FreeBSD.org, Warner Losh Subject: Re: svn commit: r222980 - in head/sys: amd64/conf i386/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 19:09:38 -0000 On 6/12/2011 4:16 AM, Alexey Dokuchaev wrote: > On Sat, Jun 11, 2011 at 01:55:15PM -0700, Doug Barton wrote: >> I have 3 or 4 modules loaded via loader.conf at boot time. They take at >> least 2 seconds each. IMO loading everything via loader.conf would slow >> the boot so much as to be a non-starter. > > With my normal slim kernel with most of the modules loaded via loader.conf > (other few loaded later in runtime) I have this: > > $ kldstat | wc -l > 60 > > I do not observe noticeable difference compared to GENERIC kernel. Try the script I posted to -current and see how it goes for you. > Plus, users try to reboot their machines as rarely as possible, no? A) Arguing from anecdote B) I realize desktop is not a priority for us, but desktop users generally reboot much more frequently (usually daily for me). C) For those times that you do need to reboot a system, why add minutes to the boot without reason? I mentioned the problem, and proposed a solution for it ... I'm asking people to test the solution I proposed. Doug -- Nothin' ever doesn't change, but nothin' changes much. -- OK Go Breadth of IT experience, and depth of knowledge in the DNS. Yours for the right price. :) http://SupersetSolutions.com/ From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 19:27:06 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 007E0106564A; Sun, 12 Jun 2011 19:27:06 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E42C58FC1A; Sun, 12 Jun 2011 19:27:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CJR5rf038043; Sun, 12 Jun 2011 19:27:05 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CJR5Wi038037; Sun, 12 Jun 2011 19:27:05 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201106121927.p5CJR5Wi038037@svn.freebsd.org> From: Kirk McKusick Date: Sun, 12 Jun 2011 19:27:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223020 - in head/sys/ufs: ffs ufs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 19:27:06 -0000 Author: mckusick Date: Sun Jun 12 19:27:05 2011 New Revision: 223020 URL: http://svn.freebsd.org/changeset/base/223020 Log: Update to soft updates journaling to properly track freed blocks that get claimed by snapshots. Submitted by: Jeff Roberson Tested by: Peter Holm Modified: head/sys/ufs/ffs/ffs_alloc.c head/sys/ufs/ffs/ffs_extern.h head/sys/ufs/ffs/ffs_snapshot.c head/sys/ufs/ffs/ffs_softdep.c head/sys/ufs/ufs/ufs_vnops.c Modified: head/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- head/sys/ufs/ffs/ffs_alloc.c Sun Jun 12 18:52:39 2011 (r223019) +++ head/sys/ufs/ffs/ffs_alloc.c Sun Jun 12 19:27:05 2011 (r223020) @@ -2035,7 +2035,7 @@ ffs_blkfree(ump, fs, devvp, bno, size, i */ if (devvp->v_type != VREG && (devvp->v_vflag & VV_COPYONWRITE) && - ffs_snapblkfree(fs, devvp, bno, size, inum)) { + ffs_snapblkfree(fs, devvp, bno, size, inum, dephd)) { return; } if (!ump->um_candelete) { Modified: head/sys/ufs/ffs/ffs_extern.h ============================================================================== --- head/sys/ufs/ffs/ffs_extern.h Sun Jun 12 18:52:39 2011 (r223019) +++ head/sys/ufs/ffs/ffs_extern.h Sun Jun 12 19:27:05 2011 (r223020) @@ -80,12 +80,14 @@ int ffs_realloccg(struct inode *, ufs2_d ufs2_daddr_t, int, int, int, struct ucred *, struct buf **); int ffs_sbupdate(struct ufsmount *, int, int); void ffs_setblock(struct fs *, u_char *, ufs1_daddr_t); -int ffs_snapblkfree(struct fs *, struct vnode *, ufs2_daddr_t, long, ino_t); +int ffs_snapblkfree(struct fs *, struct vnode *, ufs2_daddr_t, long, ino_t, + struct workhead *); void ffs_snapremove(struct vnode *vp); int ffs_snapshot(struct mount *mp, char *snapfile); void ffs_snapshot_mount(struct mount *mp); void ffs_snapshot_unmount(struct mount *mp); void process_deferred_inactive(struct mount *mp); +void ffs_sync_snap(struct mount *, int); int ffs_syncvnode(struct vnode *vp, int waitfor); int ffs_truncate(struct vnode *, off_t, int, struct ucred *, struct thread *); int ffs_update(struct vnode *, int); @@ -149,6 +151,9 @@ int softdep_prealloc(struct vnode *, int int softdep_journal_lookup(struct mount *, struct vnode **); void softdep_journal_freeblocks(struct inode *, struct ucred *, off_t, int); void softdep_journal_fsync(struct inode *); +void softdep_buf_append(struct buf *, struct workhead *); +void softdep_inode_append(struct inode *, struct ucred *, struct workhead *); +void softdep_freework(struct workhead *); /* @@ -161,4 +166,14 @@ void softdep_journal_fsync(struct inode int ffs_rdonly(struct inode *); +TAILQ_HEAD(snaphead, inode); + +struct snapdata { + LIST_ENTRY(snapdata) sn_link; + struct snaphead sn_head; + daddr_t sn_listsize; + daddr_t *sn_blklist; + struct lock sn_lock; +}; + #endif /* !_UFS_FFS_EXTERN_H */ Modified: head/sys/ufs/ffs/ffs_snapshot.c ============================================================================== --- head/sys/ufs/ffs/ffs_snapshot.c Sun Jun 12 18:52:39 2011 (r223019) +++ head/sys/ufs/ffs/ffs_snapshot.c Sun Jun 12 19:27:05 2011 (r223020) @@ -81,12 +81,13 @@ ffs_snapshot(mp, snapfile) } int -ffs_snapblkfree(fs, devvp, bno, size, inum) +ffs_snapblkfree(fs, devvp, bno, size, inum, wkhd) struct fs *fs; struct vnode *devvp; ufs2_daddr_t bno; long size; ino_t inum; + struct workhead *wkhd; { return (EINVAL); } @@ -123,19 +124,16 @@ ffs_copyonwrite(devvp, bp) return (EINVAL); } +void +ffs_sync_snap(mp, waitfor) + struct mount *mp; + int waitfor; +{ +} + #else FEATURE(ffs_snapshot, "FFS snapshot support"); -TAILQ_HEAD(snaphead, inode); - -struct snapdata { - LIST_ENTRY(snapdata) sn_link; - struct snaphead sn_head; - daddr_t sn_listsize; - daddr_t *sn_blklist; - struct lock sn_lock; -}; - LIST_HEAD(, snapdata) snapfree; static struct mtx snapfree_lock; MTX_SYSINIT(ffs_snapfree, &snapfree_lock, "snapdata free list", MTX_DEF); @@ -1635,7 +1633,7 @@ ffs_snapremove(vp) DIP_SET(ip, i_db[blkno], 0); else if ((dblk == blkstofrags(fs, blkno) && ffs_snapblkfree(fs, ip->i_devvp, dblk, fs->fs_bsize, - ip->i_number))) { + ip->i_number, NULL))) { DIP_SET(ip, i_blocks, DIP(ip, i_blocks) - btodb(fs->fs_bsize)); DIP_SET(ip, i_db[blkno], 0); @@ -1660,7 +1658,7 @@ ffs_snapremove(vp) ((ufs1_daddr_t *)(ibp->b_data))[loc]= 0; else if ((dblk == blkstofrags(fs, blkno) && ffs_snapblkfree(fs, ip->i_devvp, dblk, - fs->fs_bsize, ip->i_number))) { + fs->fs_bsize, ip->i_number, NULL))) { ip->i_din1->di_blocks -= btodb(fs->fs_bsize); ((ufs1_daddr_t *)(ibp->b_data))[loc]= 0; @@ -1674,7 +1672,7 @@ ffs_snapremove(vp) ((ufs2_daddr_t *)(ibp->b_data))[loc] = 0; else if ((dblk == blkstofrags(fs, blkno) && ffs_snapblkfree(fs, ip->i_devvp, dblk, - fs->fs_bsize, ip->i_number))) { + fs->fs_bsize, ip->i_number, NULL))) { ip->i_din2->di_blocks -= btodb(fs->fs_bsize); ((ufs2_daddr_t *)(ibp->b_data))[loc] = 0; } @@ -1722,12 +1720,13 @@ ffs_snapremove(vp) * must always have been allocated from a BLK_NOCOPY location. */ int -ffs_snapblkfree(fs, devvp, bno, size, inum) +ffs_snapblkfree(fs, devvp, bno, size, inum, wkhd) struct fs *fs; struct vnode *devvp; ufs2_daddr_t bno; long size; ino_t inum; + struct workhead *wkhd; { struct buf *ibp, *cbp, *savedcbp = 0; struct thread *td = curthread; @@ -1825,6 +1824,17 @@ retry: "Grabonremove: snapino", ip->i_number, (intmax_t)lbn, inum); #endif + /* + * If journaling is tracking this write we must add + * the work to the inode or indirect being written. + */ + if (wkhd != NULL) { + if (lbn < NDADDR) + softdep_inode_append(ip, + curthread->td_ucred, wkhd); + else + softdep_buf_append(ibp, wkhd); + } if (lbn < NDADDR) { DIP_SET(ip, i_db[lbn], bno); } else if (ip->i_ump->um_fstype == UFS1) { @@ -1902,6 +1912,8 @@ retry: * not be freed. Although space will be lost, the snapshot * will stay consistent. */ + if (error != 0 && wkhd != NULL) + softdep_freework(wkhd); lockmgr(vp->v_vnlock, LK_RELEASE, NULL); return (error); } @@ -2400,6 +2412,42 @@ ffs_copyonwrite(devvp, bp) } /* + * sync snapshots to force freework records waiting on snapshots to claim + * blocks to free. + */ +void +ffs_sync_snap(mp, waitfor) + struct mount *mp; + int waitfor; +{ + struct snapdata *sn; + struct vnode *devvp; + struct vnode *vp; + struct inode *ip; + + devvp = VFSTOUFS(mp)->um_devvp; + if ((devvp->v_vflag & VV_COPYONWRITE) == 0) + return; + for (;;) { + VI_LOCK(devvp); + sn = devvp->v_rdev->si_snapdata; + if (sn == NULL) { + VI_UNLOCK(devvp); + return; + } + if (lockmgr(&sn->sn_lock, + LK_INTERLOCK | LK_EXCLUSIVE | LK_SLEEPFAIL, + VI_MTX(devvp)) == 0) + break; + } + TAILQ_FOREACH(ip, &sn->sn_head, i_nextsnap) { + vp = ITOV(ip); + ffs_syncvnode(vp, waitfor); + } + lockmgr(&sn->sn_lock, LK_RELEASE, NULL); +} + +/* * Read the specified block into the given buffer. * Much of this boiler-plate comes from bwrite(). */ Modified: head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- head/sys/ufs/ffs/ffs_softdep.c Sun Jun 12 18:52:39 2011 (r223019) +++ head/sys/ufs/ffs/ffs_softdep.c Sun Jun 12 19:27:05 2011 (r223020) @@ -584,6 +584,33 @@ softdep_get_depcounts(struct mount *mp, *softdepactiveaccp = 0; } +void +softdep_buf_append(bp, wkhd) + struct buf *bp; + struct workhead *wkhd; +{ + + panic("softdep_buf_appendwork called"); +} + +void +softdep_inode_append(ip, cred, wkhd) + struct inode *ip; + struct ucred *cred; + struct workhead *wkhd; +{ + + panic("softdep_inode_appendwork called"); +} + +void +softdep_freework(wkhd) + struct workhead *wkhd; +{ + + panic("softdep_freework called"); +} + #else FEATURE(softupdates, "FFS soft-updates support"); @@ -867,7 +894,7 @@ static void freework_enqueue(struct free static int handle_workitem_freeblocks(struct freeblks *, int); static int handle_complete_freeblocks(struct freeblks *, int); static void handle_workitem_indirblk(struct freework *); -static void handle_written_freework(struct freework *, int); +static void handle_written_freework(struct freework *); static void merge_inode_lists(struct allocdirectlst *,struct allocdirectlst *); static struct worklist *jnewblk_merge(struct worklist *, struct worklist *, struct workhead *); @@ -1632,6 +1659,7 @@ process_truncates(vp) if (cgwait) { FREE_LOCK(&lk); sync_cgs(mp, MNT_WAIT); + ffs_sync_snap(mp, MNT_WAIT); ACQUIRE_LOCK(&lk); continue; } @@ -5922,7 +5950,7 @@ complete_trunc_indir(freework) */ if (bp == NULL) { if (LIST_EMPTY(&indirdep->ir_freeblks->fb_jblkdephd)) - handle_written_freework(freework, 0); + handle_written_freework(freework); else WORKLIST_INSERT(&indirdep->ir_freeblks->fb_freeworkhd, &freework->fw_list); @@ -5974,7 +6002,7 @@ out: */ if (totblks > datablocks) return (0); - return (totblks - datablocks); + return (datablocks - totblks); } /* @@ -7228,6 +7256,7 @@ freework_freeblock(freework) cancel_jnewblk(jnewblk, &wkhd); needj = 0; } else if (needj) { + freework->fw_state |= DELAYEDFREE; freeblks->fb_cgwait++; WORKLIST_INSERT(&wkhd, &freework->fw_list); } @@ -7241,7 +7270,7 @@ freework_freeblock(freework) * made it to disk. We can immediately free the freeblk. */ if (needj == 0) - handle_written_freework(freework, 0); + handle_written_freework(freework); } /* @@ -7256,7 +7285,8 @@ freework_enqueue(freework) struct freeblks *freeblks; freeblks = freework->fw_freeblks; - WORKLIST_INSERT(&freeblks->fb_freeworkhd, &freework->fw_list); + if ((freework->fw_state & INPROGRESS) == 0) + WORKLIST_INSERT(&freeblks->fb_freeworkhd, &freework->fw_list); if ((freeblks->fb_state & (ONWORKLIST | INPROGRESS | ALLCOMPLETE)) == ALLCOMPLETE && LIST_EMPTY(&freeblks->fb_jblkdephd)) @@ -7282,13 +7312,14 @@ handle_workitem_indirblk(freework) ump = VFSTOUFS(freeblks->fb_list.wk_mp); fs = ump->um_fs; if (freework->fw_state & DEPCOMPLETE) { - handle_written_freework(freework, 0); + handle_written_freework(freework); return; } if (freework->fw_off == NINDIR(fs)) { freework_freeblock(freework); return; } + freework->fw_state |= INPROGRESS; FREE_LOCK(&lk); indir_trunc(freework, fsbtodb(fs, freework->fw_blkno), freework->fw_lbn); @@ -7301,16 +7332,16 @@ handle_workitem_indirblk(freework) * the freeblks is added back to the worklist if there is more work to do. */ static void -handle_written_freework(freework, cgwrite) +handle_written_freework(freework) struct freework *freework; - int cgwrite; { struct freeblks *freeblks; struct freework *parent; freeblks = freework->fw_freeblks; parent = freework->fw_parent; - freeblks->fb_cgwait -= cgwrite; + if (freework->fw_state & DELAYEDFREE) + freeblks->fb_cgwait--; freework->fw_state |= COMPLETE; if ((freework->fw_state & ALLCOMPLETE) == ALLCOMPLETE) WORKITEM_FREE(freework, D_FREEWORK); @@ -7552,6 +7583,8 @@ indir_trunc(freework, dbn, lbn) return; } ACQUIRE_LOCK(&lk); + /* Protects against a race with complete_trunc_indir(). */ + freework->fw_state &= ~INPROGRESS; /* * If we have an indirdep we need to enforce the truncation order * and discard it when it is complete. @@ -7675,7 +7708,7 @@ indir_trunc(freework, dbn, lbn) if (freework->fw_blkno == dbn) { freework->fw_state |= ALLCOMPLETE; ACQUIRE_LOCK(&lk); - handle_written_freework(freework, 0); + handle_written_freework(freework); FREE_LOCK(&lk); } return; @@ -10368,8 +10401,7 @@ softdep_disk_write_complete(bp) continue; case D_FREEWORK: - /* Freework on an indirect block, not bmsafemap. */ - handle_written_freework(WK_FREEWORK(wk), 0); + handle_written_freework(WK_FREEWORK(wk)); break; case D_JSEGDEP: @@ -10540,7 +10572,7 @@ handle_jwork(wkhd) free_freedep(WK_FREEDEP(wk)); continue; case D_FREEWORK: - handle_written_freework(WK_FREEWORK(wk), 1); + handle_written_freework(WK_FREEWORK(wk)); continue; default: panic("handle_jwork: Unknown type %s\n", @@ -12738,6 +12770,53 @@ clear_inodedeps(td) } } +void +softdep_buf_append(bp, wkhd) + struct buf *bp; + struct workhead *wkhd; +{ + struct worklist *wk; + + ACQUIRE_LOCK(&lk); + while ((wk = LIST_FIRST(wkhd)) != NULL) { + WORKLIST_REMOVE(wk); + WORKLIST_INSERT(&bp->b_dep, wk); + } + FREE_LOCK(&lk); + +} + +void +softdep_inode_append(ip, cred, wkhd) + struct inode *ip; + struct ucred *cred; + struct workhead *wkhd; +{ + struct buf *bp; + struct fs *fs; + int error; + + fs = ip->i_fs; + error = bread(ip->i_devvp, fsbtodb(fs, ino_to_fsba(fs, ip->i_number)), + (int)fs->fs_bsize, cred, &bp); + if (error) { + softdep_freework(wkhd); + return; + } + softdep_buf_append(bp, wkhd); + bqrelse(bp); +} + +void +softdep_freework(wkhd) + struct workhead *wkhd; +{ + + ACQUIRE_LOCK(&lk); + handle_jwork(wkhd); + FREE_LOCK(&lk); +} + /* * Function to determine if the buffer has outstanding dependencies * that will cause a roll-back if the buffer is written. If wantcount Modified: head/sys/ufs/ufs/ufs_vnops.c ============================================================================== --- head/sys/ufs/ufs/ufs_vnops.c Sun Jun 12 18:52:39 2011 (r223019) +++ head/sys/ufs/ufs/ufs_vnops.c Sun Jun 12 19:27:05 2011 (r223020) @@ -1838,6 +1838,8 @@ ufs_mkdir(ap) #ifdef QUOTA if ((error = getinoquota(ip)) || (error = chkiq(ip, 1, ucp, 0))) { + if (DOINGSOFTDEP(tvp)) + softdep_revert_link(dp, ip); UFS_VFREE(tvp, ip->i_number, dmode); vput(tvp); return (error); @@ -1850,6 +1852,8 @@ ufs_mkdir(ap) #ifdef QUOTA if ((error = getinoquota(ip)) || (error = chkiq(ip, 1, cnp->cn_cred, 0))) { + if (DOINGSOFTDEP(tvp)) + softdep_revert_link(dp, ip); UFS_VFREE(tvp, ip->i_number, dmode); vput(tvp); return (error); @@ -2608,6 +2612,8 @@ ufs_makeinode(mode, dvp, vpp, cnp) #ifdef QUOTA if ((error = getinoquota(ip)) || (error = chkiq(ip, 1, ucp, 0))) { + if (DOINGSOFTDEP(tvp)) + softdep_revert_link(pdir, ip); UFS_VFREE(tvp, ip->i_number, mode); vput(tvp); return (error); @@ -2620,6 +2626,8 @@ ufs_makeinode(mode, dvp, vpp, cnp) #ifdef QUOTA if ((error = getinoquota(ip)) || (error = chkiq(ip, 1, cnp->cn_cred, 0))) { + if (DOINGSOFTDEP(tvp)) + softdep_revert_link(pdir, ip); UFS_VFREE(tvp, ip->i_number, mode); vput(tvp); return (error); From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 19:27:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EE47B106566B; Sun, 12 Jun 2011 19:27:09 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id A48698FC14; Sun, 12 Jun 2011 19:27:09 +0000 (UTC) Received: from 63.imp.bsdimp.com (63.imp.bsdimp.com [10.0.0.63]) (authenticated bits=0) by harmony.bsdimp.com (8.14.4/8.14.3) with ESMTP id p5CJLtIk065853 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES128-SHA bits=128 verify=NO); Sun, 12 Jun 2011 13:21:55 -0600 (MDT) (envelope-from imp@bsdimp.com) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Warner Losh In-Reply-To: <20110612112150.GB62801@FreeBSD.org> Date: Sun, 12 Jun 2011 13:21:11 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: <6BB2BD4D-824A-4EDA-8B9D-A774AC7DCDA2@bsdimp.com> References: <201106110908.p5B98kkE066709@svn.freebsd.org> <75DAEF7E-F43E-427E-8AFA-586E0B56D450@bsdimp.com> <20110611184549.GB3284@garage.freebsd.pl> <20110612112150.GB62801@FreeBSD.org> To: Alexey Dokuchaev X-Mailer: Apple Mail (2.1084) X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (harmony.bsdimp.com [10.0.0.6]); Sun, 12 Jun 2011 13:21:55 -0600 (MDT) Cc: Adrian Chadd , src-committers@freebsd.org, Pawel Jakub Dawidek , svn-src-all@freebsd.org, Robert Watson , Joel Dahl , svn-src-head@freebsd.org Subject: Re: svn commit: r222980 - in head/sys: amd64/conf i386/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 19:27:10 -0000 On Jun 12, 2011, at 5:21 AM, Alexey Dokuchaev wrote: > On Sat, Jun 11, 2011 at 08:51:32PM +0200, Pawel Jakub Dawidek wrote: >> On Sat, Jun 11, 2011 at 10:44:14AM -0600, Warner Losh wrote: >>> I think our best bet for 9 is to strip GENERIC to the bone and have = a >>> 'generic.conf' if you will that loads everything we compile in = today. >>=20 >> I think trasz@ tried that and there is a problem. Loading modules on >> boot is very slow. If you try to load everything that GENERIC has as >> modules the boot will take forever. >=20 > Perhaps then we need to come up with something more intelligent, i.e. = do not > load everything trying to get maximum coverage of users' hardware, but > load only required bits based on what we see on PCI bus (roughly = speaking). Yea. Good luck with that. I had that idea like 4 or 5 years ago. = However, there's a lot of grunt work to do on all the drivers in the = system to get them into good enough shape to export their PCI ID lists = in a uniform way so we could automatically do the right thing. This isn't a 9.x item, but it could easily be a 10.x item. Warner= From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 20:43:20 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B9128106566C; Sun, 12 Jun 2011 20:43:20 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (cl-327.ede-01.nl.sixxs.net [IPv6:2001:7b8:2ff:146::2]) by mx1.freebsd.org (Postfix) with ESMTP id 7CA9D8FC14; Sun, 12 Jun 2011 20:43:20 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7:0:192b:ad96:b84:94cd] (unknown [IPv6:2001:7b8:3a7:0:192b:ad96:b84:94cd]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 657115C59; Sun, 12 Jun 2011 22:43:19 +0200 (CEST) Message-ID: <4DF524E5.6060603@FreeBSD.org> Date: Sun, 12 Jun 2011 22:43:17 +0200 From: Dimitry Andric Organization: The FreeBSD Project User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.18pre) Gecko/20110527 Lanikai/3.1.11pre MIME-Version: 1.0 To: Kirk McKusick References: <201106121927.p5CJR5Wi038037@svn.freebsd.org> In-Reply-To: <201106121927.p5CJR5Wi038037@svn.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223020 - in head/sys/ufs: ffs ufs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 20:43:20 -0000 On 2011-06-12 21:27, Kirk McKusick wrote: > Author: mckusick > Date: Sun Jun 12 19:27:05 2011 > New Revision: 223020 > URL: http://svn.freebsd.org/changeset/base/223020 ... > Modified: head/sys/ufs/ffs/ffs_extern.h > ============================================================================== > --- head/sys/ufs/ffs/ffs_extern.h Sun Jun 12 18:52:39 2011 (r223019) > +++ head/sys/ufs/ffs/ffs_extern.h Sun Jun 12 19:27:05 2011 (r223020) ... > @@ -161,4 +166,14 @@ void softdep_journal_fsync(struct inode > > int ffs_rdonly(struct inode *); > > +TAILQ_HEAD(snaphead, inode); > + > +struct snapdata { > + LIST_ENTRY(snapdata) sn_link; > + struct snaphead sn_head; > + daddr_t sn_listsize; > + daddr_t *sn_blklist; > + struct lock sn_lock; > +}; > + > #endif /* !_UFS_FFS_EXTERN_H */ This addition breaks world compilation in usr.sbin/makefs, apparently because the TAILQ_HEAD macro isn't defined at that point: ... cc -O2 -pipe -I/usr/src/usr.sbin/makefs -I/usr/src/usr.sbin/makefs/../../sys/fs/cd9660/ -I/usr/src/usr.sbin/makefs/../../sys/ufs/ffs -I/usr/src/usr.sbin/makefs/compat -DHAVE_STRUCT_STAT_ST_FLAGS=1 -DHAVE_STRUCT_STAT_ST_GEN=1 -I/usr/src/usr.sbin/makefs/../mtree -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/usr.sbin/makefs/ffs/ffs_bswap.c cc1: warnings being treated as errors In file included from /usr/src/usr.sbin/makefs/ffs/ffs_bswap.c:51: /usr/obj/usr/src/tmp/usr/include/ufs/ffs/ffs_extern.h:169: warning: data definition has no type or storage class /usr/obj/usr/src/tmp/usr/include/ufs/ffs/ffs_extern.h:169: warning: parameter names (without types) in function declaration /usr/obj/usr/src/tmp/usr/include/ufs/ffs/ffs_extern.h:172: error: expected specifier-qualifier-list before 'LIST_ENTRY' *** Error code 1 Stop in /usr/src/usr.sbin/makefs. From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 21:40:07 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9BEBA106564A; Sun, 12 Jun 2011 21:40:07 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from mx1.sbone.de (mx1.sbone.de [IPv6:2a01:4f8:130:3ffc::401:25]) by mx1.freebsd.org (Postfix) with ESMTP id 440E28FC0A; Sun, 12 Jun 2011 21:40:07 +0000 (UTC) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:31::2013:587]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.sbone.de (Postfix) with ESMTPS id 33A0725D3810; Sun, 12 Jun 2011 21:40:05 +0000 (UTC) Received: from content-filter.sbone.de (content-filter.sbone.de [IPv6:fde9:577b:c1a9:31::2013:2742]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPS id 02ACE15A1841; Sun, 12 Jun 2011 21:40:04 +0000 (UTC) X-Virus-Scanned: amavisd-new at sbone.de Received: from mail.sbone.de ([IPv6:fde9:577b:c1a9:31::2013:587]) by content-filter.sbone.de (content-filter.sbone.de [fde9:577b:c1a9:31::2013:2742]) (amavisd-new, port 10024) with ESMTP id zQjhDw7FHhdw; Sun, 12 Jun 2011 21:40:03 +0000 (UTC) Received: by mail.sbone.de (Postfix, from userid 66) id BE22515A187D; Sun, 12 Jun 2011 21:40:03 +0000 (UTC) Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net [10.111.66.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.int.zabbadoz.net (Postfix) with ESMTP id 010CD444936; Sun, 12 Jun 2011 21:38:42 +0000 (UTC) Date: Sun, 12 Jun 2011 21:38:42 +0000 (UTC) From: "Bjoern A. Zeeb" X-X-Sender: bz@maildrop.int.zabbadoz.net To: Daniel Eischen In-Reply-To: <200705131412.l4DECf2N068712@repoman.freebsd.org> Message-ID: <20110612213330.D10590@maildrop.int.zabbadoz.net> References: <200705131412.l4DECf2N068712@repoman.freebsd.org> X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@FreeBSD.org Subject: Re: cvs commit: src Makefile.inc1 src/lib/libc Makefile src/lib/libc_r Makefile src/lib/libpthread Makefile pthread.map src/lib/libpthread/thread thr_private.h src/lib/librt Makefile src/lib/libthr Makefile pthread.map src/lib/libthread_db Makefile ... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 21:40:07 -0000 On Sun, 13 May 2007, Daniel Eischen wrote: > deischen 2007-05-13 14:12:41 UTC > > FreeBSD src repository > > Modified files: > . Makefile.inc1 > lib/libc Makefile > lib/libc_r Makefile > lib/libpthread Makefile pthread.map > lib/libpthread/thread thr_private.h > lib/librt Makefile > lib/libthr Makefile pthread.map > lib/libthread_db Makefile > lib/msun Makefile > libexec/rtld-elf Makefile > share/mk bsd.lib.mk bsd.libnames.mk bsd.own.mk > bsd.symver.mk > Log: > Enable symbol versioning by default. Use WITHOUT_SYMVER to disable it. > Warning, after symbol versioning is enabled, going back is not easy > (use WITHOUT_SYMVER at your own risk). > > Change the default thread library to libthr. > > There most likely still needs to be a version bump for at least the > thread libraries. If necessary, this will happen later. http://svnweb.freebsd.org/base?view=revision&revision=169524 I figured WITHOUT_SYMVER= hs been useless since 201001. I am no longer able to do build worlds with WITHOUT_SYMVER= set in src.conf on a system with symbol versioning. I'd love someone to fix that and allow us to build libraries without all the historic stuff in them. If we cannot get it back working our libraries will grow bigger and bigger forever. If one is building images for clean-state systems that will never run anything older than the current CURRENT build, there is no need for the extra size. Contrary to what people think, memory and direct attached storage can still be expensive in some environments. Anyone who understands the system can come up with patches to fix this? /bz -- Bjoern A. Zeeb You have to have visions! Stop bit received. Insert coin for new address family. From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 22:19:32 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0E1D0106566C; Sun, 12 Jun 2011 22:19:32 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id B67A78FC0C; Sun, 12 Jun 2011 22:19:31 +0000 (UTC) Received: from 63.imp.bsdimp.com (63.imp.bsdimp.com [10.0.0.63]) (authenticated bits=0) by harmony.bsdimp.com (8.14.4/8.14.3) with ESMTP id p5CMG5Su067245 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES128-SHA bits=128 verify=NO); Sun, 12 Jun 2011 16:16:08 -0600 (MDT) (envelope-from imp@bsdimp.com) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Warner Losh In-Reply-To: <94A51677-0181-471A-B4D6-DC596C7BCBFD@gsoft.com.au> Date: Sun, 12 Jun 2011 16:16:03 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: <5506A922-E3FF-477D-AB12-4B47C4D6CE04@bsdimp.com> References: <201106110908.p5B98kkE066709@svn.freebsd.org> <75DAEF7E-F43E-427E-8AFA-586E0B56D450@bsdimp.com> <20110611184549.GB3284@garage.freebsd.pl> <20110612112150.GB62801@FreeBSD.org> <94A51677-0181-471A-B4D6-DC596C7BCBFD@gsoft.com.au> To: "Daniel O'Connor" X-Mailer: Apple Mail (2.1084) X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (harmony.bsdimp.com [10.0.0.6]); Sun, 12 Jun 2011 16:16:08 -0600 (MDT) Cc: Alexey Dokuchaev , src-committers@freebsd.org, Pawel Jakub Dawidek , svn-src-all@freebsd.org, Adrian Chadd , Robert Watson , Joel Dahl , svn-src-head@freebsd.org Subject: Re: svn commit: r222980 - in head/sys: amd64/conf i386/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 22:19:32 -0000 On Jun 12, 2011, at 8:46 AM, Daniel O'Connor wrote: > On 12/06/2011, at 20:51, Alexey Dokuchaev wrote: >>> I think trasz@ tried that and there is a problem. Loading modules on >>> boot is very slow. If you try to load everything that GENERIC has as >>> modules the boot will take forever. >>=20 >> Perhaps then we need to come up with something more intelligent, i.e. = do not >> load everything trying to get maximum coverage of users' hardware, = but >> load only required bits based on what we see on PCI bus (roughly = speaking). >=20 > Now the tricky part is extracting supported device IDs from drivers in = an automatic fashion :) >=20 > I imagine some symbol magic could be done for the general case so a = tool could extract the IDs & the bus type (so it could work for PCI & = USB which covers about 99.9% of the hardware in question). >=20 > ISTR there a few modules which call some blob to determine if the = module is supported but I think it's quite rare (the 80/20 rule works = for me here :) I've looked into this extensively. usb comes the closest right now, = since nearly all of its drivers use the right interface to match driver = to device. There is a standard structure people use. However, even it = is impossible to extract this data in a reliable automated fashion. = Ideally, these tables would move to their own section which could then = be extracted by a tool to see when to load it. This section would also = need some additional metadata in it so we know how to interpret the = section. The situation with the PCI bus is much less uniform. While many drivers = have tables, these tables are all ad-hoc. There's no standard structure = so everybody invents their own. In addition to annotating the tables, = you'd have to regularize them all across all pci drivers. Doing this = for 100+ drivers is a bit tedious. Also, there are at least two cases = where we have to load two drivers to be sure that one of them attaches = because there's matching done outside of the normal plug and play = identifiers (eg vendor/device/function/subvendor/subdevice) in their = probe routines. PC Card has also had the standard structure and interface for many = years. When I tried to move this to PCI many years ago, I encountered a = lot of resistance that didn't make sense to me at the time (so I can't = do it justice now). This should tell you how long the problem has = languished. It was the primary motivator behind writing devd, but the = pci resistance lead me to put aside the problem for a while. I'll be = happy to pick it back up, especially if I can get some help going = through all the drivers and tagging things appropriately. Warner= From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 23:06:05 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 39F37106564A; Sun, 12 Jun 2011 23:06:05 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2A7A78FC13; Sun, 12 Jun 2011 23:06:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CN65DT045065; Sun, 12 Jun 2011 23:06:05 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CN64s2045057; Sun, 12 Jun 2011 23:06:04 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106122306.p5CN64s2045057@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 12 Jun 2011 23:06:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223024 - head/bin/sh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 23:06:05 -0000 Author: jilles Date: Sun Jun 12 23:06:04 2011 New Revision: 223024 URL: http://svn.freebsd.org/changeset/base/223024 Log: sh: Save/restore changed variables in optimized command substitution. In optimized command substitution, save and restore any variables changed by expansions (${var=value} and $((var=assigned))), instead of trying to determine if an expansion may cause such changes. If $! is referenced in optimized command substitution, do not cause jobs to be remembered longer. This fixes $(jobs $!) again, simplifies the man page and shortens the code. Modified: head/bin/sh/eval.c head/bin/sh/expand.c head/bin/sh/expand.h head/bin/sh/jobs.c head/bin/sh/sh.1 head/bin/sh/var.c head/bin/sh/var.h Modified: head/bin/sh/eval.c ============================================================================== --- head/bin/sh/eval.c Sun Jun 12 22:47:04 2011 (r223023) +++ head/bin/sh/eval.c Sun Jun 12 23:06:04 2011 (r223024) @@ -571,14 +571,8 @@ evalpipe(union node *n) static int is_valid_fast_cmdsubst(union node *n) { - union node *argp; - if (n->type != NCMD) - return 0; - for (argp = n->ncmd.args ; argp ; argp = argp->narg.next) - if (expandhassideeffects(argp->narg.text)) - return 0; - return 1; + return (n->type == NCMD); } /* @@ -596,6 +590,7 @@ evalbackcmd(union node *n, struct backcm struct stackmark smark; /* unnecessary */ struct jmploc jmploc; struct jmploc *savehandler; + struct localvar *savelocalvars; setstackmark(&smark); result->fd = -1; @@ -608,12 +603,18 @@ evalbackcmd(union node *n, struct backcm } if (is_valid_fast_cmdsubst(n)) { exitstatus = oexitstatus; + savelocalvars = localvars; + localvars = NULL; + forcelocal++; savehandler = handler; if (setjmp(jmploc.loc)) { if (exception == EXERROR || exception == EXEXEC) exitstatus = 2; else if (exception != 0) { handler = savehandler; + forcelocal--; + poplocalvars(); + localvars = savelocalvars; longjmp(handler->loc, 1); } } else { @@ -621,6 +622,9 @@ evalbackcmd(union node *n, struct backcm evalcommand(n, EV_BACKCMD, result); } handler = savehandler; + forcelocal--; + poplocalvars(); + localvars = savelocalvars; } else { exitstatus = 0; if (pipe(pip) < 0) Modified: head/bin/sh/expand.c ============================================================================== --- head/bin/sh/expand.c Sun Jun 12 22:47:04 2011 (r223023) +++ head/bin/sh/expand.c Sun Jun 12 23:06:04 2011 (r223024) @@ -1621,78 +1621,6 @@ cvtnum(int num, char *buf) } /* - * Check statically if expanding a string may have side effects. - */ -int -expandhassideeffects(const char *p) -{ - int c; - int arinest; - - arinest = 0; - while ((c = *p++) != '\0') { - switch (c) { - case CTLESC: - p++; - break; - case CTLVAR: - c = *p++; - /* Expanding $! sets the job to remembered. */ - if (*p == '!') - return 1; - if ((c & VSTYPE) == VSASSIGN) - return 1; - /* - * If we are in arithmetic, the parameter may contain - * '=' which may cause side effects. Exceptions are - * the length of a parameter and $$, $# and $? which - * are always numeric. - */ - if ((c & VSTYPE) == VSLENGTH) { - while (*p != '=') - p++; - p++; - break; - } - if ((*p == '$' || *p == '#' || *p == '?') && - p[1] == '=') { - p += 2; - break; - } - if (arinest > 0) - return 1; - break; - case CTLBACKQ: - case CTLBACKQ | CTLQUOTE: - if (arinest > 0) - return 1; - break; - case CTLARI: - arinest++; - break; - case CTLENDARI: - arinest--; - break; - case '=': - if (*p == '=') { - /* Allow '==' operator. */ - p++; - continue; - } - if (arinest > 0) - return 1; - break; - case '!': case '<': case '>': - /* Allow '!=', '<=', '>=' operators. */ - if (*p == '=') - p++; - break; - } - } - return 0; -} - -/* * Do most of the work for wordexp(3). */ Modified: head/bin/sh/expand.h ============================================================================== --- head/bin/sh/expand.h Sun Jun 12 22:47:04 2011 (r223023) +++ head/bin/sh/expand.h Sun Jun 12 23:06:04 2011 (r223024) @@ -63,5 +63,4 @@ void expari(int); int patmatch(const char *, const char *, int); void rmescapes(char *); int casematch(union node *, const char *); -int expandhassideeffects(const char *); int wordexpcmd(int, char **); Modified: head/bin/sh/jobs.c ============================================================================== --- head/bin/sh/jobs.c Sun Jun 12 22:47:04 2011 (r223023) +++ head/bin/sh/jobs.c Sun Jun 12 23:06:04 2011 (r223024) @@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$"); #include "memalloc.h" #include "error.h" #include "mystring.h" +#include "var.h" static struct job *jobtab; /* array of jobs */ @@ -798,6 +799,7 @@ forkshell(struct job *jp, union node *n, handler = &main_handler; closescript(); INTON; + forcelocal = 0; clear_traps(); #if JOBS jobctl = 0; /* do job control only in root shell */ @@ -1121,7 +1123,7 @@ backgndpidset(void) pid_t backgndpidval(void) { - if (bgjob != NULL) + if (bgjob != NULL && !forcelocal) bgjob->remembered = 1; return backgndpid; } Modified: head/bin/sh/sh.1 ============================================================================== --- head/bin/sh/sh.1 Sun Jun 12 22:47:04 2011 (r223023) +++ head/bin/sh/sh.1 Sun Jun 12 23:06:04 2011 (r223024) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd June 10, 2011 +.Dd June 12, 2011 .Dt SH 1 .Os .Sh NAME @@ -1536,10 +1536,7 @@ except that the built-in commands and .Ic trap return information about the main shell environment -if they are the only command in a command substitution -and the substitutions in the command cannot cause side effects -(such as from assigning values to variables or referencing -.Li $! ). +if they are the only command in a command substitution. .Ss Arithmetic Expansion Arithmetic expansion provides a mechanism for evaluating an arithmetic expression and substituting its value. Modified: head/bin/sh/var.c ============================================================================== --- head/bin/sh/var.c Sun Jun 12 22:47:04 2011 (r223023) +++ head/bin/sh/var.c Sun Jun 12 23:06:04 2011 (r223024) @@ -94,6 +94,8 @@ struct var vps4; struct var vvers; static struct var voptind; +int forcelocal; + static const struct varinit varinit[] = { #ifndef NO_HISTORY { &vhistsize, VUNSET, "HISTSIZE=", @@ -325,6 +327,8 @@ setvareq(char *s, int flags) if (aflag) flags |= VEXPORT; + if (forcelocal && !(flags & (VNOSET | VNOLOCAL))) + mklocal(s); vp = find_var(s, &vpp, &nlen); if (vp != NULL) { if (vp->flags & VREADONLY) @@ -740,9 +744,9 @@ mklocal(char *name) vp = find_var(name, &vpp, NULL); if (vp == NULL) { if (strchr(name, '=')) - setvareq(savestr(name), VSTRFIXED); + setvareq(savestr(name), VSTRFIXED | VNOLOCAL); else - setvar(name, NULL, VSTRFIXED); + setvar(name, NULL, VSTRFIXED | VNOLOCAL); vp = *vpp; /* the new variable */ lvp->text = NULL; lvp->flags = VUNSET; @@ -751,7 +755,7 @@ mklocal(char *name) lvp->flags = vp->flags; vp->flags |= VSTRFIXED|VTEXTFIXED; if (name[vp->name_len] == '=') - setvareq(savestr(name), 0); + setvareq(savestr(name), VNOLOCAL); } } lvp->vp = vp; Modified: head/bin/sh/var.h ============================================================================== --- head/bin/sh/var.h Sun Jun 12 22:47:04 2011 (r223023) +++ head/bin/sh/var.h Sun Jun 12 23:06:04 2011 (r223024) @@ -46,6 +46,7 @@ #define VUNSET 0x20 /* the variable is not set */ #define VNOFUNC 0x40 /* don't call the callback function */ #define VNOSET 0x80 /* do not set variable - just readonly test */ +#define VNOLOCAL 0x100 /* ignore forcelocal */ struct var { @@ -68,6 +69,7 @@ struct localvar { struct localvar *localvars; +extern int forcelocal; extern struct var vifs; extern struct var vmail; From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 23:09:01 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 59A3E1065673; Sun, 12 Jun 2011 23:09:01 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4B0748FC0C; Sun, 12 Jun 2011 23:09:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CN91sQ045183; Sun, 12 Jun 2011 23:09:01 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CN91jN045181; Sun, 12 Jun 2011 23:09:01 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201106122309.p5CN91jN045181@svn.freebsd.org> From: Dimitry Andric Date: Sun, 12 Jun 2011 23:09:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223025 - head/usr.sbin/makefs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 23:09:01 -0000 Author: dim Date: Sun Jun 12 23:09:00 2011 New Revision: 223025 URL: http://svn.freebsd.org/changeset/base/223025 Log: Unbreak usr.sbin/makefs after r223020. Pointy hat to: mckusick Modified: head/usr.sbin/makefs/ffs/ffs_bswap.c Modified: head/usr.sbin/makefs/ffs/ffs_bswap.c ============================================================================== --- head/usr.sbin/makefs/ffs/ffs_bswap.c Sun Jun 12 23:06:04 2011 (r223024) +++ head/usr.sbin/makefs/ffs/ffs_bswap.c Sun Jun 12 23:09:00 2011 (r223025) @@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$"); #include +#include #if defined(_KERNEL) #include #endif From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 23:33:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E7D9F106566C; Sun, 12 Jun 2011 23:33:08 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D90808FC13; Sun, 12 Jun 2011 23:33:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5CNX8Zm045936; Sun, 12 Jun 2011 23:33:08 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5CNX8Nd045934; Sun, 12 Jun 2011 23:33:08 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201106122333.p5CNX8Nd045934@svn.freebsd.org> From: Xin LI Date: Sun, 12 Jun 2011 23:33:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223026 - head/sys/dev/safe X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 23:33:09 -0000 Author: delphij Date: Sun Jun 12 23:33:08 2011 New Revision: 223026 URL: http://svn.freebsd.org/changeset/base/223026 Log: Use swap32() right. Submitted by: gcopper MFC after: 2 weeks Modified: head/sys/dev/safe/safe.c Modified: head/sys/dev/safe/safe.c ============================================================================== --- head/sys/dev/safe/safe.c Sun Jun 12 23:09:00 2011 (r223025) +++ head/sys/dev/safe/safe.c Sun Jun 12 23:33:08 2011 (r223026) @@ -1580,9 +1580,12 @@ safe_callback(struct safe_softc *sc, str * SHA-1 ICV's are byte-swapped; fix 'em up * before copy them to their destination. */ - bswap32(re->re_sastate.sa_saved_indigest[0]); - bswap32(re->re_sastate.sa_saved_indigest[1]); - bswap32(re->re_sastate.sa_saved_indigest[2]); + re->re_sastate.sa_saved_indigest[0] = + bswap32(re->re_sastate.sa_saved_indigest[0]); + re->re_sastate.sa_saved_indigest[1] = + bswap32(re->re_sastate.sa_saved_indigest[1]); + re->re_sastate.sa_saved_indigest[2] = + bswap32(re->re_sastate.sa_saved_indigest[2]); } crypto_copyback(crp->crp_flags, crp->crp_buf, crd->crd_inject, From owner-svn-src-all@FreeBSD.ORG Sun Jun 12 23:53:37 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CDA731065670; Sun, 12 Jun 2011 23:53:37 +0000 (UTC) (envelope-from doconnor@gsoft.com.au) Received: from cain.gsoft.com.au (unknown [IPv6:2001:44b8:7c07:5581:266:e1ff:fe0c:8f16]) by mx1.freebsd.org (Postfix) with ESMTP id DDF9A8FC14; Sun, 12 Jun 2011 23:53:36 +0000 (UTC) Received: from ur.dons.net.au (ppp203-122-208-116.lns5.adl6.internode.on.net [203.122.208.116]) (authenticated bits=0) by cain.gsoft.com.au (8.14.4/8.14.3) with ESMTP id p5CNrQiq031954 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 13 Jun 2011 09:23:26 +0930 (CST) (envelope-from doconnor@gsoft.com.au) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: "Daniel O'Connor" In-Reply-To: <5506A922-E3FF-477D-AB12-4B47C4D6CE04@bsdimp.com> Date: Mon, 13 Jun 2011 09:23:26 +0930 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201106110908.p5B98kkE066709@svn.freebsd.org> <75DAEF7E-F43E-427E-8AFA-586E0B56D450@bsdimp.com> <20110611184549.GB3284@garage.freebsd.pl> <20110612112150.GB62801@FreeBSD.org> <94A51677-0181-471A-B4D6-DC596C7BCBFD@gsoft.com.au> <5506A922-E3FF-477D-AB12-4B47C4D6CE04@bsdimp.com> To: Warner Losh X-Mailer: Apple Mail (2.1084) X-Spam-Score: 0.163 () BAYES_00,RDNS_DYNAMIC X-Scanned-By: MIMEDefang 2.67 on 203.31.81.10 Cc: Alexey Dokuchaev , src-committers@freebsd.org, Pawel Jakub Dawidek , svn-src-all@freebsd.org, Adrian Chadd , Robert Watson , Joel Dahl , svn-src-head@freebsd.org Subject: Re: svn commit: r222980 - in head/sys: amd64/conf i386/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jun 2011 23:53:38 -0000 On 13/06/2011, at 7:46, Warner Losh wrote: >> ISTR there a few modules which call some blob to determine if the = module is supported but I think it's quite rare (the 80/20 rule works = for me here :) >=20 > I've looked into this extensively. usb comes the closest right now, = since nearly all of its drivers use the right interface to match driver = to device. There is a standard structure people use. However, even it = is impossible to extract this data in a reliable automated fashion. = Ideally, these tables would move to their own section which could then = be extracted by a tool to see when to load it. This section would also = need some additional metadata in it so we know how to interpret the = section. >=20 > The situation with the PCI bus is much less uniform. While many = drivers have tables, these tables are all ad-hoc. There's no standard = structure so everybody invents their own. In addition to annotating the = tables, you'd have to regularize them all across all pci drivers. Doing = this for 100+ drivers is a bit tedious. Also, there are at least two = cases where we have to load two drivers to be sure that one of them = attaches because there's matching done outside of the normal plug and = play identifiers (eg vendor/device/function/subvendor/subdevice) in = their probe routines. > PC Card has also had the standard structure and interface for many = years. When I tried to move this to PCI many years ago, I encountered a = lot of resistance that didn't make sense to me at the time (so I can't = do it justice now). This should tell you how long the problem has = languished. It was the primary motivator behind writing devd, but the = pci resistance lead me to put aside the problem for a while. I'll be = happy to pick it back up, especially if I can get some help going = through all the drivers and tagging things appropriately. I would be interested in helping, certainly with the mechanical changes. -- Daniel O'Connor software and network engineer for Genesis Software - http://www.gsoft.com.au "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 01:04:00 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DFA941065670; Mon, 13 Jun 2011 01:04:00 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D01248FC13; Mon, 13 Jun 2011 01:04:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5D140YR048751; Mon, 13 Jun 2011 01:04:00 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5D140VF048748; Mon, 13 Jun 2011 01:04:00 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201106130104.p5D140VF048748@svn.freebsd.org> From: Dimitry Andric Date: Mon, 13 Jun 2011 01:04:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223029 - head/usr.sbin/makefs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 01:04:01 -0000 Author: dim Date: Mon Jun 13 01:04:00 2011 New Revision: 223029 URL: http://svn.freebsd.org/changeset/base/223029 Log: Apparently makefs needs a few more system headers to compile during buildworld. Modified: head/usr.sbin/makefs/ffs/ffs_bswap.c head/usr.sbin/makefs/ffs/ffs_subr.c Modified: head/usr.sbin/makefs/ffs/ffs_bswap.c ============================================================================== --- head/usr.sbin/makefs/ffs/ffs_bswap.c Mon Jun 13 00:55:29 2011 (r223028) +++ head/usr.sbin/makefs/ffs/ffs_bswap.c Mon Jun 13 01:04:00 2011 (r223029) @@ -35,6 +35,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include +#include #if defined(_KERNEL) #include #endif Modified: head/usr.sbin/makefs/ffs/ffs_subr.c ============================================================================== --- head/usr.sbin/makefs/ffs/ffs_subr.c Mon Jun 13 00:55:29 2011 (r223028) +++ head/usr.sbin/makefs/ffs/ffs_subr.c Mon Jun 13 01:04:00 2011 (r223029) @@ -35,6 +35,9 @@ __FBSDID("$FreeBSD$"); #include +#include +#include +#include #include #include From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 01:15:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 286BD106564A; Mon, 13 Jun 2011 01:15:09 +0000 (UTC) (envelope-from buganini@gmail.com) Received: from mail-iw0-f182.google.com (mail-iw0-f182.google.com [209.85.214.182]) by mx1.freebsd.org (Postfix) with ESMTP id BE5498FC12; Mon, 13 Jun 2011 01:15:08 +0000 (UTC) Received: by iwn33 with SMTP id 33so5104281iwn.13 for ; Sun, 12 Jun 2011 18:15:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=V0K0Wz2yWeQ0qREBYSHxgk18n/4Aiv3nfE3MjVlzAiU=; b=AYe+tjkm3RUuquNY9mCI5j0fXgyVAaWAKgX33MiOm+n7x/D5cST+beXfAasHNyisOL USRnqfEw3OswnBKL6ajlpoUIQ9pVysghQGzrQkV1K0EGjkbQvvD5JfL48xLwlFM0swiy 3b+Sb0gAvIZ0iZ6JVueywyZwmwbxxw8a6iRP0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=tTQQ3tv7S6eHCPF7n2Iu8ipPkV69fVidCoyxJaKv0DKbmrkkYujwtZNkGtbHoNc5H0 3SRMRF8caEhUpmxD9U2o4nYjDQJuhR8LVxoV+he3Q8g2H/Ajpt0xCayyN7Y5IXHYBqRn MwYVrgcpkXjXgeuGQuusxyYP2rcZWgEn0K9U8= MIME-Version: 1.0 Received: by 10.231.51.17 with SMTP id b17mr5185589ibg.0.1307926148859; Sun, 12 Jun 2011 17:49:08 -0700 (PDT) Received: by 10.231.35.75 with HTTP; Sun, 12 Jun 2011 17:49:08 -0700 (PDT) In-Reply-To: <201106122309.p5CN91jN045181@svn.freebsd.org> References: <201106122309.p5CN91jN045181@svn.freebsd.org> Date: Mon, 13 Jun 2011 08:49:08 +0800 Message-ID: From: Buganini To: Dimitry Andric Content-Type: text/plain; charset=UTF-8 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223025 - head/usr.sbin/makefs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 01:15:09 -0000 still broken: cc -O2 -pipe -I/usr/src/usr.sbin/makefs -I/usr/src/usr.sbin/makefs/../../sys/fs/cd9660/ -I/usr/src/usr.sbin/makefs/../../sys/ufs/ffs -I/usr/src/usr.sbin/makefs/compat -DHAVE_STRUCT_STAT_ST_FLAGS=1 -DHAVE_STRUCT_STAT_ST_GEN=1 -I/usr/src/usr.sbin/makefs/../mtree -std=gnu99 -fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/usr.sbin/makefs/ffs/ffs_bswap.c In file included from /usr/src/usr.sbin/makefs/ffs/ffs_bswap.c:52: /usr/obj/usr/src/tmp/usr/include/ufs/ffs/ffs_extern.h:176: error: field 'sn_lock' has incomplete type *** Error code 1 Stop in /usr/src/usr.sbin/makefs. *** Error code 1 Following lock(9): #include #include #include fix it. and another breakage: cc -O2 -pipe -I/usr/src/usr.sbin/makefs -I/usr/src/usr.sbin/makefs/../../sys/fs/cd9660/ -I/usr/src/usr.sbin/makefs/../../sys/ufs/ffs -I/usr/src/usr.sbin/makefs/compat -DHAVE_STRUCT_STAT_ST_FLAGS=1 -DHAVE_STRUCT_STAT_ST_GEN=1 -I/usr/src/usr.sbin/makefs/../mtree -std=gnu99 -fstack-protector -Wsystem-headers -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/usr.sbin/makefs/ffs/ffs_subr.c In file included from /usr/src/usr.sbin/makefs/ffs/ffs_subr.c:48: /usr/obj/usr/src/tmp/usr/include/ufs/ffs/ffs_extern.h:169: warning: data definition has no type or storage class /usr/obj/usr/src/tmp/usr/include/ufs/ffs/ffs_extern.h:169: warning: parameter names (without types) in function declaration /usr/obj/usr/src/tmp/usr/include/ufs/ffs/ffs_extern.h:172: error: expected specifier-qualifier-list before 'LIST_ENTRY' *** Error code 1 #include #include #include #include fix it. From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 04:31:57 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B452E106566B; Mon, 13 Jun 2011 04:31:57 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A49568FC0C; Mon, 13 Jun 2011 04:31:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5D4VvBv055606; Mon, 13 Jun 2011 04:31:57 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5D4Vv0t055604; Mon, 13 Jun 2011 04:31:57 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201106130431.p5D4Vv0t055604@svn.freebsd.org> From: Adrian Chadd Date: Mon, 13 Jun 2011 04:31:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223032 - head/sys/dev/ath X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 04:31:57 -0000 Author: adrian Date: Mon Jun 13 04:31:57 2011 New Revision: 223032 URL: http://svn.freebsd.org/changeset/base/223032 Log: Fix ath_ahb(4) bus attach and eeprom error handling. Submitted by: Luiz Otavio O Souza Modified: head/sys/dev/ath/if_ath_ahb.c Modified: head/sys/dev/ath/if_ath_ahb.c ============================================================================== --- head/sys/dev/ath/if_ath_ahb.c Mon Jun 13 02:23:51 2011 (r223031) +++ head/sys/dev/ath/if_ath_ahb.c Mon Jun 13 04:31:57 2011 (r223032) @@ -123,7 +123,7 @@ ath_ahb_attach(device_t dev) device_printf(sc->sc_dev, "eeprom @ %p\n", (void *) eepromaddr); psc->sc_eeprom = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, (uintptr_t) eepromaddr, (uintptr_t) eepromaddr + (uintptr_t) ((ATH_EEPROM_DATA_SIZE * 2) - 1), 0, RF_ACTIVE); - if (psc->sc_sr == NULL) { + if (psc->sc_eeprom == NULL) { device_printf(dev, "cannot map eeprom space\n"); goto bad0; } @@ -139,6 +139,10 @@ ath_ahb_attach(device_t dev) /* Copy the EEPROM data out */ sc->sc_eepromdata = malloc(ATH_EEPROM_DATA_SIZE * 2, M_TEMP, M_NOWAIT | M_ZERO); + if (sc->sc_eepromdata == NULL) { + device_printf(dev, "cannot allocate memory for eeprom data\n"); + goto bad1; + } device_printf(sc->sc_dev, "eeprom data @ %p\n", (void *) rman_get_bushandle(psc->sc_eeprom)); /* XXX why doesn't this work? -adrian */ #if 0 From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 05:22:07 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D15C2106566B; Mon, 13 Jun 2011 05:22:07 +0000 (UTC) (envelope-from avatar@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A81B48FC08; Mon, 13 Jun 2011 05:22:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5D5M7fk057306; Mon, 13 Jun 2011 05:22:07 GMT (envelope-from avatar@svn.freebsd.org) Received: (from avatar@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5D5M7sa057304; Mon, 13 Jun 2011 05:22:07 GMT (envelope-from avatar@svn.freebsd.org) Message-Id: <201106130522.p5D5M7sa057304@svn.freebsd.org> From: Tai-hwa Liang Date: Mon, 13 Jun 2011 05:22:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223035 - head/usr.bin/find X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 05:22:07 -0000 Author: avatar Date: Mon Jun 13 05:22:07 2011 New Revision: 223035 URL: http://svn.freebsd.org/changeset/base/223035 Log: Using statfs.f_fstypename rather than statfs.f_type whilst performing fstype comparsion as nullfs will copy f_type from underlayer FS. PR: bin/156258 Submitted by: Marcin Wisnicki MFC after: 1 month Modified: head/usr.bin/find/function.c Modified: head/usr.bin/find/function.c ============================================================================== --- head/usr.bin/find/function.c Mon Jun 13 04:55:29 2011 (r223034) +++ head/usr.bin/find/function.c Mon Jun 13 05:22:07 2011 (r223035) @@ -846,7 +846,8 @@ f_fstype(PLAN *plan, FTSENT *entry) static dev_t curdev; /* need a guaranteed illegal dev value */ static int first = 1; struct statfs sb; - static int val_type, val_flags; + static int val_flags; + static char fstype[sizeof(sb.f_fstypename)]; char *p, save[2] = {0,0}; if ((plan->flags & F_MTMASK) == F_MTUNKNOWN) @@ -888,13 +889,13 @@ f_fstype(PLAN *plan, FTSENT *entry) * always copy both of them. */ val_flags = sb.f_flags; - val_type = sb.f_type; + strlcpy(fstype, sb.f_fstypename, sizeof(fstype)); } switch (plan->flags & F_MTMASK) { case F_MTFLAG: return val_flags & plan->mt_data; case F_MTTYPE: - return val_type == plan->mt_data; + return (strncmp(fstype, plan->c_data, sizeof(fstype)) == 0); default: abort(); } @@ -905,22 +906,11 @@ c_fstype(OPTION *option, char ***argvp) { char *fsname; PLAN *new; - struct xvfsconf vfc; fsname = nextarg(option, argvp); ftsoptions &= ~FTS_NOSTAT; new = palloc(option); - - /* - * Check first for a filesystem name. - */ - if (getvfsbyname(fsname, &vfc) == 0) { - new->flags |= F_MTTYPE; - new->mt_data = vfc.vfc_typenum; - return new; - } - switch (*fsname) { case 'l': if (!strcmp(fsname, "local")) { @@ -938,12 +928,8 @@ c_fstype(OPTION *option, char ***argvp) break; } - /* - * We need to make filesystem checks for filesystems - * that exists but aren't in the kernel work. - */ - fprintf(stderr, "Warning: Unknown filesystem type %s\n", fsname); - new->flags |= F_MTUNKNOWN; + new->flags |= F_MTTYPE; + new->c_data = fsname; return new; } From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 06:27:58 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 026CA1065676; Mon, 13 Jun 2011 06:27:58 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail06.syd.optusnet.com.au (mail06.syd.optusnet.com.au [211.29.132.187]) by mx1.freebsd.org (Postfix) with ESMTP id 61EAC8FC13; Mon, 13 Jun 2011 06:27:56 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail06.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p5D6Rn42028080 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 13 Jun 2011 16:27:51 +1000 Date: Mon, 13 Jun 2011 16:27:49 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Dimitry Andric In-Reply-To: <201106130104.p5D140VF048748@svn.freebsd.org> Message-ID: <20110613161452.S843@besplex.bde.org> References: <201106130104.p5D140VF048748@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223029 - head/usr.sbin/makefs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 06:27:58 -0000 On Mon, 13 Jun 2011, Dimitry Andric wrote: > Log: > Apparently makefs needs a few more system headers to compile during > buildworld. This expands the bug. > Modified: > head/usr.sbin/makefs/ffs/ffs_bswap.c > head/usr.sbin/makefs/ffs/ffs_subr.c > > Modified: head/usr.sbin/makefs/ffs/ffs_bswap.c > ============================================================================== > --- head/usr.sbin/makefs/ffs/ffs_bswap.c Mon Jun 13 00:55:29 2011 (r223028) > +++ head/usr.sbin/makefs/ffs/ffs_bswap.c Mon Jun 13 01:04:00 2011 (r223029) > @@ -35,6 +35,8 @@ __FBSDID("$FreeBSD$"); > > #include > #include > +#include > +#include > #if defined(_KERNEL) > #include > #endif Kernel variables like sn_lock should not be exported to userland. And even when they are, the full kernel API for accessing them should not by included by userland (or in kernel headers). The system provides headers and to help avoid exposing the full API. These bugs are in many networking headers, but should not be added in new code. The networking headers are so convuluted and broken that many of them have to expose the full API. This should be even easier to avoid adding in new code. Bruce From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 06:32:57 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88A261065670; Mon, 13 Jun 2011 06:32:57 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 786E88FC2A; Mon, 13 Jun 2011 06:32:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5D6Wvtj059436; Mon, 13 Jun 2011 06:32:57 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5D6Wvh8059434; Mon, 13 Jun 2011 06:32:57 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201106130632.p5D6Wvh8059434@svn.freebsd.org> From: David Xu Date: Mon, 13 Jun 2011 06:32:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223037 - stable/8/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 06:32:57 -0000 Author: davidxu Date: Mon Jun 13 06:32:56 2011 New Revision: 223037 URL: http://svn.freebsd.org/changeset/base/223037 Log: MFC r222802: Use p4prio_to_tsprio to calculate TS priority instead of using p4prio_to_rtpprio which is for RT priority. Modified: stable/8/sys/kern/ksched.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/kern/ksched.c ============================================================================== --- stable/8/sys/kern/ksched.c Mon Jun 13 05:34:08 2011 (r223036) +++ stable/8/sys/kern/ksched.c Mon Jun 13 06:32:56 2011 (r223037) @@ -202,7 +202,7 @@ ksched_setscheduler(struct ksched *ksche if (param->sched_priority >= 0 && param->sched_priority <= (PRI_MAX_TIMESHARE - PRI_MIN_TIMESHARE)) { rtp.type = RTP_PRIO_NORMAL; - rtp.prio = p4prio_to_rtpprio(param->sched_priority); + rtp.prio = p4prio_to_tsprio(param->sched_priority); rtp_to_pri(&rtp, td); } else e = EINVAL; From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 06:57:54 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9463E106564A; Mon, 13 Jun 2011 06:57:54 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 18DC08FC14; Mon, 13 Jun 2011 06:57:53 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id p5D6vn0K046085 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 13 Jun 2011 09:57:49 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id p5D6vnjh053532; Mon, 13 Jun 2011 09:57:49 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id p5D6vnLI053531; Mon, 13 Jun 2011 09:57:49 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 13 Jun 2011 09:57:49 +0300 From: Kostik Belousov To: Dimitry Andric Message-ID: <20110613065749.GT48734@deviant.kiev.zoral.com.ua> References: <201106130104.p5D140VF048748@svn.freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="nj/v3niR77Tv8XPp" Content-Disposition: inline In-Reply-To: <201106130104.p5D140VF048748@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-3.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223029 - head/usr.sbin/makefs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 06:57:54 -0000 --nj/v3niR77Tv8XPp Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Jun 13, 2011 at 01:04:00AM +0000, Dimitry Andric wrote: > Author: dim > Date: Mon Jun 13 01:04:00 2011 > New Revision: 223029 > URL: http://svn.freebsd.org/changeset/base/223029 >=20 > Log: > Apparently makefs needs a few more system headers to compile during > buildworld. >=20 > Modified: > head/usr.sbin/makefs/ffs/ffs_bswap.c > head/usr.sbin/makefs/ffs/ffs_subr.c >=20 > Modified: head/usr.sbin/makefs/ffs/ffs_bswap.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/usr.sbin/makefs/ffs/ffs_bswap.c Mon Jun 13 00:55:29 2011 (r22302= 8) > +++ head/usr.sbin/makefs/ffs/ffs_bswap.c Mon Jun 13 01:04:00 2011 (r22302= 9) > @@ -35,6 +35,8 @@ __FBSDID("$FreeBSD$"); > =20 > #include > #include > +#include > +#include > #if defined(_KERNEL) > #include > #endif >=20 > Modified: head/usr.sbin/makefs/ffs/ffs_subr.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/usr.sbin/makefs/ffs/ffs_subr.c Mon Jun 13 00:55:29 2011 (r223028) > +++ head/usr.sbin/makefs/ffs/ffs_subr.c Mon Jun 13 01:04:00 2011 (r223029) > @@ -35,6 +35,9 @@ > __FBSDID("$FreeBSD$"); > =20 > #include > +#include > +#include > +#include > =20 > #include > #include I suspect it is easier and less controversial to put the structure under #ifdef _KERNEL braces instead. --nj/v3niR77Tv8XPp Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (FreeBSD) iEYEARECAAYFAk31tO0ACgkQC3+MBN1Mb4gPwwCfSh7OJgVt8bSMx8ly7aavTzoq uLgAnifIUYmgTteu2XDKb4z1r4ucQzXx =6lCG -----END PGP SIGNATURE----- --nj/v3niR77Tv8XPp-- From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 12:45:20 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4492C1065673; Mon, 13 Jun 2011 12:45:20 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 34B238FC16; Mon, 13 Jun 2011 12:45:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DCjKAo074555; Mon, 13 Jun 2011 12:45:20 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DCjK6W074553; Mon, 13 Jun 2011 12:45:20 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201106131245.p5DCjK6W074553@svn.freebsd.org> From: Marius Strobl Date: Mon, 13 Jun 2011 12:45:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223044 - head/sys/sparc64/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 12:45:20 -0000 Author: marius Date: Mon Jun 13 12:45:19 2011 New Revision: 223044 URL: http://svn.freebsd.org/changeset/base/223044 Log: - Merge r222980 from x86: add sound(4) and common device drivers. - Fix whitespace. Modified: head/sys/sparc64/conf/GENERIC Modified: head/sys/sparc64/conf/GENERIC ============================================================================== --- head/sys/sparc64/conf/GENERIC Mon Jun 13 12:23:45 2011 (r223043) +++ head/sys/sparc64/conf/GENERIC Mon Jun 13 12:45:19 2011 (r223044) @@ -61,13 +61,13 @@ options PRINTF_BUFR_SIZE=128 # Prevent options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing options MAC # TrustedBSD MAC Framework -options INCLUDE_CONFIG_FILE # Include this file in kernel +options INCLUDE_CONFIG_FILE # Include this file in kernel # Debugging for use in -current options KDB # Enable kernel debugger support. options DDB # Support DDB. options GDB # Support remote GDB. -options DEADLKRES # Enable the deadlock resolver +options DEADLKRES # Enable the deadlock resolver 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 @@ -266,3 +266,10 @@ device fwe # Ethernet over FireWire (n device fwip # IP over FireWire (RFC 2734,3146) device dcons # Dumb console driver device dcons_crom # Configuration ROM for dcons + +# Sound support +device sound # Generic sound driver (required) +device snd_audiocs # Crystal Semiconductor CS4231 +device snd_es137x # Ensoniq AudioPCI ES137x +device snd_t4dwave # Acer Labs M5451 +device snd_uaudio # USB Audio From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 13:24:33 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7840E106566C; Mon, 13 Jun 2011 13:24:33 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 689978FC12; Mon, 13 Jun 2011 13:24:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DDOXOX076391; Mon, 13 Jun 2011 13:24:33 GMT (envelope-from nyan@svn.freebsd.org) Received: (from nyan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DDOXCi076389; Mon, 13 Jun 2011 13:24:33 GMT (envelope-from nyan@svn.freebsd.org) Message-Id: <201106131324.p5DDOXCi076389@svn.freebsd.org> From: Takahashi Yoshihiro Date: Mon, 13 Jun 2011 13:24:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223046 - head/sys/pc98/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 13:24:33 -0000 Author: nyan Date: Mon Jun 13 13:24:33 2011 New Revision: 223046 URL: http://svn.freebsd.org/changeset/base/223046 Log: - Reduce diffs against i386. - Add snd_uaudio. Modified: head/sys/pc98/conf/GENERIC Modified: head/sys/pc98/conf/GENERIC ============================================================================== --- head/sys/pc98/conf/GENERIC Mon Jun 13 13:21:12 2011 (r223045) +++ head/sys/pc98/conf/GENERIC Mon Jun 13 13:24:33 2011 (r223046) @@ -139,12 +139,6 @@ device sc # Add suspend/resume support for the i8254. #device pmtimer -# Audio support -#device sound # Generic sound driver -#device snd_mss # Microsoft Sound System -#device "snd_sb16" # Sound Blaster 16 -#device snd_sbc # Sound Blaster - # PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge @@ -288,3 +282,10 @@ device bpf # Berkeley packet filter #device firewire # FireWire bus code #device sbp # SCSI over FireWire (Requires scbus and da) #device fwe # Ethernet over FireWire (non-standard!) + +# Sound support +#device sound # Generic sound driver (required) +#device snd_mss # Microsoft Sound System +#device "snd_sb16" # Sound Blaster 16 +#device snd_sbc # Sound Blaster +#device snd_uaudio # USB Audio From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 15:38:31 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A043D106566C; Mon, 13 Jun 2011 15:38:31 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 912428FC1A; Mon, 13 Jun 2011 15:38:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DFcV2i088348; Mon, 13 Jun 2011 15:38:31 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DFcVWB088346; Mon, 13 Jun 2011 15:38:31 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201106131538.p5DFcVWB088346@svn.freebsd.org> From: John Baldwin Date: Mon, 13 Jun 2011 15:38:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223049 - head/sys/netinet X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 15:38:31 -0000 Author: jhb Date: Mon Jun 13 15:38:31 2011 New Revision: 223049 URL: http://svn.freebsd.org/changeset/base/223049 Log: Advance the advertised window (rcv_adv) to the currently received data (rcv_nxt) if we advertising a zero window. This can be true when ACK'ing a window probe whose one byte payload was accepted rather than dropped because the socket's receive buffer was not completely full, but the remaining space was smaller than the window scale. This ensures that window probe ACKs satisfy the assumption made in r221346 and closes a window where rcv_nxt could be greater than rcv_adv. Tested by: trasz, pho, trociny Reviewed by: silby MFC after: 1 week Modified: head/sys/netinet/tcp_output.c Modified: head/sys/netinet/tcp_output.c ============================================================================== --- head/sys/netinet/tcp_output.c Mon Jun 13 13:40:12 2011 (r223048) +++ head/sys/netinet/tcp_output.c Mon Jun 13 15:38:31 2011 (r223049) @@ -1331,7 +1331,7 @@ out: * then remember the size of the advertised window. * Any pending ACK has now been sent. */ - if (recwin > 0 && SEQ_GT(tp->rcv_nxt + recwin, tp->rcv_adv)) + if (recwin >= 0 && SEQ_GT(tp->rcv_nxt + recwin, tp->rcv_adv)) tp->rcv_adv = tp->rcv_nxt + recwin; tp->last_ack_sent = tp->rcv_nxt; tp->t_flags &= ~(TF_ACKNOW | TF_DELACK); From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 15:53:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 96502106564A; Mon, 13 Jun 2011 15:53:56 +0000 (UTC) (envelope-from jh@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 865D18FC08; Mon, 13 Jun 2011 15:53:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DFrupC088854; Mon, 13 Jun 2011 15:53:56 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DFru0q088851; Mon, 13 Jun 2011 15:53:56 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201106131553.p5DFru0q088851@svn.freebsd.org> From: Jaakko Heinonen Date: Mon, 13 Jun 2011 15:53:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223050 - stable/8/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 15:53:56 -0000 Author: jh Date: Mon Jun 13 15:53:56 2011 New Revision: 223050 URL: http://svn.freebsd.org/changeset/base/223050 Log: MFC r219925: Recognize "ro", "rdonly", "norw", "rw" and "noro" as equal options in vfs_equalopts(). This allows vfs_sanitizeopts() to filter redundant occurrences of these options. It was possible that for example both "ro" and "rw" options became active concurrently. PR: kern/133614 MFC r220040: Fix some style issues in r219925. Modified: stable/8/sys/kern/vfs_mount.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/kern/vfs_mount.c ============================================================================== --- stable/8/sys/kern/vfs_mount.c Mon Jun 13 15:38:31 2011 (r223049) +++ stable/8/sys/kern/vfs_mount.c Mon Jun 13 15:53:56 2011 (r223050) @@ -192,6 +192,25 @@ vfs_deleteopt(struct vfsoptlist *opts, c } } +static int +vfs_isopt_ro(const char *opt) +{ + + if (strcmp(opt, "ro") == 0 || strcmp(opt, "rdonly") == 0 || + strcmp(opt, "norw") == 0) + return (1); + return (0); +} + +static int +vfs_isopt_rw(const char *opt) +{ + + if (strcmp(opt, "rw") == 0 || strcmp(opt, "noro") == 0) + return (1); + return (0); +} + /* * Check if options are equal (with or without the "no" prefix). */ @@ -220,6 +239,10 @@ vfs_equalopts(const char *opt1, const ch if (strncmp(opt2, "no", 2) == 0 && strcmp(opt1, opt2 + 2) == 0) return (1); } + /* "ro" / "rdonly" / "norw" / "rw" / "noro" */ + if ((vfs_isopt_ro(opt1) || vfs_isopt_rw(opt1)) && + (vfs_isopt_ro(opt2) || vfs_isopt_rw(opt2))) + return (1); return (0); } From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 15:59:21 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9D2E8106566B; Mon, 13 Jun 2011 15:59:21 +0000 (UTC) (envelope-from jh@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8CBE38FC0A; Mon, 13 Jun 2011 15:59:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DFxLBM089188; Mon, 13 Jun 2011 15:59:21 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DFxLrR089186; Mon, 13 Jun 2011 15:59:21 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201106131559.p5DFxLrR089186@svn.freebsd.org> From: Jaakko Heinonen Date: Mon, 13 Jun 2011 15:59:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223051 - stable/7/cddl/compat/opensolaris/misc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 15:59:21 -0000 Author: jh Date: Mon Jun 13 15:59:21 2011 New Revision: 223051 URL: http://svn.freebsd.org/changeset/base/223051 Log: MFC r221390: Don't pass empty mount options to nmount(2). Modified: stable/7/cddl/compat/opensolaris/misc/zmount.c Directory Properties: stable/7/cddl/compat/opensolaris/ (props changed) Modified: stable/7/cddl/compat/opensolaris/misc/zmount.c ============================================================================== --- stable/7/cddl/compat/opensolaris/misc/zmount.c Mon Jun 13 15:53:56 2011 (r223050) +++ stable/7/cddl/compat/opensolaris/misc/zmount.c Mon Jun 13 15:59:21 2011 (r223051) @@ -95,8 +95,10 @@ zmount(const char *spec, const char *dir build_iovec(&iov, &iovlen, "fspath", __DECONST(char *, dir), (size_t)-1); build_iovec(&iov, &iovlen, "from", __DECONST(char *, spec), (size_t)-1); - for (p = optstr; p != NULL; strsep(&p, ",/ ")) - build_iovec(&iov, &iovlen, p, NULL, (size_t)-1); + for (p = optstr; p != NULL; strsep(&p, ",/ ")) { + if (*p != '\0') + build_iovec(&iov, &iovlen, p, NULL, (size_t)-1); + } rv = nmount(iov, iovlen, 0); free(optstr); return (rv); From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 16:05:41 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E633C106566C; Mon, 13 Jun 2011 16:05:41 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D69658FC1B; Mon, 13 Jun 2011 16:05:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DG5f25089447; Mon, 13 Jun 2011 16:05:41 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DG5fvp089443; Mon, 13 Jun 2011 16:05:41 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201106131605.p5DG5fvp089443@svn.freebsd.org> From: Dimitry Andric Date: Mon, 13 Jun 2011 16:05:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223052 - in head: sys/ufs/ffs usr.sbin/makefs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 16:05:42 -0000 Author: dim Date: Mon Jun 13 16:05:41 2011 New Revision: 223052 URL: http://svn.freebsd.org/changeset/base/223052 Log: Use alternative, less messy solution to avoid breakage after r223020: put the snapdata structure between #ifdef _KERNEL guards. Suggested by: kib Modified: head/sys/ufs/ffs/ffs_extern.h head/usr.sbin/makefs/ffs/ffs_bswap.c head/usr.sbin/makefs/ffs/ffs_subr.c Modified: head/sys/ufs/ffs/ffs_extern.h ============================================================================== --- head/sys/ufs/ffs/ffs_extern.h Mon Jun 13 15:59:21 2011 (r223051) +++ head/sys/ufs/ffs/ffs_extern.h Mon Jun 13 16:05:41 2011 (r223052) @@ -166,6 +166,7 @@ void softdep_freework(struct workhead *) int ffs_rdonly(struct inode *); +#ifdef _KERNEL TAILQ_HEAD(snaphead, inode); struct snapdata { @@ -175,5 +176,6 @@ struct snapdata { daddr_t *sn_blklist; struct lock sn_lock; }; +#endif /* _KERNEL */ #endif /* !_UFS_FFS_EXTERN_H */ Modified: head/usr.sbin/makefs/ffs/ffs_bswap.c ============================================================================== --- head/usr.sbin/makefs/ffs/ffs_bswap.c Mon Jun 13 15:59:21 2011 (r223051) +++ head/usr.sbin/makefs/ffs/ffs_bswap.c Mon Jun 13 16:05:41 2011 (r223052) @@ -34,9 +34,6 @@ __FBSDID("$FreeBSD$"); #include -#include -#include -#include #if defined(_KERNEL) #include #endif Modified: head/usr.sbin/makefs/ffs/ffs_subr.c ============================================================================== --- head/usr.sbin/makefs/ffs/ffs_subr.c Mon Jun 13 15:59:21 2011 (r223051) +++ head/usr.sbin/makefs/ffs/ffs_subr.c Mon Jun 13 16:05:41 2011 (r223052) @@ -35,9 +35,6 @@ __FBSDID("$FreeBSD$"); #include -#include -#include -#include #include #include From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 19:33:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7EBC3106564A; Mon, 13 Jun 2011 19:33:13 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6C33C8FC08; Mon, 13 Jun 2011 19:33:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DJXDX2095646; Mon, 13 Jun 2011 19:33:13 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DJXDgW095638; Mon, 13 Jun 2011 19:33:13 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201106131933.p5DJXDgW095638@svn.freebsd.org> From: Konstantin Belousov Date: Mon, 13 Jun 2011 19:33:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223054 - in stable/8/sys: fs/nfsclient fs/nwfs fs/smbfs nfsclient vm X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 19:33:13 -0000 Author: kib Date: Mon Jun 13 19:33:13 2011 New Revision: 223054 URL: http://svn.freebsd.org/changeset/base/223054 Log: MFC r222586: Fix an infinite loop in vm_object_page_clean() when the filesystem returns permanent errors for some page writes. To accomodate the stable/8 locking requirements, vm page queue lock is taken around the loop in vnode_pager_undirty_pages() which modifies m->dirty field. Reviewed by: alc Modified: stable/8/sys/fs/nfsclient/nfs_clbio.c stable/8/sys/fs/nwfs/nwfs_io.c stable/8/sys/fs/smbfs/smbfs_io.c stable/8/sys/nfsclient/nfs_bio.c stable/8/sys/vm/vm_object.c stable/8/sys/vm/vnode_pager.c stable/8/sys/vm/vnode_pager.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- stable/8/sys/fs/nfsclient/nfs_clbio.c Mon Jun 13 18:27:09 2011 (r223053) +++ stable/8/sys/fs/nfsclient/nfs_clbio.c Mon Jun 13 19:33:13 2011 (r223054) @@ -298,7 +298,7 @@ ncl_putpages(struct vop_putpages_args *a } for (i = 0; i < npages; i++) - rtvals[i] = VM_PAGER_AGAIN; + rtvals[i] = VM_PAGER_ERROR; /* * When putting pages, do not extend file past EOF. @@ -341,16 +341,9 @@ ncl_putpages(struct vop_putpages_args *a pmap_qremove(kva, npages); relpbuf(bp, &ncl_pbuf_freecnt); - if (!error) { - int nwritten = round_page(count - uio.uio_resid) / PAGE_SIZE; - for (i = 0; i < nwritten; i++) { - rtvals[i] = VM_PAGER_OK; - vm_page_undirty(pages[i]); - } - if (must_commit) { - ncl_clearcommit(vp->v_mount); - } - } + vnode_pager_undirty_pages(pages, rtvals, count - uio.uio_resid); + if (must_commit) + ncl_clearcommit(vp->v_mount); return rtvals[0]; } Modified: stable/8/sys/fs/nwfs/nwfs_io.c ============================================================================== --- stable/8/sys/fs/nwfs/nwfs_io.c Mon Jun 13 18:27:09 2011 (r223053) +++ stable/8/sys/fs/nwfs/nwfs_io.c Mon Jun 13 19:33:13 2011 (r223054) @@ -553,7 +553,7 @@ nwfs_putpages(ap) npages = btoc(count); for (i = 0; i < npages; i++) { - rtvals[i] = VM_PAGER_AGAIN; + rtvals[i] = VM_PAGER_ERROR; } bp = getpbuf(&nwfs_pbuf_freecnt); @@ -578,15 +578,8 @@ nwfs_putpages(ap) pmap_qremove(kva, npages); relpbuf(bp, &nwfs_pbuf_freecnt); - if (!error) { - int nwritten = round_page(count - uio.uio_resid) / PAGE_SIZE; - vm_page_lock_queues(); - for (i = 0; i < nwritten; i++) { - rtvals[i] = VM_PAGER_OK; - vm_page_undirty(pages[i]); - } - vm_page_unlock_queues(); - } + if (!error) + vnode_pager_undirty_pages(pages, rtvals, count - uio.uio_resid); return rtvals[0]; #endif /* NWFS_RWCACHE */ } Modified: stable/8/sys/fs/smbfs/smbfs_io.c ============================================================================== --- stable/8/sys/fs/smbfs/smbfs_io.c Mon Jun 13 18:27:09 2011 (r223053) +++ stable/8/sys/fs/smbfs/smbfs_io.c Mon Jun 13 19:33:13 2011 (r223054) @@ -618,7 +618,7 @@ smbfs_putpages(ap) npages = btoc(count); for (i = 0; i < npages; i++) { - rtvals[i] = VM_PAGER_AGAIN; + rtvals[i] = VM_PAGER_ERROR; } bp = getpbuf(&smbfs_pbuf_freecnt); @@ -648,15 +648,8 @@ smbfs_putpages(ap) relpbuf(bp, &smbfs_pbuf_freecnt); - if (!error) { - int nwritten = round_page(count - uio.uio_resid) / PAGE_SIZE; - vm_page_lock_queues(); - for (i = 0; i < nwritten; i++) { - rtvals[i] = VM_PAGER_OK; - vm_page_undirty(pages[i]); - } - vm_page_unlock_queues(); - } + if (!error) + vnode_pager_undirty_pages(pages, rtvals, count - uio.uio_resid); return rtvals[0]; #endif /* SMBFS_RWGENERIC */ } Modified: stable/8/sys/nfsclient/nfs_bio.c ============================================================================== --- stable/8/sys/nfsclient/nfs_bio.c Mon Jun 13 18:27:09 2011 (r223053) +++ stable/8/sys/nfsclient/nfs_bio.c Mon Jun 13 19:33:13 2011 (r223054) @@ -295,7 +295,7 @@ nfs_putpages(struct vop_putpages_args *a } for (i = 0; i < npages; i++) - rtvals[i] = VM_PAGER_AGAIN; + rtvals[i] = VM_PAGER_ERROR; /* * When putting pages, do not extend file past EOF. @@ -339,11 +339,7 @@ nfs_putpages(struct vop_putpages_args *a relpbuf(bp, &nfs_pbuf_freecnt); if (!error) { - int nwritten = round_page(count - uio.uio_resid) / PAGE_SIZE; - for (i = 0; i < nwritten; i++) { - rtvals[i] = VM_PAGER_OK; - vm_page_undirty(pages[i]); - } + vnode_pager_undirty_pages(pages, rtvals, count - uio.uio_resid); if (must_commit) { nfs_clearcommit(vp->v_mount); } Modified: stable/8/sys/vm/vm_object.c ============================================================================== --- stable/8/sys/vm/vm_object.c Mon Jun 13 18:27:09 2011 (r223053) +++ stable/8/sys/vm/vm_object.c Mon Jun 13 19:33:13 2011 (r223054) @@ -843,6 +843,21 @@ rescan: flags, &clearobjflags); if (object->generation != curgeneration) goto rescan; + + /* + * If the VOP_PUTPAGES() did a truncated write, so + * that even the first page of the run is not fully + * written, vm_pageout_flush() returns 0 as the run + * length. Since the condition that caused truncated + * write may be permanent, e.g. exhausted free space, + * accepting n == 0 would cause an infinite loop. + * + * Forwarding the iterator leaves the unwritten page + * behind, but there is not much we can do there if + * filesystem refuses to write it. + */ + if (n == 0) + n = 1; np = vm_page_find_least(object, pi + n); } vm_page_unlock_queues(); Modified: stable/8/sys/vm/vnode_pager.c ============================================================================== --- stable/8/sys/vm/vnode_pager.c Mon Jun 13 18:27:09 2011 (r223053) +++ stable/8/sys/vm/vnode_pager.c Mon Jun 13 19:33:13 2011 (r223054) @@ -1080,7 +1080,7 @@ vnode_pager_generic_putpages(vp, m, byte count = bytecount / PAGE_SIZE; for (i = 0; i < count; i++) - rtvals[i] = VM_PAGER_AGAIN; + rtvals[i] = VM_PAGER_ERROR; if ((int64_t)m[0]->pindex < 0) { printf("vnode_pager_putpages: attempt to write meta-data!!! -- 0x%lx(%lx)\n", @@ -1171,3 +1171,22 @@ vnode_pager_generic_putpages(vp, m, byte } return rtvals[0]; } + +void +vnode_pager_undirty_pages(vm_page_t *ma, int *rtvals, int written) +{ + int i, pos; + + vm_page_lock_queues(); + for (i = 0, pos = 0; pos < written; i++, pos += PAGE_SIZE) { + if (pos < trunc_page(written)) { + rtvals[i] = VM_PAGER_OK; + vm_page_undirty(ma[i]); + } else { + /* Partially written page. */ + rtvals[i] = VM_PAGER_AGAIN; + vm_page_clear_dirty(ma[i], 0, written & PAGE_MASK); + } + } + vm_page_unlock_queues(); +} Modified: stable/8/sys/vm/vnode_pager.h ============================================================================== --- stable/8/sys/vm/vnode_pager.h Mon Jun 13 18:27:09 2011 (r223053) +++ stable/8/sys/vm/vnode_pager.h Mon Jun 13 19:33:13 2011 (r223054) @@ -49,5 +49,8 @@ int vnode_pager_generic_getpages(struct int vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *m, int count, boolean_t sync, int *rtvals); + +void vnode_pager_undirty_pages(vm_page_t *ma, int *rtvals, int written); + #endif /* _KERNEL */ #endif /* _VNODE_PAGER_ */ From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 19:40:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 79E30106564A; Mon, 13 Jun 2011 19:40:09 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 691F68FC13; Mon, 13 Jun 2011 19:40:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DJe9RS095886; Mon, 13 Jun 2011 19:40:09 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DJe93A095884; Mon, 13 Jun 2011 19:40:09 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201106131940.p5DJe93A095884@svn.freebsd.org> From: Konstantin Belousov Date: Mon, 13 Jun 2011 19:40:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223055 - stable/8/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 19:40:09 -0000 Author: kib Date: Mon Jun 13 19:40:09 2011 New Revision: 223055 URL: http://svn.freebsd.org/changeset/base/223055 Log: Cherry-pick a single bit from r222958. Do not pass '3' as the sleepflag to bufobj_wwait() in the ffs_syncvnode(). It only mangles the priority argument of msleep(). Discussed with: jeff Modified: stable/8/sys/ufs/ffs/ffs_vnops.c Modified: stable/8/sys/ufs/ffs/ffs_vnops.c ============================================================================== --- stable/8/sys/ufs/ffs/ffs_vnops.c Mon Jun 13 19:33:13 2011 (r223054) +++ stable/8/sys/ufs/ffs/ffs_vnops.c Mon Jun 13 19:40:09 2011 (r223055) @@ -322,7 +322,7 @@ loop: } if (wait) { - bufobj_wwait(bo, 3, 0); + bufobj_wwait(bo, 0, 0); BO_UNLOCK(bo); /* From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 19:45:02 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1C1A31065672; Mon, 13 Jun 2011 19:45:02 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 04DAE8FC08; Mon, 13 Jun 2011 19:45:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DJj1tE096080; Mon, 13 Jun 2011 19:45:01 GMT (envelope-from jpaetzel@svn.freebsd.org) Received: (from jpaetzel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DJj1JF096079; Mon, 13 Jun 2011 19:45:01 GMT (envelope-from jpaetzel@svn.freebsd.org) Message-Id: <201106131945.p5DJj1JF096079@svn.freebsd.org> From: Josh Paetzel Date: Mon, 13 Jun 2011 19:45:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223056 - head/etc/periodic/daily X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 19:45:02 -0000 Author: jpaetzel Date: Mon Jun 13 19:45:01 2011 New Revision: 223056 URL: http://svn.freebsd.org/changeset/base/223056 Log: Convert the allowed characters '-', '.', and ':' in a ZFS pool name to _ to avoid causing errors in the shell script. Submitted by: William Grzybowski Approved by: kib (mentor) MFC after: 7 days Sponsored by: iXsystems Modified: head/etc/periodic/daily/800.scrub-zfs Modified: head/etc/periodic/daily/800.scrub-zfs ============================================================================== --- head/etc/periodic/daily/800.scrub-zfs Mon Jun 13 19:40:09 2011 (r223055) +++ head/etc/periodic/daily/800.scrub-zfs Mon Jun 13 19:45:01 2011 (r223056) @@ -46,7 +46,7 @@ case "$daily_scrub_zfs_enable" in esac # determine how many days shall be between scrubs - eval _pool_threshold=\${daily_scrub_zfs_${pool}_threshold} + eval _pool_threshold=\${daily_scrub_zfs_$(echo "${pool}"|tr -s "-" "_"|tr -s "." "_"|tr -s ":" "_")_threshold} if [ -z "${_pool_threshold}" ];then _pool_threshold=${daily_scrub_zfs_default_threshold} fi From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 20:11:28 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E210E1065677; Mon, 13 Jun 2011 20:11:28 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D07388FC08; Mon, 13 Jun 2011 20:11:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DKBS7T096910; Mon, 13 Jun 2011 20:11:28 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DKBSGI096903; Mon, 13 Jun 2011 20:11:28 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106132011.p5DKBSGI096903@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Mon, 13 Jun 2011 20:11:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223057 - head/contrib/pf/pfctl X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 20:11:29 -0000 Author: bz Date: Mon Jun 13 20:11:28 2011 New Revision: 223057 URL: http://svn.freebsd.org/changeset/base/223057 Log: Add a new option -P to suppress getservbyport(3) calls when printing rules. This allows one to force consistent printing of numeric port numbers like we do with -n for other tools like netstat (just that -n was already taken) rather than the service names. -P is currently unused in OpenBSD so the change is eligible for upstreaming. PR: misc/151015 Submitted by: Matt Koivisto (mkoivisto sandvine.com) Sponsored by: Sandvine Incorporated MFC after: 1 week Modified: head/contrib/pf/pfctl/pfctl.8 head/contrib/pf/pfctl/pfctl.c head/contrib/pf/pfctl/pfctl_optimize.c head/contrib/pf/pfctl/pfctl_parser.c head/contrib/pf/pfctl/pfctl_parser.h Modified: head/contrib/pf/pfctl/pfctl.8 ============================================================================== --- head/contrib/pf/pfctl/pfctl.8 Mon Jun 13 19:45:01 2011 (r223056) +++ head/contrib/pf/pfctl/pfctl.8 Mon Jun 13 20:11:28 2011 (r223057) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2002 +.Dd June 13, 2011 .Dt PFCTL 8 .Os .Sh NAME @@ -35,7 +35,7 @@ .Sh SYNOPSIS .Nm pfctl .Bk -words -.Op Fl AdeghmNnOqRrvz +.Op Fl AdeghmNnOPqRrvz .Op Fl a Ar anchor .Oo Fl D Ar macro Ns = .Ar value Oc @@ -350,6 +350,9 @@ without any options will enable optimizations, and a second .Fl o will enable profiling. +.It Fl P +Do not perform service name lookup for port specific rules, +instead display the ports numerically. .It Fl p Ar device Use the device file .Ar device @@ -670,6 +673,7 @@ Passive operating system fingerprint dat .Xr pf.conf 5 , .Xr pf.os 5 , .Xr rc.conf 5 , +.Xr services 5 , .Xr sysctl.conf 5 , .Xr authpf 8 , .Xr ftp-proxy 8 , Modified: head/contrib/pf/pfctl/pfctl.c ============================================================================== --- head/contrib/pf/pfctl/pfctl.c Mon Jun 13 19:45:01 2011 (r223056) +++ head/contrib/pf/pfctl/pfctl.c Mon Jun 13 20:11:28 2011 (r223057) @@ -235,7 +235,7 @@ usage(void) { extern char *__progname; - fprintf(stderr, "usage: %s [-AdeghmNnOqRrvz] ", __progname); + fprintf(stderr, "usage: %s [-AdeghmNnOPqRrvz] ", __progname); fprintf(stderr, "[-a anchor] [-D macro=value] [-F modifier]\n"); fprintf(stderr, "\t[-f file] [-i interface] [-K host | network] "); fprintf(stderr, "[-k host | network ]\n"); @@ -770,6 +770,7 @@ pfctl_show_rules(int dev, char *path, in struct pfioc_rule pr; u_int32_t nr, mnr, header = 0; int rule_numbers = opts & (PF_OPT_VERBOSE2 | PF_OPT_DEBUG); + int numeric = opts & PF_OPT_NUMERIC; int len = strlen(path); int brace; char *p; @@ -834,7 +835,7 @@ pfctl_show_rules(int dev, char *path, in case PFCTL_SHOW_RULES: if (pr.rule.label[0] && (opts & PF_OPT_SHOWALL)) labels = 1; - print_rule(&pr.rule, pr.anchor_call, rule_numbers); + print_rule(&pr.rule, pr.anchor_call, rule_numbers, numeric); printf("\n"); pfctl_print_rule_counters(&pr.rule, opts); break; @@ -894,7 +895,7 @@ pfctl_show_rules(int dev, char *path, in } else p = &pr.anchor_call[0]; - print_rule(&pr.rule, p, rule_numbers); + print_rule(&pr.rule, p, rule_numbers, numeric); if (brace) printf(" {\n"); else @@ -951,7 +952,7 @@ pfctl_show_nat(int dev, int opts, char * dotitle = 0; } print_rule(&pr.rule, pr.anchor_call, - opts & PF_OPT_VERBOSE2); + opts & PF_OPT_VERBOSE2, opts & PF_OPT_NUMERIC); printf("\n"); pfctl_print_rule_counters(&pr.rule, opts); pfctl_clear_pool(&pr.rule.rpool); @@ -1318,7 +1319,8 @@ pfctl_load_rule(struct pfctl *pf, char * if (pf->opts & PF_OPT_VERBOSE) { INDENT(depth, !(pf->opts & PF_OPT_VERBOSE2)); print_rule(r, r->anchor ? r->anchor->name : "", - pf->opts & PF_OPT_VERBOSE2); + pf->opts & PF_OPT_VERBOSE2, + pf->opts & PF_OPT_NUMERIC); } path[len] = '\0'; pfctl_clear_pool(&r->rpool); @@ -1978,7 +1980,7 @@ main(int argc, char *argv[]) usage(); while ((ch = getopt(argc, argv, - "a:AdD:eqf:F:ghi:k:K:mnNOo::p:rRs:t:T:vx:z")) != -1) { + "a:AdD:eqf:F:ghi:k:K:mnNOo::Pp:rRs:t:T:vx:z")) != -1) { switch (ch) { case 'a': anchoropt = optarg; @@ -2080,6 +2082,9 @@ main(int argc, char *argv[]) case 'p': pf_device = optarg; break; + case 'P': + opts |= PF_OPT_NUMERIC; + break; case 's': showopt = pfctl_lookup_option(optarg, showopt_list); if (showopt == NULL) { Modified: head/contrib/pf/pfctl/pfctl_optimize.c ============================================================================== --- head/contrib/pf/pfctl/pfctl_optimize.c Mon Jun 13 19:45:01 2011 (r223056) +++ head/contrib/pf/pfctl/pfctl_optimize.c Mon Jun 13 20:11:28 2011 (r223057) @@ -407,7 +407,7 @@ optimize_superblock(struct pfctl *pf, st TAILQ_FOREACH(por, &block->sb_rules, por_entry) { printf(" "); print_rule(&por->por_rule, por->por_rule.anchor ? - por->por_rule.anchor->name : "", 1); + por->por_rule.anchor->name : "", 1, 0); } #endif /* OPT_DEBUG */ Modified: head/contrib/pf/pfctl/pfctl_parser.c ============================================================================== --- head/contrib/pf/pfctl/pfctl_parser.c Mon Jun 13 19:45:01 2011 (r223056) +++ head/contrib/pf/pfctl/pfctl_parser.c Mon Jun 13 20:11:28 2011 (r223057) @@ -64,11 +64,11 @@ __FBSDID("$FreeBSD$"); #include "pfctl.h" void print_op (u_int8_t, const char *, const char *); -void print_port (u_int8_t, u_int16_t, u_int16_t, const char *); +void print_port (u_int8_t, u_int16_t, u_int16_t, const char *, int); void print_ugid (u_int8_t, unsigned, unsigned, const char *, unsigned); void print_flags (u_int8_t); void print_fromto(struct pf_rule_addr *, pf_osfp_t, - struct pf_rule_addr *, u_int8_t, u_int8_t, int); + struct pf_rule_addr *, u_int8_t, u_int8_t, int, int); int ifa_skip_if(const char *filter, struct node_host *p); struct node_host *ifa_grouplookup(const char *, int); @@ -320,12 +320,15 @@ print_op(u_int8_t op, const char *a1, co } void -print_port(u_int8_t op, u_int16_t p1, u_int16_t p2, const char *proto) +print_port(u_int8_t op, u_int16_t p1, u_int16_t p2, const char *proto, int numeric) { char a1[6], a2[6]; struct servent *s; - s = getservbyport(p1, proto); + if (!numeric) + s = getservbyport(p1, proto); + else + s = NULL; p1 = ntohs(p1); p2 = ntohs(p2); snprintf(a1, sizeof(a1), "%u", p1); @@ -363,7 +366,7 @@ print_flags(u_int8_t f) void print_fromto(struct pf_rule_addr *src, pf_osfp_t osfp, struct pf_rule_addr *dst, - sa_family_t af, u_int8_t proto, int verbose) + sa_family_t af, u_int8_t proto, int verbose, int numeric) { char buf[PF_OSFP_LEN*3]; if (src->addr.type == PF_ADDR_ADDRMASK && @@ -384,7 +387,8 @@ print_fromto(struct pf_rule_addr *src, p if (src->port_op) print_port(src->port_op, src->port[0], src->port[1], - proto == IPPROTO_TCP ? "tcp" : "udp"); + proto == IPPROTO_TCP ? "tcp" : "udp", + numeric); if (osfp != PF_OSFP_ANY) printf(" os \"%s\"", pfctl_lookup_fingerprint(osfp, buf, sizeof(buf))); @@ -396,7 +400,8 @@ print_fromto(struct pf_rule_addr *src, p if (dst->port_op) print_port(dst->port_op, dst->port[0], dst->port[1], - proto == IPPROTO_TCP ? "tcp" : "udp"); + proto == IPPROTO_TCP ? "tcp" : "udp", + numeric); } } @@ -673,7 +678,7 @@ print_src_node(struct pf_src_node *sn, i } void -print_rule(struct pf_rule *r, const char *anchor_call, int verbose) +print_rule(struct pf_rule *r, const char *anchor_call, int verbose, int numeric) { static const char *actiontypes[] = { "pass", "block", "scrub", "no scrub", "nat", "no nat", "binat", "no binat", "rdr", "no rdr" }; @@ -800,7 +805,7 @@ print_rule(struct pf_rule *r, const char printf(" proto %u", r->proto); } print_fromto(&r->src, r->os_fingerprint, &r->dst, r->af, r->proto, - verbose); + verbose, numeric); if (r->uid.op) print_ugid(r->uid.op, r->uid.uid[0], r->uid.uid[1], "user", UID_MAX); Modified: head/contrib/pf/pfctl/pfctl_parser.h ============================================================================== --- head/contrib/pf/pfctl/pfctl_parser.h Mon Jun 13 19:45:01 2011 (r223056) +++ head/contrib/pf/pfctl/pfctl_parser.h Mon Jun 13 20:11:28 2011 (r223057) @@ -48,6 +48,7 @@ #define PF_OPT_DEBUG 0x0200 #define PF_OPT_SHOWALL 0x0400 #define PF_OPT_OPTIMIZE 0x0800 +#define PF_OPT_NUMERIC 0x1000 #define PF_OPT_MERGE 0x2000 #define PF_OPT_RECURSE 0x4000 @@ -235,7 +236,7 @@ int pfctl_load_anchors(int, struct pfctl void print_pool(struct pf_pool *, u_int16_t, u_int16_t, sa_family_t, int); void print_src_node(struct pf_src_node *, int); -void print_rule(struct pf_rule *, const char *, int); +void print_rule(struct pf_rule *, const char *, int, int); void print_tabledef(const char *, int, int, struct node_tinithead *); void print_status(struct pf_status *, int); From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 20:15:45 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6B7DB106564A; Mon, 13 Jun 2011 20:15:45 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id C9D398FC16; Mon, 13 Jun 2011 20:15:44 +0000 (UTC) Received: by vws18 with SMTP id 18so5680847vws.13 for ; Mon, 13 Jun 2011 13:15:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=ZNDW9qOrOWE9FUzztEyWmBhi8TvO/pK+/8nOCTYZPEg=; b=a0Hnxh6xqY0sb8m63maVMUVvMzbb0P3HFWcRYXh2xs4VqHL7Cx+wfoA4RIYa+NctHR RQTS14/YDK+9AAa9tUMx7p9LHNO0ubLc1sqhBLEc88pp40twcmOGxwm+5YdG5kHYnlqL Rf2y/NNOrwRQ5fTE/uLdIsZOpoTTLzP7pkeIY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=TNIAzVjIDHy7bUZLIjz5hrU670or+SFEi6NcxPvL3yGeN1L9wAWSg3EXh3AYNFa1Y1 TM/HQ/Y9NhiKDuqp5KnfkSSVH8LrUy5u/XCcU5QaYli9jK6ZHB7qAaNPfEZ5MLqEf4zN 8nEHdPbWKqFdLi2EqZXJskHBes3zGKcFbW0p8= MIME-Version: 1.0 Received: by 10.220.187.76 with SMTP id cv12mr2230510vcb.128.1307996143767; Mon, 13 Jun 2011 13:15:43 -0700 (PDT) Received: by 10.220.189.202 with HTTP; Mon, 13 Jun 2011 13:15:43 -0700 (PDT) In-Reply-To: <201106131945.p5DJj1JF096079@svn.freebsd.org> References: <201106131945.p5DJj1JF096079@svn.freebsd.org> Date: Mon, 13 Jun 2011 13:15:43 -0700 Message-ID: From: Garrett Cooper To: Josh Paetzel Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223056 - head/etc/periodic/daily X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 20:15:45 -0000 On Mon, Jun 13, 2011 at 12:45 PM, Josh Paetzel wrote= : > Author: jpaetzel > Date: Mon Jun 13 19:45:01 2011 > New Revision: 223056 > URL: http://svn.freebsd.org/changeset/base/223056 > > Log: > =A0Convert the allowed characters '-', '.', and ':' in a ZFS pool name to= _ > =A0to avoid causing errors in the shell script. This could be done like: sed -E -e 's/[-\.:]/_/g' to avoid the need for pipelining multiple tr calls. Example: $ echo :-. | sed -E -e 's/[-\.:]/_/g' ___ $ From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 20:34:12 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7710A106566C; Mon, 13 Jun 2011 20:34:12 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5C7488FC18; Mon, 13 Jun 2011 20:34:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DKYCMK097594; Mon, 13 Jun 2011 20:34:12 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DKYCkM097592; Mon, 13 Jun 2011 20:34:12 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201106132034.p5DKYCkM097592@svn.freebsd.org> From: Alexander Motin Date: Mon, 13 Jun 2011 20:34:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223058 - head/sys/dev/sound/pci/hda X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 20:34:12 -0000 Author: mav Date: Mon Jun 13 20:34:12 2011 New Revision: 223058 URL: http://svn.freebsd.org/changeset/base/223058 Log: Add bunch of Conexant codec IDs. For some of them add quirks to disable excessive signal paths to simplify tracer's life. Modified: head/sys/dev/sound/pci/hda/hdac.c Modified: head/sys/dev/sound/pci/hda/hdac.c ============================================================================== --- head/sys/dev/sound/pci/hda/hdac.c Mon Jun 13 20:11:28 2011 (r223057) +++ head/sys/dev/sound/pci/hda/hdac.c Mon Jun 13 20:34:12 2011 (r223058) @@ -754,7 +754,17 @@ static const struct { #define HDA_CODEC_CX20561 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5051) #define HDA_CODEC_CX20582 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5066) #define HDA_CODEC_CX20583 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5067) +#define HDA_CODEC_CX20584 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5068) #define HDA_CODEC_CX20585 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5069) +#define HDA_CODEC_CX20590 HDA_CODEC_CONSTRUCT(CONEXANT, 0x506e) +#define HDA_CODEC_CX20631 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5097) +#define HDA_CODEC_CX20632 HDA_CODEC_CONSTRUCT(CONEXANT, 0x5098) +#define HDA_CODEC_CX20641 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50a1) +#define HDA_CODEC_CX20642 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50a2) +#define HDA_CODEC_CX20651 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50ab) +#define HDA_CODEC_CX20652 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50ac) +#define HDA_CODEC_CX20664 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50b8) +#define HDA_CODEC_CX20665 HDA_CODEC_CONSTRUCT(CONEXANT, 0x50b9) #define HDA_CODEC_CXXXXX HDA_CODEC_CONSTRUCT(CONEXANT, 0xffff) /* VIA */ @@ -939,7 +949,17 @@ static const struct { { HDA_CODEC_CX20561, "Conexant CX20561 (Hermosa)" }, { HDA_CODEC_CX20582, "Conexant CX20582 (Pebble)" }, { HDA_CODEC_CX20583, "Conexant CX20583 (Pebble HSF)" }, + { HDA_CODEC_CX20584, "Conexant CX20584" }, { HDA_CODEC_CX20585, "Conexant CX20585" }, + { HDA_CODEC_CX20590, "Conexant CX20590" }, + { HDA_CODEC_CX20631, "Conexant CX20631" }, + { HDA_CODEC_CX20632, "Conexant CX20632" }, + { HDA_CODEC_CX20641, "Conexant CX20641" }, + { HDA_CODEC_CX20642, "Conexant CX20642" }, + { HDA_CODEC_CX20651, "Conexant CX20651" }, + { HDA_CODEC_CX20652, "Conexant CX20652" }, + { HDA_CODEC_CX20664, "Conexant CX20664" }, + { HDA_CODEC_CX20665, "Conexant CX20665" }, { HDA_CODEC_VT1708_8, "VIA VT1708_8" }, { HDA_CODEC_VT1708_9, "VIA VT1708_9" }, { HDA_CODEC_VT1708_A, "VIA VT1708_A" }, @@ -4921,6 +4941,25 @@ hdac_vendor_patch_parse(struct hdac_devi if (w != NULL) w->connsenable[0] = 0; break; + case HDA_CODEC_CX20582: + case HDA_CODEC_CX20583: + case HDA_CODEC_CX20584: + case HDA_CODEC_CX20585: + case HDA_CODEC_CX20590: + /* + * These codecs have extra connectivity on record side + * too reach for the present parser. + */ + w = hdac_widget_get(devinfo, 20); + if (w != NULL) + w->connsenable[1] = 0; + w = hdac_widget_get(devinfo, 21); + if (w != NULL) + w->connsenable[1] = 0; + w = hdac_widget_get(devinfo, 22); + if (w != NULL) + w->connsenable[0] = 0; + break; } } From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 20:36:30 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 27B681065676; Mon, 13 Jun 2011 20:36:30 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 15F9B8FC22; Mon, 13 Jun 2011 20:36:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DKaUEA097701; Mon, 13 Jun 2011 20:36:30 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DKaUXY097699; Mon, 13 Jun 2011 20:36:30 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201106132036.p5DKaUXY097699@svn.freebsd.org> From: "Justin T. Gibbs" Date: Mon, 13 Jun 2011 20:36:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223059 - head/sys/dev/xen/blkback X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 20:36:30 -0000 Author: gibbs Date: Mon Jun 13 20:36:29 2011 New Revision: 223059 URL: http://svn.freebsd.org/changeset/base/223059 Log: Several enhancements to the Xen block back driver. sys/dev/xen/blkback/blkback.c: o Implement front-end request coalescing. This greatly improves the performance of front-end clients that are unaware of the dynamic request-size/number of requests negotiation available in the FreeBSD backend driver. This required a large restructuring in how this driver records in-flight transactions and how those transactions are mapped into kernel KVA. For example, the driver now includes a mini "KVA manager" that allocates ranges of contiguous KVA to patches of requests that are physically contiguous in the backing store so that a single bio or UIO segment can be used to represent the I/O. o Refuse to open any backend files or devices if the system has yet to mount root. This avoids a panic. o Properly handle "onlined" devices. An "onlined" backend device stays attached to its backing store across front-end disconnections. This feature is intended to reduce latency when a front-end does a hand-off to another driver (e.g. PV aware bootloader to OS kernel) or during a VM reboot. o Harden the driver against a pathological/buggy front-end by carefully vetting front-end XenStore data such as the front-end state. o Add sysctls that report the negotiated number of segments per-request and the number of requests that can be concurrently in flight. Submitted by: kdm Reviewed by: gibbs Sponsored by: Spectra Logic Corporation MFC after: 1 week Modified: head/sys/dev/xen/blkback/blkback.c Modified: head/sys/dev/xen/blkback/blkback.c ============================================================================== --- head/sys/dev/xen/blkback/blkback.c Mon Jun 13 20:34:12 2011 (r223058) +++ head/sys/dev/xen/blkback/blkback.c Mon Jun 13 20:36:29 2011 (r223059) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2009-2010 Spectra Logic Corporation + * Copyright (c) 2009-2011 Spectra Logic Corporation * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -61,6 +61,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include @@ -153,9 +155,19 @@ MALLOC_DEFINE(M_XENBLOCKBACK, "xbbd", "X #define XBB_MAX_RING_PAGES \ BLKIF_RING_PAGES(BLKIF_SEGS_TO_BLOCKS(XBB_MAX_SEGMENTS_PER_REQUEST) \ * XBB_MAX_REQUESTS) +/** + * The maximum number of ring pages that we can allow per request list. + * We limit this to the maximum number of segments per request, because + * that is already a reasonable number of segments to aggregate. This + * number should never be smaller than XBB_MAX_SEGMENTS_PER_REQUEST, + * because that would leave situations where we can't dispatch even one + * large request. + */ +#define XBB_MAX_SEGMENTS_PER_REQLIST XBB_MAX_SEGMENTS_PER_REQUEST /*--------------------------- Forward Declarations ---------------------------*/ struct xbb_softc; +struct xbb_xen_req; static void xbb_attach_failed(struct xbb_softc *xbb, int err, const char *fmt, ...) __attribute__((format(printf, 3, 4))); @@ -163,16 +175,15 @@ static int xbb_shutdown(struct xbb_soft static int xbb_detach(device_t dev); /*------------------------------ Data Structures -----------------------------*/ -/** - * \brief Object tracking an in-flight I/O from a Xen VBD consumer. - */ -struct xbb_xen_req { - /** - * Linked list links used to aggregate idle request in the - * request free pool (xbb->request_free_slist). - */ - SLIST_ENTRY(xbb_xen_req) links; +STAILQ_HEAD(xbb_xen_req_list, xbb_xen_req); + +typedef enum { + XBB_REQLIST_NONE = 0x00, + XBB_REQLIST_MAPPED = 0x01 +} xbb_reqlist_flags; + +struct xbb_xen_reqlist { /** * Back reference to the parent block back instance for this * request. Used during bio_done handling. @@ -180,17 +191,71 @@ struct xbb_xen_req { struct xbb_softc *xbb; /** - * The remote domain's identifier for this I/O request. + * BLKIF_OP code for this request. + */ + int operation; + + /** + * Set to BLKIF_RSP_* to indicate request status. + * + * This field allows an error status to be recorded even if the + * delivery of this status must be deferred. Deferred reporting + * is necessary, for example, when an error is detected during + * completion processing of one bio when other bios for this + * request are still outstanding. + */ + int status; + + /** + * Number of 512 byte sectors not transferred. + */ + int residual_512b_sectors; + + /** + * Starting sector number of the first request in the list. + */ + off_t starting_sector_number; + + /** + * If we're going to coalesce, the next contiguous sector would be + * this one. + */ + off_t next_contig_sector; + + /** + * Number of child requests in the list. */ - uint64_t id; + int num_children; + + /** + * Number of I/O requests dispatched to the backend. + */ + int pendcnt; + + /** + * Total number of segments for requests in the list. + */ + int nr_segments; + + /** + * Flags for this particular request list. + */ + xbb_reqlist_flags flags; /** * Kernel virtual address space reserved for this request - * structure and used to map the remote domain's pages for + * list structure and used to map the remote domain's pages for * this I/O, into our domain's address space. */ uint8_t *kva; + /** + * Base, psuedo-physical address, corresponding to the start + * of this request's kva region. + */ + uint64_t gnt_base; + + #ifdef XBB_USE_BOUNCE_BUFFERS /** * Pre-allocated domain local memory used to proxy remote @@ -200,53 +265,91 @@ struct xbb_xen_req { #endif /** - * Base, psuedo-physical address, corresponding to the start - * of this request's kva region. + * Array of grant handles (one per page) used to map this request. */ - uint64_t gnt_base; + grant_handle_t *gnt_handles; + + /** + * Device statistics request ordering type (ordered or simple). + */ + devstat_tag_type ds_tag_type; + + /** + * Device statistics request type (read, write, no_data). + */ + devstat_trans_flags ds_trans_type; + + /** + * The start time for this request. + */ + struct bintime ds_t0; + + /** + * Linked list of contiguous requests with the same operation type. + */ + struct xbb_xen_req_list contig_req_list; + + /** + * Linked list links used to aggregate idle requests in the + * request list free pool (xbb->reqlist_free_stailq) and pending + * requests waiting for execution (xbb->reqlist_pending_stailq). + */ + STAILQ_ENTRY(xbb_xen_reqlist) links; +}; + +STAILQ_HEAD(xbb_xen_reqlist_list, xbb_xen_reqlist); + +/** + * \brief Object tracking an in-flight I/O from a Xen VBD consumer. + */ +struct xbb_xen_req { + /** + * Linked list links used to aggregate requests into a reqlist + * and to store them in the request free pool. + */ + STAILQ_ENTRY(xbb_xen_req) links; + + /** + * The remote domain's identifier for this I/O request. + */ + uint64_t id; /** * The number of pages currently mapped for this request. */ - int nr_pages; + int nr_pages; /** * The number of 512 byte sectors comprising this requests. */ - int nr_512b_sectors; + int nr_512b_sectors; /** * The number of struct bio requests still outstanding for this * request on the backend device. This field is only used for * device (rather than file) backed I/O. */ - int pendcnt; + int pendcnt; /** * BLKIF_OP code for this request. */ - int operation; + int operation; /** - * BLKIF_RSP status code for this request. - * - * This field allows an error status to be recorded even if the - * delivery of this status must be deferred. Deferred reporting - * is necessary, for example, when an error is detected during - * completion processing of one bio when other bios for this - * request are still outstanding. + * Storage used for non-native ring requests. */ - int status; + blkif_request_t ring_req_storage; /** - * Device statistics request ordering type (ordered or simple). + * Pointer to the Xen request in the ring. */ - devstat_tag_type ds_tag_type; + blkif_request_t *ring_req; /** - * Device statistics request type (read, write, no_data). + * Consumer index for this request. */ - devstat_trans_flags ds_trans_type; + RING_IDX req_ring_idx; /** * The start time for this request. @@ -254,9 +357,9 @@ struct xbb_xen_req { struct bintime ds_t0; /** - * Array of grant handles (one per page) used to map this request. + * Pointer back to our parent request list. */ - grant_handle_t *gnt_handles; + struct xbb_xen_reqlist *reqlist; }; SLIST_HEAD(xbb_xen_req_slist, xbb_xen_req); @@ -321,7 +424,10 @@ typedef enum XBBF_RESOURCE_SHORTAGE = 0x04, /** Connection teardown in progress. */ - XBBF_SHUTDOWN = 0x08 + XBBF_SHUTDOWN = 0x08, + + /** A thread is already performing shutdown processing. */ + XBBF_IN_SHUTDOWN = 0x10 } xbb_flag_t; /** Backend device type. */ @@ -399,7 +505,7 @@ struct xbb_file_data { * Only a single file based request is outstanding per-xbb instance, * so we only need one of these. */ - struct iovec xiovecs[XBB_MAX_SEGMENTS_PER_REQUEST]; + struct iovec xiovecs[XBB_MAX_SEGMENTS_PER_REQLIST]; #ifdef XBB_USE_BOUNCE_BUFFERS /** @@ -411,7 +517,7 @@ struct xbb_file_data { * bounce-out the read data. This array serves as the temporary * storage for this saved data. */ - struct iovec saved_xiovecs[XBB_MAX_SEGMENTS_PER_REQUEST]; + struct iovec saved_xiovecs[XBB_MAX_SEGMENTS_PER_REQLIST]; /** * \brief Array of memoized bounce buffer kva offsets used @@ -422,7 +528,7 @@ struct xbb_file_data { * the request sg elements is unavoidable. We memoize the computed * bounce address here to reduce the cost of the second walk. */ - void *xiovecs_vaddr[XBB_MAX_SEGMENTS_PER_REQUEST]; + void *xiovecs_vaddr[XBB_MAX_SEGMENTS_PER_REQLIST]; #endif /* XBB_USE_BOUNCE_BUFFERS */ }; @@ -437,9 +543,9 @@ union xbb_backend_data { /** * Function signature of backend specific I/O handlers. */ -typedef int (*xbb_dispatch_t)(struct xbb_softc *xbb, blkif_request_t *ring_req, - struct xbb_xen_req *req, int nseg, - int operation, int flags); +typedef int (*xbb_dispatch_t)(struct xbb_softc *xbb, + struct xbb_xen_reqlist *reqlist, int operation, + int flags); /** * Per-instance configuration data. @@ -467,14 +573,23 @@ struct xbb_softc { xbb_dispatch_t dispatch_io; /** The number of requests outstanding on the backend device/file. */ - u_int active_request_count; + int active_request_count; /** Free pool of request tracking structures. */ - struct xbb_xen_req_slist request_free_slist; + struct xbb_xen_req_list request_free_stailq; /** Array, sized at connection time, of request tracking structures. */ struct xbb_xen_req *requests; + /** Free pool of request list structures. */ + struct xbb_xen_reqlist_list reqlist_free_stailq; + + /** List of pending request lists awaiting execution. */ + struct xbb_xen_reqlist_list reqlist_pending_stailq; + + /** Array, sized at connection time, of request list structures. */ + struct xbb_xen_reqlist *request_lists; + /** * Global pool of kva used for mapping remote domain ring * and I/O transaction data. @@ -487,6 +602,15 @@ struct xbb_softc { /** The size of the global kva pool. */ int kva_size; + /** The size of the KVA area used for request lists. */ + int reqlist_kva_size; + + /** The number of pages of KVA used for request lists */ + int reqlist_kva_pages; + + /** Bitmap of free KVA pages */ + bitstr_t *kva_free; + /** * \brief Cached value of the front-end's domain id. * @@ -508,12 +632,12 @@ struct xbb_softc { int abi; /** - * \brief The maximum number of requests allowed to be in - * flight at a time. + * \brief The maximum number of requests and request lists allowed + * to be in flight at a time. * * This value is negotiated via the XenStore. */ - uint32_t max_requests; + u_int max_requests; /** * \brief The maximum number of segments (1 page per segment) @@ -521,7 +645,15 @@ struct xbb_softc { * * This value is negotiated via the XenStore. */ - uint32_t max_request_segments; + u_int max_request_segments; + + /** + * \brief Maximum number of segments per request list. + * + * This value is derived from and will generally be larger than + * max_request_segments. + */ + u_int max_reqlist_segments; /** * The maximum size of any request to this back-end @@ -529,7 +661,13 @@ struct xbb_softc { * * This value is negotiated via the XenStore. */ - uint32_t max_request_size; + u_int max_request_size; + + /** + * The maximum size of any request list. This is derived directly + * from max_reqlist_segments. + */ + u_int max_reqlist_size; /** Various configuration and state bit flags. */ xbb_flag_t flags; @@ -574,6 +712,7 @@ struct xbb_softc { struct vnode *vn; union xbb_backend_data backend; + /** The native sector size of the backend. */ u_int sector_size; @@ -598,7 +737,14 @@ struct xbb_softc { * * Ring processing is serialized so we only need one of these. */ - struct xbb_sg xbb_sgs[XBB_MAX_SEGMENTS_PER_REQUEST]; + struct xbb_sg xbb_sgs[XBB_MAX_SEGMENTS_PER_REQLIST]; + + /** + * Temporary grant table map used in xbb_dispatch_io(). When + * XBB_MAX_SEGMENTS_PER_REQLIST gets large, keeping this on the + * stack could cause a stack overflow. + */ + struct gnttab_map_grant_ref maps[XBB_MAX_SEGMENTS_PER_REQLIST]; /** Mutex protecting per-instance data. */ struct mtx lock; @@ -614,8 +760,51 @@ struct xbb_softc { int pseudo_phys_res_id; #endif - /** I/O statistics. */ + /** + * I/O statistics from BlockBack dispatch down. These are + * coalesced requests, and we start them right before execution. + */ struct devstat *xbb_stats; + + /** + * I/O statistics coming into BlockBack. These are the requests as + * we get them from BlockFront. They are started as soon as we + * receive a request, and completed when the I/O is complete. + */ + struct devstat *xbb_stats_in; + + /** Disable sending flush to the backend */ + int disable_flush; + + /** Send a real flush for every N flush requests */ + int flush_interval; + + /** Count of flush requests in the interval */ + int flush_count; + + /** Don't coalesce requests if this is set */ + int no_coalesce_reqs; + + /** Number of requests we have received */ + uint64_t reqs_received; + + /** Number of requests we have completed*/ + uint64_t reqs_completed; + + /** How many forced dispatches (i.e. without coalescing) have happend */ + uint64_t forced_dispatch; + + /** How many normal dispatches have happend */ + uint64_t normal_dispatch; + + /** How many total dispatches have happend */ + uint64_t total_dispatch; + + /** How many times we have run out of KVA */ + uint64_t kva_shortages; + + /** How many times we have run out of request structures */ + uint64_t request_shortages; }; /*---------------------------- Request Processing ----------------------------*/ @@ -633,21 +822,14 @@ xbb_get_req(struct xbb_softc *xbb) struct xbb_xen_req *req; req = NULL; - mtx_lock(&xbb->lock); - /* - * Do not allow new requests to be allocated while we - * are shutting down. - */ - if ((xbb->flags & XBBF_SHUTDOWN) == 0) { - if ((req = SLIST_FIRST(&xbb->request_free_slist)) != NULL) { - SLIST_REMOVE_HEAD(&xbb->request_free_slist, links); - xbb->active_request_count++; - } else { - xbb->flags |= XBBF_RESOURCE_SHORTAGE; - } + mtx_assert(&xbb->lock, MA_OWNED); + + if ((req = STAILQ_FIRST(&xbb->request_free_stailq)) != NULL) { + STAILQ_REMOVE_HEAD(&xbb->request_free_stailq, links); + xbb->active_request_count++; } - mtx_unlock(&xbb->lock); + return (req); } @@ -660,34 +842,40 @@ xbb_get_req(struct xbb_softc *xbb) static inline void xbb_release_req(struct xbb_softc *xbb, struct xbb_xen_req *req) { - int wake_thread; + mtx_assert(&xbb->lock, MA_OWNED); - mtx_lock(&xbb->lock); - wake_thread = xbb->flags & XBBF_RESOURCE_SHORTAGE; - xbb->flags &= ~XBBF_RESOURCE_SHORTAGE; - SLIST_INSERT_HEAD(&xbb->request_free_slist, req, links); + STAILQ_INSERT_HEAD(&xbb->request_free_stailq, req, links); xbb->active_request_count--; - if ((xbb->flags & XBBF_SHUTDOWN) != 0) { - /* - * Shutdown is in progress. See if we can - * progress further now that one more request - * has completed and been returned to the - * free pool. - */ - xbb_shutdown(xbb); - } - mtx_unlock(&xbb->lock); + KASSERT(xbb->active_request_count >= 0, + ("xbb_release_req: negative active count")); +} - if (wake_thread != 0) - taskqueue_enqueue(xbb->io_taskqueue, &xbb->io_task); +/** + * Return an xbb_xen_req_list of allocated xbb_xen_reqs to the free pool. + * + * \param xbb Per-instance xbb configuration structure. + * \param req_list The list of requests to free. + * \param nreqs The number of items in the list. + */ +static inline void +xbb_release_reqs(struct xbb_softc *xbb, struct xbb_xen_req_list *req_list, + int nreqs) +{ + mtx_assert(&xbb->lock, MA_OWNED); + + STAILQ_CONCAT(&xbb->request_free_stailq, req_list); + xbb->active_request_count -= nreqs; + + KASSERT(xbb->active_request_count >= 0, + ("xbb_release_reqs: negative active count")); } /** * Given a page index and 512b sector offset within that page, * calculate an offset into a request's kva region. * - * \param req The request structure whose kva region will be accessed. + * \param reqlist The request structure whose kva region will be accessed. * \param pagenr The page index used to compute the kva offset. * \param sector The 512b sector index used to compute the page relative * kva offset. @@ -695,9 +883,9 @@ xbb_release_req(struct xbb_softc *xbb, s * \return The computed global KVA offset. */ static inline uint8_t * -xbb_req_vaddr(struct xbb_xen_req *req, int pagenr, int sector) +xbb_reqlist_vaddr(struct xbb_xen_reqlist *reqlist, int pagenr, int sector) { - return (req->kva + (PAGE_SIZE * pagenr) + (sector << 9)); + return (reqlist->kva + (PAGE_SIZE * pagenr) + (sector << 9)); } #ifdef XBB_USE_BOUNCE_BUFFERS @@ -705,7 +893,7 @@ xbb_req_vaddr(struct xbb_xen_req *req, i * Given a page index and 512b sector offset within that page, * calculate an offset into a request's local bounce memory region. * - * \param req The request structure whose bounce region will be accessed. + * \param reqlist The request structure whose bounce region will be accessed. * \param pagenr The page index used to compute the bounce offset. * \param sector The 512b sector index used to compute the page relative * bounce offset. @@ -713,9 +901,9 @@ xbb_req_vaddr(struct xbb_xen_req *req, i * \return The computed global bounce buffer address. */ static inline uint8_t * -xbb_req_bounce_addr(struct xbb_xen_req *req, int pagenr, int sector) +xbb_reqlist_bounce_addr(struct xbb_xen_reqlist *reqlist, int pagenr, int sector) { - return (req->bounce + (PAGE_SIZE * pagenr) + (sector << 9)); + return (reqlist->bounce + (PAGE_SIZE * pagenr) + (sector << 9)); } #endif @@ -724,7 +912,7 @@ xbb_req_bounce_addr(struct xbb_xen_req * * calculate an offset into the request's memory region that the * underlying backend device/file should use for I/O. * - * \param req The request structure whose I/O region will be accessed. + * \param reqlist The request structure whose I/O region will be accessed. * \param pagenr The page index used to compute the I/O offset. * \param sector The 512b sector index used to compute the page relative * I/O offset. @@ -736,12 +924,12 @@ xbb_req_bounce_addr(struct xbb_xen_req * * this request. */ static inline uint8_t * -xbb_req_ioaddr(struct xbb_xen_req *req, int pagenr, int sector) +xbb_reqlist_ioaddr(struct xbb_xen_reqlist *reqlist, int pagenr, int sector) { #ifdef XBB_USE_BOUNCE_BUFFERS - return (xbb_req_bounce_addr(req, pagenr, sector)); + return (xbb_reqlist_bounce_addr(reqlist, pagenr, sector)); #else - return (xbb_req_vaddr(req, pagenr, sector)); + return (xbb_reqlist_vaddr(reqlist, pagenr, sector)); #endif } @@ -750,7 +938,7 @@ xbb_req_ioaddr(struct xbb_xen_req *req, * an offset into the local psuedo-physical address space used to map a * front-end's request data into a request. * - * \param req The request structure whose pseudo-physical region + * \param reqlist The request list structure whose pseudo-physical region * will be accessed. * \param pagenr The page index used to compute the pseudo-physical offset. * \param sector The 512b sector index used to compute the page relative @@ -763,10 +951,126 @@ xbb_req_ioaddr(struct xbb_xen_req *req, * this request. */ static inline uintptr_t -xbb_req_gntaddr(struct xbb_xen_req *req, int pagenr, int sector) +xbb_get_gntaddr(struct xbb_xen_reqlist *reqlist, int pagenr, int sector) +{ + struct xbb_softc *xbb; + + xbb = reqlist->xbb; + + return ((uintptr_t)(xbb->gnt_base_addr + + (uintptr_t)(reqlist->kva - xbb->kva) + + (PAGE_SIZE * pagenr) + (sector << 9))); +} + +/** + * Get Kernel Virtual Address space for mapping requests. + * + * \param xbb Per-instance xbb configuration structure. + * \param nr_pages Number of pages needed. + * \param check_only If set, check for free KVA but don't allocate it. + * \param have_lock If set, xbb lock is already held. + * + * \return On success, a pointer to the allocated KVA region. Otherwise NULL. + * + * Note: This should be unnecessary once we have either chaining or + * scatter/gather support for struct bio. At that point we'll be able to + * put multiple addresses and lengths in one bio/bio chain and won't need + * to map everything into one virtual segment. + */ +static uint8_t * +xbb_get_kva(struct xbb_softc *xbb, int nr_pages) +{ + intptr_t first_clear, num_clear; + uint8_t *free_kva; + int i; + + KASSERT(nr_pages != 0, ("xbb_get_kva of zero length")); + + first_clear = 0; + free_kva = NULL; + + mtx_lock(&xbb->lock); + + /* + * Look for the first available page. If there are none, we're done. + */ + bit_ffc(xbb->kva_free, xbb->reqlist_kva_pages, &first_clear); + + if (first_clear == -1) + goto bailout; + + /* + * Starting at the first available page, look for consecutive free + * pages that will satisfy the user's request. + */ + for (i = first_clear, num_clear = 0; i < xbb->reqlist_kva_pages; i++) { + /* + * If this is true, the page is used, so we have to reset + * the number of clear pages and the first clear page + * (since it pointed to a region with an insufficient number + * of clear pages). + */ + if (bit_test(xbb->kva_free, i)) { + num_clear = 0; + first_clear = -1; + continue; + } + + if (first_clear == -1) + first_clear = i; + + /* + * If this is true, we've found a large enough free region + * to satisfy the request. + */ + if (++num_clear == nr_pages) { + + bit_nset(xbb->kva_free, first_clear, + first_clear + nr_pages - 1); + + free_kva = xbb->kva + + (uint8_t *)(first_clear * PAGE_SIZE); + + KASSERT(free_kva >= (uint8_t *)xbb->kva && + free_kva + (nr_pages * PAGE_SIZE) <= + (uint8_t *)xbb->ring_config.va, + ("Free KVA %p len %d out of range, " + "kva = %#jx, ring VA = %#jx\n", free_kva, + nr_pages * PAGE_SIZE, (uintmax_t)xbb->kva, + (uintmax_t)xbb->ring_config.va)); + break; + } + } + +bailout: + + if (free_kva == NULL) { + xbb->flags |= XBBF_RESOURCE_SHORTAGE; + xbb->kva_shortages++; + } + + mtx_unlock(&xbb->lock); + + return (free_kva); +} + +/** + * Free allocated KVA. + * + * \param xbb Per-instance xbb configuration structure. + * \param kva_ptr Pointer to allocated KVA region. + * \param nr_pages Number of pages in the KVA region. + */ +static void +xbb_free_kva(struct xbb_softc *xbb, uint8_t *kva_ptr, int nr_pages) { - return ((uintptr_t)(req->gnt_base - + (PAGE_SIZE * pagenr) + (sector << 9))); + intptr_t start_page; + + mtx_assert(&xbb->lock, MA_OWNED); + + start_page = (intptr_t)(kva_ptr - xbb->kva) >> PAGE_SHIFT; + bit_nclear(xbb->kva_free, start_page, start_page + nr_pages - 1); + } /** @@ -775,23 +1079,23 @@ xbb_req_gntaddr(struct xbb_xen_req *req, * \param req The request structure to unmap. */ static void -xbb_unmap_req(struct xbb_xen_req *req) +xbb_unmap_reqlist(struct xbb_xen_reqlist *reqlist) { - struct gnttab_unmap_grant_ref unmap[XBB_MAX_SEGMENTS_PER_REQUEST]; + struct gnttab_unmap_grant_ref unmap[XBB_MAX_SEGMENTS_PER_REQLIST]; u_int i; u_int invcount; int error; invcount = 0; - for (i = 0; i < req->nr_pages; i++) { + for (i = 0; i < reqlist->nr_segments; i++) { - if (req->gnt_handles[i] == GRANT_REF_INVALID) + if (reqlist->gnt_handles[i] == GRANT_REF_INVALID) continue; - unmap[invcount].host_addr = xbb_req_gntaddr(req, i, 0); + unmap[invcount].host_addr = xbb_get_gntaddr(reqlist, i, 0); unmap[invcount].dev_bus_addr = 0; - unmap[invcount].handle = req->gnt_handles[i]; - req->gnt_handles[i] = GRANT_REF_INVALID; + unmap[invcount].handle = reqlist->gnt_handles[i]; + reqlist->gnt_handles[i] = GRANT_REF_INVALID; invcount++; } @@ -801,6 +1105,175 @@ xbb_unmap_req(struct xbb_xen_req *req) } /** + * Allocate an internal transaction tracking structure from the free pool. + * + * \param xbb Per-instance xbb configuration structure. + * + * \return On success, a pointer to the allocated xbb_xen_reqlist structure. + * Otherwise NULL. + */ +static inline struct xbb_xen_reqlist * +xbb_get_reqlist(struct xbb_softc *xbb) +{ + struct xbb_xen_reqlist *reqlist; + + reqlist = NULL; + + mtx_assert(&xbb->lock, MA_OWNED); + + if ((reqlist = STAILQ_FIRST(&xbb->reqlist_free_stailq)) != NULL) { + + STAILQ_REMOVE_HEAD(&xbb->reqlist_free_stailq, links); + reqlist->flags = XBB_REQLIST_NONE; + reqlist->kva = NULL; + reqlist->status = BLKIF_RSP_OKAY; + reqlist->residual_512b_sectors = 0; + reqlist->num_children = 0; + reqlist->nr_segments = 0; + STAILQ_INIT(&reqlist->contig_req_list); + } + + return (reqlist); +} + +/** + * Return an allocated transaction tracking structure to the free pool. + * + * \param xbb Per-instance xbb configuration structure. + * \param req The request list structure to free. + * \param wakeup If set, wakeup the work thread if freeing this reqlist + * during a resource shortage condition. + */ +static inline void +xbb_release_reqlist(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist, + int wakeup) +{ + + mtx_lock(&xbb->lock); + + if (wakeup) { + wakeup = xbb->flags & XBBF_RESOURCE_SHORTAGE; + xbb->flags &= ~XBBF_RESOURCE_SHORTAGE; + } + + if (reqlist->kva != NULL) + xbb_free_kva(xbb, reqlist->kva, reqlist->nr_segments); + + xbb_release_reqs(xbb, &reqlist->contig_req_list, reqlist->num_children); + + STAILQ_INSERT_TAIL(&xbb->reqlist_free_stailq, reqlist, links); + + if ((xbb->flags & XBBF_SHUTDOWN) != 0) { + /* + * Shutdown is in progress. See if we can + * progress further now that one more request + * has completed and been returned to the + * free pool. + */ + xbb_shutdown(xbb); + } + + mtx_unlock(&xbb->lock); + + if (wakeup != 0) + taskqueue_enqueue(xbb->io_taskqueue, &xbb->io_task); +} + +/** + * Request resources and do basic request setup. + * + * \param xbb Per-instance xbb configuration structure. + * \param reqlist Pointer to reqlist pointer. + * \param ring_req Pointer to a block ring request. + * \param ring_index The ring index of this request. + * + * \return 0 for success, non-zero for failure. + */ +static int +xbb_get_resources(struct xbb_softc *xbb, struct xbb_xen_reqlist **reqlist, + blkif_request_t *ring_req, RING_IDX ring_idx) +{ + struct xbb_xen_reqlist *nreqlist; + struct xbb_xen_req *nreq; + + nreqlist = NULL; + nreq = NULL; + + mtx_lock(&xbb->lock); + + /* + * We don't allow new resources to be allocated if we're in the + * process of shutting down. + */ + if ((xbb->flags & XBBF_SHUTDOWN) != 0) { + mtx_unlock(&xbb->lock); + return (1); + } + + /* + * Allocate a reqlist if the caller doesn't have one already. + */ + if (*reqlist == NULL) { + nreqlist = xbb_get_reqlist(xbb); + if (nreqlist == NULL) + goto bailout_error; + } + + /* We always allocate a request. */ + nreq = xbb_get_req(xbb); + if (nreq == NULL) + goto bailout_error; + + mtx_unlock(&xbb->lock); + + if (*reqlist == NULL) { + *reqlist = nreqlist; + nreqlist->operation = ring_req->operation; + nreqlist->starting_sector_number = ring_req->sector_number; + STAILQ_INSERT_TAIL(&xbb->reqlist_pending_stailq, nreqlist, + links); + } + + nreq->reqlist = *reqlist; + nreq->req_ring_idx = ring_idx; + + if (xbb->abi != BLKIF_PROTOCOL_NATIVE) { + bcopy(ring_req, &nreq->ring_req_storage, sizeof(*ring_req)); + nreq->ring_req = &nreq->ring_req_storage; + } else { + nreq->ring_req = ring_req; + } + + binuptime(&nreq->ds_t0); + devstat_start_transaction(xbb->xbb_stats_in, &nreq->ds_t0); + STAILQ_INSERT_TAIL(&(*reqlist)->contig_req_list, nreq, links); + (*reqlist)->num_children++; + (*reqlist)->nr_segments += ring_req->nr_segments; + + return (0); + +bailout_error: + + /* + * We're out of resources, so set the shortage flag. The next time + * a request is released, we'll try waking up the work thread to + * see if we can allocate more resources. + */ + xbb->flags |= XBBF_RESOURCE_SHORTAGE; + xbb->request_shortages++; + + if (nreq != NULL) + xbb_release_req(xbb, nreq); + + mtx_unlock(&xbb->lock); + + if (nreqlist != NULL) + xbb_release_reqlist(xbb, nreqlist, /*wakeup*/ 0); + + return (1); +} + +/** * Create and transmit a response to a blkif request. * * \param xbb Per-instance xbb configuration structure. @@ -862,6 +1335,8 @@ xbb_send_response(struct xbb_softc *xbb, more_to_do = 1; } + xbb->reqs_completed++; + mtx_unlock(&xbb->lock); if (more_to_do) @@ -872,6 +1347,70 @@ xbb_send_response(struct xbb_softc *xbb, } /** + * Complete a request list. + * + * \param xbb Per-instance xbb configuration structure. + * \param reqlist Allocated internal request list structure. + */ +static void +xbb_complete_reqlist(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist) +{ + struct xbb_xen_req *nreq; + off_t sectors_sent; + + sectors_sent = 0; + + if (reqlist->flags & XBB_REQLIST_MAPPED) + xbb_unmap_reqlist(reqlist); + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 21:03:27 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DFCB71065670; Mon, 13 Jun 2011 21:03:27 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CDED48FC0C; Mon, 13 Jun 2011 21:03:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DL3RoK098595; Mon, 13 Jun 2011 21:03:27 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DL3Rj4098571; Mon, 13 Jun 2011 21:03:27 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106132103.p5DL3Rj4098571@svn.freebsd.org> From: Jilles Tjoelker Date: Mon, 13 Jun 2011 21:03:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223060 - in head/bin/sh: . bltin X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 21:03:28 -0000 Author: jilles Date: Mon Jun 13 21:03:27 2011 New Revision: 223060 URL: http://svn.freebsd.org/changeset/base/223060 Log: sh: Fix duplicate prototypes for builtins. Have mkbuiltins write the prototypes for the *cmd functions to builtins.h instead of builtins.c and include builtins.h in more .c files instead of duplicating prototypes for *cmd functions in other headers. Modified: head/bin/sh/alias.c head/bin/sh/alias.h head/bin/sh/arith.h head/bin/sh/bltin/bltin.h head/bin/sh/cd.c head/bin/sh/cd.h head/bin/sh/eval.h head/bin/sh/exec.h head/bin/sh/expand.c head/bin/sh/expand.h head/bin/sh/histedit.c head/bin/sh/jobs.c head/bin/sh/jobs.h head/bin/sh/main.c head/bin/sh/main.h head/bin/sh/mkbuiltins head/bin/sh/myhistedit.h head/bin/sh/options.c head/bin/sh/options.h head/bin/sh/trap.c head/bin/sh/trap.h head/bin/sh/var.c head/bin/sh/var.h Modified: head/bin/sh/alias.c ============================================================================== --- head/bin/sh/alias.c Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/alias.c Mon Jun 13 21:03:27 2011 (r223060) @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "alias.h" #include "options.h" /* XXX for argptr (should remove?) */ +#include "builtins.h" #define ATABSIZE 39 Modified: head/bin/sh/alias.h ============================================================================== --- head/bin/sh/alias.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/alias.h Mon Jun 13 21:03:27 2011 (r223060) @@ -43,5 +43,3 @@ struct alias { }; struct alias *lookupalias(const char *, int); -int aliascmd(int, char **); -int unaliascmd(int, char **); Modified: head/bin/sh/arith.h ============================================================================== --- head/bin/sh/arith.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/arith.h Mon Jun 13 21:03:27 2011 (r223060) @@ -36,4 +36,3 @@ arith_t arith(const char *); void arith_lex_reset(void); -int expcmd(int, char **); Modified: head/bin/sh/bltin/bltin.h ============================================================================== --- head/bin/sh/bltin/bltin.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/bltin/bltin.h Mon Jun 13 21:03:27 2011 (r223060) @@ -43,6 +43,7 @@ #include "../mystring.h" #ifdef SHELL #include "../output.h" +#include "builtins.h" #define FILE struct output #undef stdout #define stdout out1 @@ -75,7 +76,4 @@ pointer stalloc(int); void error(const char *, ...) __printf0like(1, 2); pid_t getjobpgrp(char *); -int echocmd(int, char **); -int testcmd(int, char **); - extern char *commandname; Modified: head/bin/sh/cd.c ============================================================================== --- head/bin/sh/cd.c Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/cd.c Mon Jun 13 21:03:27 2011 (r223060) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "show.h" #include "cd.h" +#include "builtins.h" static int cdlogical(char *); static int cdphysical(char *); Modified: head/bin/sh/cd.h ============================================================================== --- head/bin/sh/cd.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/cd.h Mon Jun 13 21:03:27 2011 (r223060) @@ -30,5 +30,3 @@ */ void pwd_init(int); -int cdcmd (int, char **); -int pwdcmd(int, char **); Modified: head/bin/sh/eval.h ============================================================================== --- head/bin/sh/eval.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/eval.h Mon Jun 13 21:03:27 2011 (r223060) @@ -51,19 +51,10 @@ struct backcmd { /* result of evalbackc #define EV_TESTED 02 /* exit status is checked; ignore -e flag */ #define EV_BACKCMD 04 /* command executing within back quotes */ -int evalcmd(int, char **); void evalstring(char *, int); union node; /* BLETCH for ansi C */ void evaltree(union node *, int); void evalbackcmd(union node *, struct backcmd *); -int bltincmd(int, char **); -int breakcmd(int, char **); -int returncmd(int, char **); -int falsecmd(int, char **); -int truecmd(int, char **); -int execcmd(int, char **); -int timescmd(int, char **); -int commandcmd(int, char **); /* in_function returns nonzero if we are currently evaluating a function */ #define in_function() funcnest Modified: head/bin/sh/exec.h ============================================================================== --- head/bin/sh/exec.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/exec.h Mon Jun 13 21:03:27 2011 (r223060) @@ -66,7 +66,6 @@ extern int exerrno; /* last exec error void shellexec(char **, char **, const char *, int) __dead2; char *padvance(const char **, const char *); -int hashcmd(int, char **); void find_command(const char *, struct cmdentry *, int, const char *); int find_builtin(const char *, int *); void hashcd(void); @@ -75,5 +74,4 @@ void addcmdentry(const char *, struct cm void defun(const char *, union node *); int unsetfunc(const char *); int typecmd_impl(int, char **, int, const char *); -int typecmd(int, char **); void clearcmdentry(void); Modified: head/bin/sh/expand.c ============================================================================== --- head/bin/sh/expand.c Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/expand.c Mon Jun 13 21:03:27 2011 (r223060) @@ -76,6 +76,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "arith.h" #include "show.h" +#include "builtins.h" /* * Structure specifying which parts of the string should be searched Modified: head/bin/sh/expand.h ============================================================================== --- head/bin/sh/expand.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/expand.h Mon Jun 13 21:03:27 2011 (r223060) @@ -63,4 +63,3 @@ void expari(int); int patmatch(const char *, const char *, int); void rmescapes(char *); int casematch(union node *, const char *); -int wordexpcmd(int, char **); Modified: head/bin/sh/histedit.c ============================================================================== --- head/bin/sh/histedit.c Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/histedit.c Mon Jun 13 21:03:27 2011 (r223060) @@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "eval.h" #include "memalloc.h" +#include "builtins.h" #define MAXHISTLOOPS 4 /* max recursions through fc */ #define DEFEDITOR "ed" /* default editor *should* be $EDITOR */ Modified: head/bin/sh/jobs.c ============================================================================== --- head/bin/sh/jobs.c Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/jobs.c Mon Jun 13 21:03:27 2011 (r223060) @@ -71,6 +71,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "mystring.h" #include "var.h" +#include "builtins.h" static struct job *jobtab; /* array of jobs */ Modified: head/bin/sh/jobs.h ============================================================================== --- head/bin/sh/jobs.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/jobs.h Mon Jun 13 21:03:27 2011 (r223060) @@ -88,12 +88,7 @@ extern int in_dowait; /* are we in dowa extern volatile sig_atomic_t breakwaitcmd; /* break wait to process traps? */ void setjobctl(int); -int fgcmd(int, char **); -int bgcmd(int, char **); -int jobscmd(int, char **); void showjobs(int, int); -int waitcmd(int, char **); -int jobidcmd(int, char **); struct job *makejob(union node *, int); pid_t forkshell(struct job *, union node *, int); int waitforjob(struct job *, int *); Modified: head/bin/sh/main.c ============================================================================== --- head/bin/sh/main.c Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/main.c Mon Jun 13 21:03:27 2011 (r223060) @@ -72,6 +72,7 @@ __FBSDID("$FreeBSD$"); #include "mystring.h" #include "exec.h" #include "cd.h" +#include "builtins.h" int rootpid; int rootshell; Modified: head/bin/sh/main.h ============================================================================== --- head/bin/sh/main.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/main.h Mon Jun 13 21:03:27 2011 (r223060) @@ -39,5 +39,3 @@ extern struct jmploc main_handler; /* to void readcmdfile(const char *); void cmdloop(int); -int dotcmd(int, char **); -int exitcmd(int, char **); Modified: head/bin/sh/mkbuiltins ============================================================================== --- head/bin/sh/mkbuiltins Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/mkbuiltins Mon Jun 13 21:03:27 2011 (r223060) @@ -58,9 +58,7 @@ cat <<\! ! awk '/^[^#]/ {if(('$havejobs' || $2 != "-j") && ('$havehist' || $2 != "-h")) \ print $0}' builtins.def | sed 's/-[hj]//' > $temp -awk '{ printf "int %s(int, char **);\n", $1}' $temp -echo ' -int (*const builtinfunc[])(int, char **) = {' +echo 'int (*const builtinfunc[])(int, char **) = {' awk '/^[^#]/ { printf "\t%s,\n", $1}' $temp echo '}; @@ -94,5 +92,7 @@ struct builtincmd { }; extern int (*const builtinfunc[])(int, char **); -extern const struct builtincmd builtincmd[];' +extern const struct builtincmd builtincmd[]; +' +awk '{ printf "int %s(int, char **);\n", $1}' $temp rm -f $temp Modified: head/bin/sh/myhistedit.h ============================================================================== --- head/bin/sh/myhistedit.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/myhistedit.h Mon Jun 13 21:03:27 2011 (r223060) @@ -39,8 +39,6 @@ extern int displayhist; void histedit(void); void sethistsize(const char *); void setterm(const char *); -int histcmd(int, char **); int not_fcnumber(const char *); int str_to_event(const char *, int); -int bindcmd(int, char **); Modified: head/bin/sh/options.c ============================================================================== --- head/bin/sh/options.c Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/options.c Mon Jun 13 21:03:27 2011 (r223060) @@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$"); #include "memalloc.h" #include "error.h" #include "mystring.h" +#include "builtins.h" #ifndef NO_HISTORY #include "myhistedit.h" #endif Modified: head/bin/sh/options.h ============================================================================== --- head/bin/sh/options.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/options.h Mon Jun 13 21:03:27 2011 (r223060) @@ -108,8 +108,5 @@ void procargs(int, char **); void optschanged(void); void setparam(char **); void freeparam(struct shparam *); -int shiftcmd(int, char **); -int setcmd(int, char **); -int getoptscmd(int, char **); int nextopt(const char *); void getoptsreset(const char *); Modified: head/bin/sh/trap.c ============================================================================== --- head/bin/sh/trap.c Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/trap.c Mon Jun 13 21:03:27 2011 (r223060) @@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "trap.h" #include "mystring.h" +#include "builtins.h" #include "myhistedit.h" Modified: head/bin/sh/trap.h ============================================================================== --- head/bin/sh/trap.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/trap.h Mon Jun 13 21:03:27 2011 (r223060) @@ -37,7 +37,6 @@ extern int pendingsigs; extern int in_dotrap; extern volatile sig_atomic_t gotwinch; -int trapcmd(int, char **); void clear_traps(void); int have_traps(void); void setsignal(int); Modified: head/bin/sh/var.c ============================================================================== --- head/bin/sh/var.c Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/var.c Mon Jun 13 21:03:27 2011 (r223060) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include "error.h" #include "mystring.h" #include "parser.h" +#include "builtins.h" #ifndef NO_HISTORY #include "myhistedit.h" #endif Modified: head/bin/sh/var.h ============================================================================== --- head/bin/sh/var.h Mon Jun 13 20:36:29 2011 (r223059) +++ head/bin/sh/var.h Mon Jun 13 21:03:27 2011 (r223060) @@ -123,11 +123,7 @@ void updatecharset(void); void initcharset(void); char **environment(void); int showvarscmd(int, char **); -int exportcmd(int, char **); -int localcmd(int, char **); void mklocal(char *); void poplocalvars(void); -int setvarcmd(int, char **); -int unsetcmd(int, char **); int unsetvar(const char *); int setvarsafe(const char *, const char *, int); From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 21:21:03 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 08557106564A; Mon, 13 Jun 2011 21:21:03 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D2D8C8FC15; Mon, 13 Jun 2011 21:21:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DLL2K3099155; Mon, 13 Jun 2011 21:21:02 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DLL2Fp099153; Mon, 13 Jun 2011 21:21:02 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201106132121.p5DLL2Fp099153@svn.freebsd.org> From: "Justin T. Gibbs" Date: Mon, 13 Jun 2011 21:21:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223061 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 21:21:03 -0000 Author: gibbs Date: Mon Jun 13 21:21:02 2011 New Revision: 223061 URL: http://svn.freebsd.org/changeset/base/223061 Log: Fix a couple of race conditions in devstat(9) initialization. In devstat_new_entry(), there is no need to initialize the queue and the mutex in this function. There are ways to do static initialization on both, so use STAILQ_HEAD_INITIALIZER and MTX_SYSINIT to initialize the queue and the mutex. In devstat_alloc(), use an atomic test and set routine to guard making our entry in /dev. Using just a plain static variable creates a race condition on multiprocessor machines. If you attempt to create a second entry in devfs, the kernel will panic. Submitted by: kdm Reviewed by: gibbs Sponsored by: Spectra Logic Corporation MFC after: 1 week. Modified: head/sys/kern/subr_devstat.c Modified: head/sys/kern/subr_devstat.c ============================================================================== --- head/sys/kern/subr_devstat.c Mon Jun 13 21:03:27 2011 (r223060) +++ head/sys/kern/subr_devstat.c Mon Jun 13 21:21:02 2011 (r223061) @@ -49,8 +49,9 @@ static long devstat_generation = 1; static int devstat_version = DEVSTAT_VERSION; static int devstat_current_devnumber; static struct mtx devstat_mutex; +MTX_SYSINIT(devstat_mutex, &devstat_mutex, "devstat", MTX_DEF); -static struct devstatlist device_statq; +static struct devstatlist device_statq = STAILQ_HEAD_INITIALIZER(device_statq); static struct devstat *devstat_alloc(void); static void devstat_free(struct devstat *); static void devstat_add_entry(struct devstat *ds, const void *dev_name, @@ -70,13 +71,7 @@ devstat_new_entry(const void *dev_name, devstat_priority priority) { struct devstat *ds; - static int once; - if (!once) { - STAILQ_INIT(&device_statq); - mtx_init(&devstat_mutex, "devstat", NULL, MTX_DEF); - once = 1; - } mtx_assert(&devstat_mutex, MA_NOTOWNED); ds = devstat_alloc(); @@ -475,10 +470,9 @@ devstat_alloc(void) static int once; mtx_assert(&devstat_mutex, MA_NOTOWNED); - if (!once) { + if (!once && atomic_cmpset_int(&once, 0, 1)) { make_dev_credf(MAKEDEV_ETERNAL, &devstat_cdevsw, 0, NULL, UID_ROOT, GID_WHEEL, 0400, DEVSTAT_DEVICE_NAME); - once = 1; } spp2 = NULL; mtx_lock(&devstat_mutex); From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 21:31:55 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CBDD7106564A; Mon, 13 Jun 2011 21:31:55 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 42B0D8FC0C; Mon, 13 Jun 2011 21:31:54 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id p5DLVopn005593 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 14 Jun 2011 00:31:50 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id p5DLVoot057620; Tue, 14 Jun 2011 00:31:50 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id p5DLVo1x057619; Tue, 14 Jun 2011 00:31:50 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Tue, 14 Jun 2011 00:31:50 +0300 From: Kostik Belousov To: "Justin T. Gibbs" Message-ID: <20110613213150.GC48734@deviant.kiev.zoral.com.ua> References: <201106132121.p5DLL2Fp099153@svn.freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="KCLJDKHmrU6/EDiO" Content-Disposition: inline In-Reply-To: <201106132121.p5DLL2Fp099153@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-3.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223061 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 21:31:55 -0000 --KCLJDKHmrU6/EDiO Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Jun 13, 2011 at 09:21:02PM +0000, Justin T. Gibbs wrote: > Author: gibbs > Date: Mon Jun 13 21:21:02 2011 > New Revision: 223061 > URL: http://svn.freebsd.org/changeset/base/223061 >=20 > Log: > Fix a couple of race conditions in devstat(9) initialization. > =20 > In devstat_new_entry(), there is no need to initialize the queue > and the mutex in this function. There are ways to do static > initialization on both, so use STAILQ_HEAD_INITIALIZER and > MTX_SYSINIT to initialize the queue and the mutex. > =20 > In devstat_alloc(), use an atomic test and set routine to guard > making our entry in /dev. Using just a plain static variable > creates a race condition on multiprocessor machines. If you > attempt to create a second entry in devfs, the kernel will panic. Devfs returns an error if MAKEDEV_CHECKNAME flag is supplied and attempt is made to create the existing node. The static guard is still useful, since make_dev() call is costly, but you can remove the atomic, since the race should be of limited scope. --KCLJDKHmrU6/EDiO Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (FreeBSD) iEYEARECAAYFAk32gcYACgkQC3+MBN1Mb4j2AwCdG+xcxM5g23Quq4ZSM+zqvkYF BZcAoOWLa7gs2VQMuVGQXU5x3BJwumQF =0ZGG -----END PGP SIGNATURE----- --KCLJDKHmrU6/EDiO-- From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 22:08:24 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A1785106566C; Mon, 13 Jun 2011 22:08:24 +0000 (UTC) (envelope-from ken@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 918308FC13; Mon, 13 Jun 2011 22:08:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5DM8OQ7000932; Mon, 13 Jun 2011 22:08:24 GMT (envelope-from ken@svn.freebsd.org) Received: (from ken@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5DM8OZ1000930; Mon, 13 Jun 2011 22:08:24 GMT (envelope-from ken@svn.freebsd.org) Message-Id: <201106132208.p5DM8OZ1000930@svn.freebsd.org> From: "Kenneth D. Merry" Date: Mon, 13 Jun 2011 22:08:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223062 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 22:08:24 -0000 Author: ken Date: Mon Jun 13 22:08:24 2011 New Revision: 223062 URL: http://svn.freebsd.org/changeset/base/223062 Log: Instead of using an atomic operation to determine whether the devstat(9) device node has been created, pass MAKEDEV_CHECKNAME in so that the devfs code will do the check. Use a regular static variable as before, that's good enough to keep us from calling into devfs most of the time. Suggested by: kib MFC after: 1 week Sponsored by: Spectra Logic Corporation Modified: head/sys/kern/subr_devstat.c Modified: head/sys/kern/subr_devstat.c ============================================================================== --- head/sys/kern/subr_devstat.c Mon Jun 13 21:21:02 2011 (r223061) +++ head/sys/kern/subr_devstat.c Mon Jun 13 22:08:24 2011 (r223062) @@ -470,9 +470,11 @@ devstat_alloc(void) static int once; mtx_assert(&devstat_mutex, MA_NOTOWNED); - if (!once && atomic_cmpset_int(&once, 0, 1)) { - make_dev_credf(MAKEDEV_ETERNAL, &devstat_cdevsw, 0, NULL, - UID_ROOT, GID_WHEEL, 0400, DEVSTAT_DEVICE_NAME); + if (!once) { + make_dev_credf(MAKEDEV_ETERNAL | MAKEDEV_CHECKNAME, + &devstat_cdevsw, 0, NULL, UID_ROOT, GID_WHEEL, 0400, + DEVSTAT_DEVICE_NAME); + once = 1; } spp2 = NULL; mtx_lock(&devstat_mutex); From owner-svn-src-all@FreeBSD.ORG Mon Jun 13 22:09:53 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A82F41065675; Mon, 13 Jun 2011 22:09:53 +0000 (UTC) (envelope-from ken@kdm.org) Received: from nargothrond.kdm.org (nargothrond.kdm.org [70.56.43.81]) by mx1.freebsd.org (Postfix) with ESMTP id 719B98FC14; Mon, 13 Jun 2011 22:09:53 +0000 (UTC) Received: from nargothrond.kdm.org (localhost [127.0.0.1]) by nargothrond.kdm.org (8.14.2/8.14.2) with ESMTP id p5DM9q2b049010; Mon, 13 Jun 2011 16:09:52 -0600 (MDT) (envelope-from ken@nargothrond.kdm.org) Received: (from ken@localhost) by nargothrond.kdm.org (8.14.2/8.14.2/Submit) id p5DM9qmd049009; Mon, 13 Jun 2011 16:09:52 -0600 (MDT) (envelope-from ken) Date: Mon, 13 Jun 2011 16:09:52 -0600 From: "Kenneth D. Merry" To: Kostik Belousov Message-ID: <20110613220952.GA47928@nargothrond.kdm.org> References: <201106132121.p5DLL2Fp099153@svn.freebsd.org> <20110613213150.GC48734@deviant.kiev.zoral.com.ua> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110613213150.GC48734@deviant.kiev.zoral.com.ua> User-Agent: Mutt/1.4.2i Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, "Justin T. Gibbs" , src-committers@FreeBSD.org Subject: Re: svn commit: r223061 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2011 22:09:53 -0000 On Tue, Jun 14, 2011 at 00:31:50 +0300, Kostik Belousov wrote: > On Mon, Jun 13, 2011 at 09:21:02PM +0000, Justin T. Gibbs wrote: > > Author: gibbs > > Date: Mon Jun 13 21:21:02 2011 > > New Revision: 223061 > > URL: http://svn.freebsd.org/changeset/base/223061 > > > > Log: > > Fix a couple of race conditions in devstat(9) initialization. > > > > In devstat_new_entry(), there is no need to initialize the queue > > and the mutex in this function. There are ways to do static > > initialization on both, so use STAILQ_HEAD_INITIALIZER and > > MTX_SYSINIT to initialize the queue and the mutex. > > > > In devstat_alloc(), use an atomic test and set routine to guard > > making our entry in /dev. Using just a plain static variable > > creates a race condition on multiprocessor machines. If you > > attempt to create a second entry in devfs, the kernel will panic. > Devfs returns an error if MAKEDEV_CHECKNAME flag is supplied and > attempt is made to create the existing node. The static guard is > still useful, since make_dev() call is costly, but you can remove > the atomic, since the race should be of limited scope. Done, thanks for the suggestion! Ken -- Kenneth Merry ken@FreeBSD.org From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 03:55:18 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B45A3106564A; Tue, 14 Jun 2011 03:55:18 +0000 (UTC) (envelope-from gshapiro@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A0E6D8FC08; Tue, 14 Jun 2011 03:55:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E3tI7r012099; Tue, 14 Jun 2011 03:55:18 GMT (envelope-from gshapiro@svn.freebsd.org) Received: (from gshapiro@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E3tI2Y012082; Tue, 14 Jun 2011 03:55:18 GMT (envelope-from gshapiro@svn.freebsd.org) Message-Id: <201106140355.p5E3tI2Y012082@svn.freebsd.org> From: Gregory Neil Shapiro Date: Tue, 14 Jun 2011 03:55:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223063 - in vendor/sendmail/dist: . cf/cf cf/feature cf/m4 cf/ostype contrib devtools/OS doc/op include/sm libmilter libmilter/docs libsm makemap src X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 03:55:18 -0000 Author: gshapiro Date: Tue Jun 14 03:55:17 2011 New Revision: 223063 URL: http://svn.freebsd.org/changeset/base/223063 Log: Import sendmail 8.14.5 Added: vendor/sendmail/dist/cf/ostype/solaris11.m4 (contents, props changed) vendor/sendmail/dist/devtools/OS/Darwin.10.x (contents, props changed) Modified: vendor/sendmail/dist/CACerts vendor/sendmail/dist/KNOWNBUGS vendor/sendmail/dist/LICENSE vendor/sendmail/dist/PGPKEYS vendor/sendmail/dist/RELEASE_NOTES vendor/sendmail/dist/cf/cf/generic-bsd4.4.cf vendor/sendmail/dist/cf/cf/generic-hpux10.cf vendor/sendmail/dist/cf/cf/generic-hpux9.cf vendor/sendmail/dist/cf/cf/generic-linux.cf vendor/sendmail/dist/cf/cf/generic-mpeix.cf vendor/sendmail/dist/cf/cf/generic-nextstep3.3.cf vendor/sendmail/dist/cf/cf/generic-osf1.cf vendor/sendmail/dist/cf/cf/generic-solaris.cf vendor/sendmail/dist/cf/cf/generic-sunos4.1.cf vendor/sendmail/dist/cf/cf/generic-ultrix4.cf vendor/sendmail/dist/cf/cf/submit.cf vendor/sendmail/dist/cf/feature/ldap_routing.m4 vendor/sendmail/dist/cf/m4/cfhead.m4 vendor/sendmail/dist/cf/m4/proto.m4 vendor/sendmail/dist/cf/m4/version.m4 vendor/sendmail/dist/contrib/qtool.pl vendor/sendmail/dist/doc/op/op.me vendor/sendmail/dist/doc/op/op.ps vendor/sendmail/dist/include/sm/conf.h vendor/sendmail/dist/libmilter/docs/overview.html vendor/sendmail/dist/libmilter/docs/smfi_stop.html vendor/sendmail/dist/libmilter/docs/xxfi_envrcpt.html vendor/sendmail/dist/libmilter/engine.c vendor/sendmail/dist/libmilter/sm_gethost.c vendor/sendmail/dist/libmilter/worker.c vendor/sendmail/dist/libsm/ldap.c vendor/sendmail/dist/makemap/makemap.c vendor/sendmail/dist/src/Makefile.m4 vendor/sendmail/dist/src/conf.c vendor/sendmail/dist/src/daemon.c vendor/sendmail/dist/src/deliver.c vendor/sendmail/dist/src/domain.c vendor/sendmail/dist/src/envelope.c vendor/sendmail/dist/src/err.c vendor/sendmail/dist/src/main.c vendor/sendmail/dist/src/map.c vendor/sendmail/dist/src/mci.c vendor/sendmail/dist/src/parseaddr.c vendor/sendmail/dist/src/queue.c vendor/sendmail/dist/src/readcf.c vendor/sendmail/dist/src/sendmail.0 vendor/sendmail/dist/src/sendmail.8 vendor/sendmail/dist/src/sendmail.h vendor/sendmail/dist/src/sm_resolve.c vendor/sendmail/dist/src/srvrsmtp.c vendor/sendmail/dist/src/tls.c vendor/sendmail/dist/src/udb.c vendor/sendmail/dist/src/usersmtp.c vendor/sendmail/dist/src/version.c Modified: vendor/sendmail/dist/CACerts ============================================================================== --- vendor/sendmail/dist/CACerts Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/CACerts Tue Jun 14 03:55:17 2011 (r223063) @@ -1,4 +1,4 @@ -# $Id: CACerts,v 8.4 2009/06/26 05:46:10 ca Exp $ +# $Id: CACerts,v 8.5 2011/05/06 23:05:10 ca Exp $ # This file contains some CA certificates that are used to sign the # certificates of mail servers of members of the sendmail consortium # who may reply to questions etc sent to sendmail.org. @@ -9,73 +9,6 @@ Certificate: Data: Version: 3 (0x2) - Serial Number: 0 (0x0) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=US, ST=Illinois, L=De Kalb, O=Northern Illinois University, OU=Computer Science, CN=Neil Rickert/emailAddress=rickert@cs.niu.edu - Validity - Not Before: May 12 00:40:50 2000 GMT - Not After : May 20 00:40:50 2010 GMT - Subject: C=US, ST=Illinois, L=De Kalb, O=Northern Illinois University, OU=Computer Science, CN=Neil Rickert/emailAddress=rickert@cs.niu.edu - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b1:1b:49:06:ef:3f:44:e0:93:ad:8c:a7:f7:21: - 7c:87:cb:da:35:f6:4b:a2:fd:8a:a0:07:5b:cc:6a: - 9b:89:33:fc:24:f5:b1:24:59:5a:25:50:fd:16:d7: - d4:bc:c7:04:1d:df:90:9b:5e:c3:a8:e9:8b:7d:a3: - 5d:9a:e9:7f:e5:2b:ea:15:a7:ad:ba:58:26:0a:11: - 49:4f:da:9a:67:7f:b0:a6:66:f4:27:b6:61:4e:3c: - c8:3e:a0:2f:6a:b4:0e:15:d6:39:f8:92:60:85:df: - a6:34:f3:fa:a4:a5:e4:47:49:e7:87:a4:a5:5c:8e: - 6a:2f:13:76:5f:29:f3:64:73 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - B6:31:78:BB:7E:AA:4D:A1:5D:FD:A2:24:18:C6:90:5A:2D:2F:19:48 - X509v3 Authority Key Identifier: - keyid:B6:31:78:BB:7E:AA:4D:A1:5D:FD:A2:24:18:C6:90:5A:2D:2F:19:48 - DirName:/C=US/ST=Illinois/L=De Kalb/O=Northern Illinois University/OU=Computer Science/CN=Neil Rickert/emailAddress=rickert@cs.niu.edu - serial:00 - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - 60:69:23:65:97:51:5c:06:a4:42:cb:00:e7:9a:dc:39:70:c3: - d3:5d:bf:0f:e0:04:54:4d:d9:dc:12:57:12:6c:67:fd:5b:b0: - 39:63:ea:c4:12:65:51:bb:3d:f1:f7:25:b4:cd:0b:f6:5b:7a: - 61:25:ad:06:0a:01:55:dc:71:05:29:0d:73:e9:30:51:be:d3: - e1:b2:89:fc:0f:28:f7:06:75:96:1b:34:75:e0:07:e5:3b:b3: - 0b:28:24:e5:79:ea:55:39:e7:d2:ee:ec:63:b4:e4:c6:ee:cb: - 15:d0:c8:eb:3b:4f:36:10:a4:6a:c0:6b:03:e8:29:72:c7:a7: - 10:00 ------BEGIN CERTIFICATE----- -MIID5TCCA06gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBrjELMAkGA1UEBhMCVVMx -ETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdEZSBLYWxiMSUwIwYDVQQKExxO -b3J0aGVybiBJbGxpbm9pcyBVbml2ZXJzaXR5MRkwFwYDVQQLExBDb21wdXRlciBT -Y2llbmNlMRUwEwYDVQQDEwxOZWlsIFJpY2tlcnQxITAfBgkqhkiG9w0BCQEWEnJp -Y2tlcnRAY3Mubml1LmVkdTAeFw0wMDA1MTIwMDQwNTBaFw0xMDA1MjAwMDQwNTBa -MIGuMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0Rl -IEthbGIxJTAjBgNVBAoTHE5vcnRoZXJuIElsbGlub2lzIFVuaXZlcnNpdHkxGTAX -BgNVBAsTEENvbXB1dGVyIFNjaWVuY2UxFTATBgNVBAMTDE5laWwgUmlja2VydDEh -MB8GCSqGSIb3DQEJARYScmlja2VydEBjcy5uaXUuZWR1MIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCxG0kG7z9E4JOtjKf3IXyHy9o19kui/YqgB1vMapuJM/wk -9bEkWVolUP0W19S8xwQd35CbXsOo6Yt9o12a6X/lK+oVp626WCYKEUlP2ppnf7Cm -ZvQntmFOPMg+oC9qtA4V1jn4kmCF36Y08/qkpeRHSeeHpKVcjmovE3ZfKfNkcwID -AQABo4IBDzCCAQswHQYDVR0OBBYEFLYxeLt+qk2hXf2iJBjGkFotLxlIMIHbBgNV -HSMEgdMwgdCAFLYxeLt+qk2hXf2iJBjGkFotLxlIoYG0pIGxMIGuMQswCQYDVQQG -EwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0RlIEthbGIxJTAjBgNV -BAoTHE5vcnRoZXJuIElsbGlub2lzIFVuaXZlcnNpdHkxGTAXBgNVBAsTEENvbXB1 -dGVyIFNjaWVuY2UxFTATBgNVBAMTDE5laWwgUmlja2VydDEhMB8GCSqGSIb3DQEJ -ARYScmlja2VydEBjcy5uaXUuZWR1ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcN -AQEEBQADgYEAYGkjZZdRXAakQssA55rcOXDD012/D+AEVE3Z3BJXEmxn/VuwOWPq -xBJlUbs98fcltM0L9lt6YSWtBgoBVdxxBSkNc+kwUb7T4bKJ/A8o9wZ1lhs0deAH -5TuzCygk5XnqVTnn0u7sY7Tkxu7LFdDI6ztPNhCkasBrA+gpcsenEAA= ------END CERTIFICATE----- - -Certificate: - Data: - Version: 3 (0x2) Serial Number: c2:3c:61:67:3b:0a:cc:5e Signature Algorithm: md5WithRSAEncryption Modified: vendor/sendmail/dist/KNOWNBUGS ============================================================================== --- vendor/sendmail/dist/KNOWNBUGS Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/KNOWNBUGS Tue Jun 14 03:55:17 2011 (r223063) @@ -12,6 +12,14 @@ distribution). This list is not guaranteed to be complete. +* Header values which are too long may be truncated. + + If a value of a structured header is longer than 256 (MAXNAME) + characters then it may be truncated during output. For example, + if a single address in the To: header is longer than 256 characters + then it will be truncated which may result in a syntactically + invalid address. + * Delivery to programs that generate too much output may cause problems If e-mail is delivered to a program which generates too much @@ -258,4 +266,4 @@ Kresolve sequence dnsmx canon be used if set instead of LOCAL_RELAY ($R). This will be fixed in a future version. -$Revision: 8.60 $, Last updated $Date: 2007/12/04 01:16:50 $ +$Revision: 8.61 $, Last updated $Date: 2011/04/07 17:48:23 $ Modified: vendor/sendmail/dist/LICENSE ============================================================================== --- vendor/sendmail/dist/LICENSE Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/LICENSE Tue Jun 14 03:55:17 2011 (r223063) @@ -1,8 +1,9 @@ SENDMAIL LICENSE -The following license terms and conditions apply, unless a different -license is obtained from Sendmail, Inc., 6475 Christie Ave, Suite 350, -Emeryville, CA 94608, USA, or by electronic mail at license@sendmail.com. +The following license terms and conditions apply, unless a redistribution +agreement or other license is obtained from Sendmail, Inc., 6475 Christie +Ave, Third Floor, Emeryville, CA 94608, USA, or by electronic mail at +license@sendmail.com. License Terms: @@ -22,10 +23,11 @@ each of the following conditions is met: must allow further use, modification, and redistribution of the Source Code under substantially the same terms as this license. For the purposes of redistribution "Source Code" means the complete compilable - and linkable source code of sendmail including all modifications. + and linkable source code of sendmail and associated libraries and + utilities in the sendmail distribution including all modifications. -2. Redistributions of source code must retain the copyright notices as they - appear in each source code file, these license terms, and the +2. Redistributions of Source Code must retain the copyright notices as they + appear in each Source Code file, these license terms, and the disclaimer/limitation of liability set forth as paragraph 6 below. 3. Redistributions in binary form must reproduce the Copyright Notice, @@ -33,16 +35,16 @@ each of the following conditions is met: forth as paragraph 6 below, in the documentation and/or other materials provided with the distribution. For the purposes of binary distribution the "Copyright Notice" refers to the following language: - "Copyright (c) 1998-2009 Sendmail, Inc. All rights reserved." + "Copyright (c) 1998-2010 Sendmail, Inc. All rights reserved." 4. Neither the name of Sendmail, Inc. nor the University of California nor - the names of their contributors may be used to endorse or promote + names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. The name "sendmail" is a trademark of Sendmail, Inc. 5. All redistributions must comply with the conditions imposed by the - University of California on certain embedded code, whose copyright - notice and conditions for redistribution are as follows: + University of California on certain embedded code, which copyright + Notice and conditions for redistribution are as follows: (a) Copyright (c) 1988, 1993 The Regents of the University of California. All rights reserved. @@ -76,4 +78,4 @@ each of the following conditions is met: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -$Revision: 8.15 $, Last updated $Date: 2009/03/04 19:58:04 $ +$Revision: 8.17 $, Last updated $Date: 2010/12/03 01:10:00 $, Document 139848.1 Modified: vendor/sendmail/dist/PGPKEYS ============================================================================== --- vendor/sendmail/dist/PGPKEYS Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/PGPKEYS Tue Jun 14 03:55:17 2011 (r223063) @@ -142,6 +142,223 @@ gpExpdV7qPrw9k01j5rod5PjZlG8zV0= -----END PGP PUBLIC KEY BLOCK----- Type Bits KeyID Created Expires Algorithm Use +pub 2048 A97884B0 2011-01-04 ------- RSA Sign & Encrypt +fingerprint: 5872 6218 A913 400D E660 3601 39A4 C77D A978 84B0 +uid Sendmail Signing Key/2011 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.9 (OpenBSD) + +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 +=pDAG +-----END PGP PUBLIC KEY BLOCK----- + +Type Bits KeyID Created Expires Algorithm Use +pub 2048 85410ABE 2010-02-19 ------- RSA Sign +fingerprint: B175 9644 5303 5DCE DD7B E919 604D FBF2 8541 0ABE +uid Sendmail Signing Key/2010 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.9 (OpenBSD) + +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 +A4NAZlDwxoivB/5PTy67pX+AC1JgvPPafUMu +=6Xeh +-----END PGP PUBLIC KEY BLOCK----- + +Type Bits KeyID Created Expires Algorithm Use pub 1024 0xA77F2429 2009-01-01 ---------- RSA Sign & Encrypt f16 Fingerprint16 = 33 3A 62 61 2C F3 21 AA 4E 87 47 F2 2F 2C 40 4D uid Sendmail Signing Key/2009 @@ -1865,4 +2082,4 @@ DnF3FZZEzV7oqPwC2jzv/1dD6GFhtgy0cnyoPGUJ =nES8 -----END PGP PUBLIC KEY BLOCK----- -$Revision: 8.29 $, Last updated $Date: 2009/01/06 05:59:03 $ +$Revision: 8.36 $, Last updated $Date: 2011/01/28 21:17:54 $ Modified: vendor/sendmail/dist/RELEASE_NOTES ============================================================================== --- vendor/sendmail/dist/RELEASE_NOTES Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/RELEASE_NOTES Tue Jun 14 03:55:17 2011 (r223063) @@ -1,11 +1,75 @@ SENDMAIL RELEASE NOTES - $Id: RELEASE_NOTES,v 8.1963 2009/12/23 04:43:46 ca Exp $ + $Id: RELEASE_NOTES,v 8.1991 2011/05/15 04:28:16 ca Exp $ This listing shows the version of the sendmail binary, the version of the sendmail configuration files, the date of release, and a summary of the changes in that release. +8.14.5/8.14.5 2011/05/17 + Do not cache SMTP extensions across connections as the cache + is based on hostname which may not be a unique identifier + for a server, i.e., different machines may have the + same hostname but provide different SMTP extensions. + Problem noted by Jim Hermann. + Avoid an out-of-bounds access in case a resolver reply for a DNS + map lookup returns a size larger than 1K. Based on a + patch from Dr. Werner Fink of SuSE. + If a job is aborted using the interrupt signal (e.g., control-C from + the keyboard), perform minimal cleanup to avoid invoking + functions that are not signal-safe. Note: in previous + versions the mail might have been queued up already + and would be delivered subsequently, now an interrupt + will always remove the queue files and thus prevent + delivery. + Per RFC 6176, when operating as a TLS client, do not offer SSLv2. + Since TLS session resumption is never used as a client, disable + use of RFC 4507-style session tickets. + Work around gcc4 versions which reverse 25 years of history and + no longer align char buffers on the stack, breaking calls + to resolver functions on strict alignment platforms. + Found by Stuart Henderson of OpenBSD. + Read at most two AUTH lines from a server greeting (up to two + lines are read because servers may use "AUTH mechs" and + "AUTH=mechs"). Otherwise a malicious server may exhaust + the memory of the client. Bug report by Nils of MWR + InfoSecurity. + Avoid triggering an assertion in the OpenLDAP code when the + connection to an LDAP server is lost while making a query. + Problem noted and patch provided by Andy Fiddaman. + If ConnectOnlyTo is set and sendmail is compiled with NETINET6 + it would try to use an IPv6 address if an IPv4 (or + unparseable) address is specified. + If SASLv2 is used, make sure that the macro {auth_authen} is + stored in xtext format to avoid problems with parsing + it. Problem noted by Christophe Wolfhugel. + CONFIG: FEATURE(`ldap_routing') in 8.14.4 tried to add a missing + -T that is required, but failed for some cases + that did not use LDAP. This change has been undone + until a better solution can be implemented. Problem + found by Andy Fiddaman. + CONFIG: Add cf/ostype/solaris11.m4 for Solaris11 support. + Contributed by Casper Dik of Oracle. + CONTRIB: qtool.pl: Deal with H entries that do not have a + letter between the question marks. Patch from + Stefan Christensen. + DOC: Use a better description for the -i option in sendmail. + Patch from Mitchell Berger. + Portability: + Add support for Darwin 10.x (Mac OS X 10.6). + Enable HAVE_NANOSLEEP for FreeBSD 3 and later. Patch + from John Marshall. + Enable HAVE_NANOSLEEP for OpenBSD 4.3 and later. + Use new directory "/system/volatile" for PidFile on + Solaris 11. Patch from Casper Dik of Oracle. + Fix compilation on Solaris 11 (and maybe some other + OSs) when using OpenSSL 1.0. Based on patch from + Jan Pechanec of Oracle. + Set SOCKADDR_LEN_T and SOCKOPT_LEN_T to socklen_t + for Solaris 11. Patch from Roger Faulkner of Oracle. + New Files: + cf/ostype/solaris11.m4 + 8.14.4/8.14.4 2009/12/30 SECURITY: Handle bogus certificates containing NUL characters in CNs by placing a string indicating a bad certificate Modified: vendor/sendmail/dist/cf/cf/generic-bsd4.4.cf ============================================================================== --- vendor/sendmail/dist/cf/cf/generic-bsd4.4.cf Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/cf/cf/generic-bsd4.4.cf Tue Jun 14 03:55:17 2011 (r223063) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:08 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:13 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: generic-bsd4.4.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $ ##### @@ -41,7 +41,7 @@ -##### $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $ ##### +##### $Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $ ##### # level 10 config file format V10/Berkeley @@ -122,7 +122,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.14.4 +DZ8.14.5 ############### @@ -1000,7 +1000,6 @@ R< $* > $* $: $2 - ###################################################################### ### check_mail -- check SMTP `MAIL FROM:' command argument ###################################################################### Modified: vendor/sendmail/dist/cf/cf/generic-hpux10.cf ============================================================================== --- vendor/sendmail/dist/cf/cf/generic-hpux10.cf Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/cf/cf/generic-hpux10.cf Tue Jun 14 03:55:17 2011 (r223063) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:08 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:13 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: generic-hpux10.mc,v 8.13 2001/05/29 17:29:52 ca Exp $ ##### @@ -42,7 +42,7 @@ -##### $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $ ##### +##### $Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $ ##### # level 10 config file format V10/Berkeley @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.14.4 +DZ8.14.5 ############### @@ -1001,7 +1001,6 @@ R< $* > $* $: $2 - ###################################################################### ### check_mail -- check SMTP `MAIL FROM:' command argument ###################################################################### Modified: vendor/sendmail/dist/cf/cf/generic-hpux9.cf ============================================================================== --- vendor/sendmail/dist/cf/cf/generic-hpux9.cf Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/cf/cf/generic-hpux9.cf Tue Jun 14 03:55:17 2011 (r223063) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:08 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:13 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: generic-hpux9.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $ ##### @@ -42,7 +42,7 @@ -##### $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $ ##### +##### $Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $ ##### # level 10 config file format V10/Berkeley @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.14.4 +DZ8.14.5 ############### @@ -1001,7 +1001,6 @@ R< $* > $* $: $2 - ###################################################################### ### check_mail -- check SMTP `MAIL FROM:' command argument ###################################################################### Modified: vendor/sendmail/dist/cf/cf/generic-linux.cf ============================================================================== --- vendor/sendmail/dist/cf/cf/generic-linux.cf Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/cf/cf/generic-linux.cf Tue Jun 14 03:55:17 2011 (r223063) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:08 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:13 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $ ##### @@ -46,7 +46,7 @@ -##### $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $ ##### +##### $Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $ ##### # level 10 config file format V10/Berkeley @@ -127,7 +127,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.14.4 +DZ8.14.5 ############### @@ -1005,7 +1005,6 @@ R< $* > $* $: $2 - ###################################################################### ### check_mail -- check SMTP `MAIL FROM:' command argument ###################################################################### Modified: vendor/sendmail/dist/cf/cf/generic-mpeix.cf ============================================================================== --- vendor/sendmail/dist/cf/cf/generic-mpeix.cf Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/cf/cf/generic-mpeix.cf Tue Jun 14 03:55:17 2011 (r223063) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:08 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:13 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: generic-mpeix.mc,v 8.1 2001/12/13 23:56:37 gshapiro Exp $ ##### @@ -42,7 +42,7 @@ -##### $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $ ##### +##### $Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $ ##### # level 10 config file format V10/Berkeley @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.14.4 +DZ8.14.5 ############### @@ -1001,7 +1001,6 @@ R< $* > $* $: $2 - ###################################################################### ### check_mail -- check SMTP `MAIL FROM:' command argument ###################################################################### Modified: vendor/sendmail/dist/cf/cf/generic-nextstep3.3.cf ============================================================================== --- vendor/sendmail/dist/cf/cf/generic-nextstep3.3.cf Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/cf/cf/generic-nextstep3.3.cf Tue Jun 14 03:55:17 2011 (r223063) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:08 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:13 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: generic-nextstep3.3.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $ ##### @@ -41,7 +41,7 @@ -##### $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $ ##### +##### $Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $ ##### # level 10 config file format V10/Berkeley @@ -122,7 +122,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.14.4 +DZ8.14.5 ############### @@ -1000,7 +1000,6 @@ R< $* > $* $: $2 - ###################################################################### ### check_mail -- check SMTP `MAIL FROM:' command argument ###################################################################### Modified: vendor/sendmail/dist/cf/cf/generic-osf1.cf ============================================================================== --- vendor/sendmail/dist/cf/cf/generic-osf1.cf Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/cf/cf/generic-osf1.cf Tue Jun 14 03:55:17 2011 (r223063) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:08 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:13 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: generic-osf1.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $ ##### @@ -42,7 +42,7 @@ -##### $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $ ##### +##### $Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $ ##### # level 10 config file format V10/Berkeley @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.14.4 +DZ8.14.5 ############### @@ -1001,7 +1001,6 @@ R< $* > $* $: $2 - ###################################################################### ### check_mail -- check SMTP `MAIL FROM:' command argument ###################################################################### Modified: vendor/sendmail/dist/cf/cf/generic-solaris.cf ============================================================================== --- vendor/sendmail/dist/cf/cf/generic-solaris.cf Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/cf/cf/generic-solaris.cf Tue Jun 14 03:55:17 2011 (r223063) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:08 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:13 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: generic-solaris.mc,v 8.13 2001/06/27 21:46:30 gshapiro Exp $ ##### @@ -41,7 +41,7 @@ -##### $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $ ##### +##### $Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $ ##### # level 10 config file format V10/Berkeley @@ -122,7 +122,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.14.4 +DZ8.14.5 ############### @@ -1000,7 +1000,6 @@ R< $* > $* $: $2 - ###################################################################### ### check_mail -- check SMTP `MAIL FROM:' command argument ###################################################################### Modified: vendor/sendmail/dist/cf/cf/generic-sunos4.1.cf ============================================================================== --- vendor/sendmail/dist/cf/cf/generic-sunos4.1.cf Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/cf/cf/generic-sunos4.1.cf Tue Jun 14 03:55:17 2011 (r223063) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:08 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:14 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: generic-sunos4.1.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $ ##### @@ -42,7 +42,7 @@ -##### $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $ ##### +##### $Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $ ##### # level 10 config file format V10/Berkeley @@ -123,7 +123,7 @@ DnMAILER-DAEMON CPREDIRECT # Configuration version number -DZ8.14.4 +DZ8.14.5 ############### @@ -1001,7 +1001,6 @@ R< $* > $* $: $2 - ###################################################################### ### check_mail -- check SMTP `MAIL FROM:' command argument ###################################################################### Modified: vendor/sendmail/dist/cf/cf/generic-ultrix4.cf ============================================================================== --- vendor/sendmail/dist/cf/cf/generic-ultrix4.cf Mon Jun 13 22:08:24 2011 (r223062) +++ vendor/sendmail/dist/cf/cf/generic-ultrix4.cf Tue Jun 14 03:55:17 2011 (r223063) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:09 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:14 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: generic-ultrix4.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $ ##### @@ -42,7 +42,7 @@ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 03:59:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E05D61065673; Tue, 14 Jun 2011 03:59:08 +0000 (UTC) (envelope-from gshapiro@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D03A58FC0C; Tue, 14 Jun 2011 03:59:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E3x8Zl012239; Tue, 14 Jun 2011 03:59:08 GMT (envelope-from gshapiro@svn.freebsd.org) Received: (from gshapiro@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E3x8Rf012237; Tue, 14 Jun 2011 03:59:08 GMT (envelope-from gshapiro@svn.freebsd.org) Message-Id: <201106140359.p5E3x8Rf012237@svn.freebsd.org> From: Gregory Neil Shapiro Date: Tue, 14 Jun 2011 03:59:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223064 - vendor/sendmail/dist/src X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 03:59:09 -0000 Author: gshapiro Date: Tue Jun 14 03:59:08 2011 New Revision: 223064 URL: http://svn.freebsd.org/changeset/base/223064 Log: Import errata patch as published at http://www.sendmail.com/sm/open_source/download/8.14.5/ Modified: vendor/sendmail/dist/src/sendmail.h Modified: vendor/sendmail/dist/src/sendmail.h ============================================================================== --- vendor/sendmail/dist/src/sendmail.h Tue Jun 14 03:55:17 2011 (r223063) +++ vendor/sendmail/dist/src/sendmail.h Tue Jun 14 03:59:08 2011 (r223064) @@ -721,9 +721,9 @@ MCI #if STARTTLS #define MCIF_TLS 0x00100000 /* STARTTLS supported */ #define MCIF_TLSACT 0x00200000 /* STARTTLS active */ -#define MCIF_EXTENS (MCIF_EXPN | MCIF_SIZE | MCIF_8BITMIME | MCIF_DSN | MCIF_8BITOK | MCIF_AUTH | MCIF_ENHSTAT | MCIF_TLS) #else /* STARTTLS */ -#define MCIF_EXTENS (MCIF_EXPN | MCIF_SIZE | MCIF_8BITMIME | MCIF_DSN | MCIF_8BITOK | MCIF_AUTH | MCIF_ENHSTAT) +#define MCIF_TLS 0 +#define MCIF_TLSACT 0 #endif /* STARTTLS */ #define MCIF_DLVR_BY 0x00400000 /* DELIVERBY */ #if _FFR_IGNORE_EXT_ON_HELO @@ -733,6 +733,8 @@ MCI #define MCIF_AUTH2 0x02000000 /* got 2 AUTH lines */ #define MCIF_ONLY_EHLO 0x10000000 /* use only EHLO in smtpinit */ +#define MCIF_EXTENS (MCIF_EXPN | MCIF_SIZE | MCIF_8BITMIME | MCIF_DSN | MCIF_8BITOK | MCIF_AUTH | MCIF_ENHSTAT | MCIF_TLS | MCIF_AUTH2) + /* states */ #define MCIS_CLOSED 0 /* no traffic on this connection */ #define MCIS_OPENING 1 /* sending initial protocol */ From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 04:02:30 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 89B50106564A; Tue, 14 Jun 2011 04:02:30 +0000 (UTC) (envelope-from gshapiro@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 608898FC13; Tue, 14 Jun 2011 04:02:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E42Uxf012399; Tue, 14 Jun 2011 04:02:30 GMT (envelope-from gshapiro@svn.freebsd.org) Received: (from gshapiro@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E42U9V012398; Tue, 14 Jun 2011 04:02:30 GMT (envelope-from gshapiro@svn.freebsd.org) Message-Id: <201106140402.p5E42U9V012398@svn.freebsd.org> From: Gregory Neil Shapiro Date: Tue, 14 Jun 2011 04:02:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223065 - vendor/sendmail/8.14.5 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 04:02:30 -0000 Author: gshapiro Date: Tue Jun 14 04:02:30 2011 New Revision: 223065 URL: http://svn.freebsd.org/changeset/base/223065 Log: Tag sendmail 8.14.5 Added: vendor/sendmail/8.14.5/ - copied from r223064, vendor/sendmail/dist/ From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 04:20:17 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B30641065705; Tue, 14 Jun 2011 04:20:17 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 97F108FC08; Tue, 14 Jun 2011 04:20:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E4KHrB013072; Tue, 14 Jun 2011 04:20:17 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E4KHQQ013066; Tue, 14 Jun 2011 04:20:17 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201106140420.p5E4KHQQ013066@svn.freebsd.org> From: Navdeep Parhar Date: Tue, 14 Jun 2011 04:20:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223066 - stable/8/sys/dev/cxgbe X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 04:20:17 -0000 Author: np Date: Tue Jun 14 04:20:17 2011 New Revision: 223066 URL: http://svn.freebsd.org/changeset/base/223066 Log: MFC r222973: - driver ioctl to get SGE context for any given queue - sysctls to display the context id, cidx, and pidx of all kinds of queues. Modified: stable/8/sys/dev/cxgbe/adapter.h stable/8/sys/dev/cxgbe/t4_ioctl.h stable/8/sys/dev/cxgbe/t4_main.c stable/8/sys/dev/cxgbe/t4_sge.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/cxgbe/adapter.h ============================================================================== --- stable/8/sys/dev/cxgbe/adapter.h Tue Jun 14 04:02:30 2011 (r223065) +++ stable/8/sys/dev/cxgbe/adapter.h Tue Jun 14 04:20:17 2011 (r223066) @@ -307,7 +307,7 @@ struct sge_eq { uint16_t pidx; /* producer idx (desc idx) */ uint16_t pending; /* # of descriptors used since last doorbell */ uint16_t iqid; /* iq that gets egr_update for the eq */ - uint32_t cntxt_id; /* SGE context id for the eq */ + unsigned int cntxt_id; /* SGE context id for the eq */ }; struct sge_fl { Modified: stable/8/sys/dev/cxgbe/t4_ioctl.h ============================================================================== --- stable/8/sys/dev/cxgbe/t4_ioctl.h Tue Jun 14 04:02:30 2011 (r223065) +++ stable/8/sys/dev/cxgbe/t4_ioctl.h Tue Jun 14 04:20:17 2011 (r223066) @@ -46,6 +46,7 @@ enum { T4_GET_FILTER, /* get information about a filter */ T4_SET_FILTER, /* program a filter */ T4_DEL_FILTER, /* delete a filter */ + T4_GET_SGE_CONTEXT, /* get SGE context for a queue */ }; struct t4_reg { @@ -184,6 +185,20 @@ struct t4_filter { struct t4_filter_specification fs; }; +#define T4_SGE_CONTEXT_SIZE 24 +enum { + SGE_CONTEXT_EGRESS, + SGE_CONTEXT_INGRESS, + SGE_CONTEXT_FLM, + SGE_CONTEXT_CNM +}; + +struct t4_sge_context { + uint32_t mem_id; + uint32_t cid; + uint32_t data[T4_SGE_CONTEXT_SIZE / 4]; +}; + #define CHELSIO_T4_GETREG _IOWR('f', T4_GETREG, struct t4_reg) #define CHELSIO_T4_SETREG _IOW('f', T4_SETREG, struct t4_reg) #define CHELSIO_T4_REGDUMP _IOWR('f', T4_REGDUMP, struct t4_regdump) @@ -192,4 +207,6 @@ struct t4_filter { #define CHELSIO_T4_GET_FILTER _IOWR('f', T4_GET_FILTER, struct t4_filter) #define CHELSIO_T4_SET_FILTER _IOW('f', T4_SET_FILTER, struct t4_filter) #define CHELSIO_T4_DEL_FILTER _IOW('f', T4_DEL_FILTER, struct t4_filter) +#define CHELSIO_T4_GET_SGE_CONTEXT _IOWR('f', T4_GET_SGE_CONTEXT, \ + struct t4_sge_context) #endif Modified: stable/8/sys/dev/cxgbe/t4_main.c ============================================================================== --- stable/8/sys/dev/cxgbe/t4_main.c Tue Jun 14 04:02:30 2011 (r223065) +++ stable/8/sys/dev/cxgbe/t4_main.c Tue Jun 14 04:20:17 2011 (r223066) @@ -315,6 +315,7 @@ static void clear_filter(struct filter_e static int set_filter_wr(struct adapter *, int); static int del_filter_wr(struct adapter *, int); void filter_rpl(struct adapter *, const struct cpl_set_tcb_rpl *); +static int get_sge_context(struct adapter *, struct t4_sge_context *); static int t4_mod_event(module_t, int, void *); struct t4_pciids { @@ -3423,6 +3424,35 @@ filter_rpl(struct adapter *sc, const str } } +static int +get_sge_context(struct adapter *sc, struct t4_sge_context *cntxt) +{ + int rc = EINVAL; + + if (cntxt->cid > M_CTXTQID) + return (rc); + + if (cntxt->mem_id != CTXT_EGRESS && cntxt->mem_id != CTXT_INGRESS && + cntxt->mem_id != CTXT_FLM && cntxt->mem_id != CTXT_CNM) + return (rc); + + if (sc->flags & FW_OK) { + ADAPTER_LOCK(sc); /* Avoid parallel t4_wr_mbox */ + rc = -t4_sge_ctxt_rd(sc, sc->mbox, cntxt->cid, cntxt->mem_id, + &cntxt->data[0]); + ADAPTER_UNLOCK(sc); + } + + if (rc != 0) { + /* Read via firmware failed or wasn't even attempted */ + + rc = -t4_sge_ctxt_rd_bd(sc, cntxt->cid, cntxt->mem_id, + &cntxt->data[0]); + } + + return (rc); +} + int t4_os_find_pci_capability(struct adapter *sc, int cap) { @@ -3586,6 +3616,9 @@ t4_ioctl(struct cdev *dev, unsigned long rc = del_filter(sc, (struct t4_filter *)data); ADAPTER_UNLOCK(sc); break; + case CHELSIO_T4_GET_SGE_CONTEXT: + rc = get_sge_context(sc, (struct t4_sge_context *)data); + break; default: rc = EINVAL; } Modified: stable/8/sys/dev/cxgbe/t4_sge.c ============================================================================== --- stable/8/sys/dev/cxgbe/t4_sge.c Tue Jun 14 04:02:30 2011 (r223065) +++ stable/8/sys/dev/cxgbe/t4_sge.c Tue Jun 14 04:20:17 2011 (r223066) @@ -1368,6 +1368,12 @@ alloc_fwq(struct adapter *sc, int intr_i children = SYSCTL_CHILDREN(sc->oid_fwq); + SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "abs_id", + CTLTYPE_INT | CTLFLAG_RD, &fwq->abs_id, 0, sysctl_uint16, "I", + "absolute id of the queue"); + SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "cntxt_id", + CTLTYPE_INT | CTLFLAG_RD, &fwq->cntxt_id, 0, sysctl_uint16, "I", + "SGE context id of the queue"); SYSCTL_ADD_PROC(&sc->ctx, children, OID_AUTO, "cidx", CTLTYPE_INT | CTLFLAG_RD, &fwq->cidx, 0, sysctl_uint16, "I", "consumer index"); @@ -1418,6 +1424,12 @@ alloc_rxq(struct port_info *pi, struct s SYSCTL_ADD_PROC(&pi->ctx, children, OID_AUTO, "abs_id", CTLTYPE_INT | CTLFLAG_RD, &rxq->iq.abs_id, 0, sysctl_uint16, "I", "absolute id of the queue"); + SYSCTL_ADD_PROC(&pi->ctx, children, OID_AUTO, "cntxt_id", + CTLTYPE_INT | CTLFLAG_RD, &rxq->iq.cntxt_id, 0, sysctl_uint16, "I", + "SGE context id of the queue"); + SYSCTL_ADD_PROC(&pi->ctx, children, OID_AUTO, "cidx", + CTLTYPE_INT | CTLFLAG_RD, &rxq->iq.cidx, 0, sysctl_uint16, "I", + "consumer index"); #ifdef INET SYSCTL_ADD_INT(&pi->ctx, children, OID_AUTO, "lro_queued", CTLFLAG_RD, &rxq->lro.lro_queued, 0, NULL); @@ -1430,6 +1442,19 @@ alloc_rxq(struct port_info *pi, struct s CTLFLAG_RD, &rxq->vlan_extraction, "# of times hardware extracted 802.1Q tag"); + children = SYSCTL_CHILDREN(oid); + oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, "fl", CTLFLAG_RD, + NULL, "freelist"); + children = SYSCTL_CHILDREN(oid); + + SYSCTL_ADD_PROC(&pi->ctx, children, OID_AUTO, "cntxt_id", + CTLTYPE_INT | CTLFLAG_RD, &rxq->fl.cntxt_id, 0, sysctl_uint16, "I", + "SGE context id of the queue"); + SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "cidx", CTLFLAG_RD, + &rxq->fl.cidx, 0, "consumer index"); + SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "pidx", CTLFLAG_RD, + &rxq->fl.pidx, 0, "producer index"); + return (rc); } @@ -1652,6 +1677,15 @@ alloc_txq(struct port_info *pi, struct s NULL, "tx queue"); children = SYSCTL_CHILDREN(oid); + SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "cntxt_id", CTLFLAG_RD, + &eq->cntxt_id, 0, "SGE context id of the queue"); + SYSCTL_ADD_PROC(&pi->ctx, children, OID_AUTO, "cidx", + CTLTYPE_INT | CTLFLAG_RD, &eq->cidx, 0, sysctl_uint16, "I", + "consumer index"); + SYSCTL_ADD_PROC(&pi->ctx, children, OID_AUTO, "pidx", + CTLTYPE_INT | CTLFLAG_RD, &eq->pidx, 0, sysctl_uint16, "I", + "producer index"); + SYSCTL_ADD_UQUAD(&pi->ctx, children, OID_AUTO, "txcsum", CTLFLAG_RD, &txq->txcsum, "# of times hardware assisted with checksum"); SYSCTL_ADD_UQUAD(&pi->ctx, children, OID_AUTO, "vlan_insertion", From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 04:20:19 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 757F31065670; Tue, 14 Jun 2011 04:20:19 +0000 (UTC) (envelope-from gshapiro@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6232B8FC0C; Tue, 14 Jun 2011 04:20:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E4KJRx013112; Tue, 14 Jun 2011 04:20:19 GMT (envelope-from gshapiro@svn.freebsd.org) Received: (from gshapiro@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E4KIiN013092; Tue, 14 Jun 2011 04:20:18 GMT (envelope-from gshapiro@svn.freebsd.org) Message-Id: <201106140420.p5E4KIiN013092@svn.freebsd.org> From: Gregory Neil Shapiro Date: Tue, 14 Jun 2011 04:20:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223067 - in head/contrib/sendmail: . cf/cf cf/feature cf/m4 cf/ostype contrib doc/op include/sm libmilter libmilter/docs libsm makemap src X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 04:20:19 -0000 Author: gshapiro Date: Tue Jun 14 04:20:18 2011 New Revision: 223067 URL: http://svn.freebsd.org/changeset/base/223067 Log: Merge sendmail 8.14.5 to HEAD MFC after: 4 days Added: - copied unchanged from r223065, vendor/sendmail/dist/cf/ostype/solaris11.m4 Directory Properties: head/contrib/sendmail/cf/ostype/solaris11.m4 (props changed) Modified: head/contrib/sendmail/CACerts head/contrib/sendmail/KNOWNBUGS head/contrib/sendmail/LICENSE head/contrib/sendmail/PGPKEYS head/contrib/sendmail/RELEASE_NOTES head/contrib/sendmail/cf/cf/submit.cf head/contrib/sendmail/cf/feature/ldap_routing.m4 head/contrib/sendmail/cf/m4/cfhead.m4 head/contrib/sendmail/cf/m4/proto.m4 head/contrib/sendmail/cf/m4/version.m4 head/contrib/sendmail/contrib/qtool.pl head/contrib/sendmail/doc/op/op.me head/contrib/sendmail/include/sm/conf.h head/contrib/sendmail/libmilter/docs/overview.html head/contrib/sendmail/libmilter/docs/smfi_stop.html head/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html head/contrib/sendmail/libmilter/engine.c head/contrib/sendmail/libmilter/sm_gethost.c head/contrib/sendmail/libmilter/worker.c head/contrib/sendmail/libsm/ldap.c head/contrib/sendmail/makemap/makemap.c head/contrib/sendmail/src/Makefile.m4 head/contrib/sendmail/src/conf.c head/contrib/sendmail/src/daemon.c head/contrib/sendmail/src/deliver.c head/contrib/sendmail/src/domain.c head/contrib/sendmail/src/envelope.c head/contrib/sendmail/src/err.c head/contrib/sendmail/src/main.c head/contrib/sendmail/src/map.c head/contrib/sendmail/src/mci.c head/contrib/sendmail/src/parseaddr.c head/contrib/sendmail/src/queue.c head/contrib/sendmail/src/readcf.c head/contrib/sendmail/src/sendmail.8 head/contrib/sendmail/src/sendmail.h head/contrib/sendmail/src/sm_resolve.c head/contrib/sendmail/src/srvrsmtp.c head/contrib/sendmail/src/tls.c head/contrib/sendmail/src/udb.c head/contrib/sendmail/src/usersmtp.c head/contrib/sendmail/src/version.c Directory Properties: head/contrib/sendmail/ (props changed) Modified: head/contrib/sendmail/CACerts ============================================================================== --- head/contrib/sendmail/CACerts Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/CACerts Tue Jun 14 04:20:18 2011 (r223067) @@ -1,4 +1,4 @@ -# $Id: CACerts,v 8.4 2009/06/26 05:46:10 ca Exp $ +# $Id: CACerts,v 8.5 2011/05/06 23:05:10 ca Exp $ # This file contains some CA certificates that are used to sign the # certificates of mail servers of members of the sendmail consortium # who may reply to questions etc sent to sendmail.org. @@ -9,73 +9,6 @@ Certificate: Data: Version: 3 (0x2) - Serial Number: 0 (0x0) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=US, ST=Illinois, L=De Kalb, O=Northern Illinois University, OU=Computer Science, CN=Neil Rickert/emailAddress=rickert@cs.niu.edu - Validity - Not Before: May 12 00:40:50 2000 GMT - Not After : May 20 00:40:50 2010 GMT - Subject: C=US, ST=Illinois, L=De Kalb, O=Northern Illinois University, OU=Computer Science, CN=Neil Rickert/emailAddress=rickert@cs.niu.edu - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:b1:1b:49:06:ef:3f:44:e0:93:ad:8c:a7:f7:21: - 7c:87:cb:da:35:f6:4b:a2:fd:8a:a0:07:5b:cc:6a: - 9b:89:33:fc:24:f5:b1:24:59:5a:25:50:fd:16:d7: - d4:bc:c7:04:1d:df:90:9b:5e:c3:a8:e9:8b:7d:a3: - 5d:9a:e9:7f:e5:2b:ea:15:a7:ad:ba:58:26:0a:11: - 49:4f:da:9a:67:7f:b0:a6:66:f4:27:b6:61:4e:3c: - c8:3e:a0:2f:6a:b4:0e:15:d6:39:f8:92:60:85:df: - a6:34:f3:fa:a4:a5:e4:47:49:e7:87:a4:a5:5c:8e: - 6a:2f:13:76:5f:29:f3:64:73 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Subject Key Identifier: - B6:31:78:BB:7E:AA:4D:A1:5D:FD:A2:24:18:C6:90:5A:2D:2F:19:48 - X509v3 Authority Key Identifier: - keyid:B6:31:78:BB:7E:AA:4D:A1:5D:FD:A2:24:18:C6:90:5A:2D:2F:19:48 - DirName:/C=US/ST=Illinois/L=De Kalb/O=Northern Illinois University/OU=Computer Science/CN=Neil Rickert/emailAddress=rickert@cs.niu.edu - serial:00 - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: md5WithRSAEncryption - 60:69:23:65:97:51:5c:06:a4:42:cb:00:e7:9a:dc:39:70:c3: - d3:5d:bf:0f:e0:04:54:4d:d9:dc:12:57:12:6c:67:fd:5b:b0: - 39:63:ea:c4:12:65:51:bb:3d:f1:f7:25:b4:cd:0b:f6:5b:7a: - 61:25:ad:06:0a:01:55:dc:71:05:29:0d:73:e9:30:51:be:d3: - e1:b2:89:fc:0f:28:f7:06:75:96:1b:34:75:e0:07:e5:3b:b3: - 0b:28:24:e5:79:ea:55:39:e7:d2:ee:ec:63:b4:e4:c6:ee:cb: - 15:d0:c8:eb:3b:4f:36:10:a4:6a:c0:6b:03:e8:29:72:c7:a7: - 10:00 ------BEGIN CERTIFICATE----- -MIID5TCCA06gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBrjELMAkGA1UEBhMCVVMx -ETAPBgNVBAgTCElsbGlub2lzMRAwDgYDVQQHEwdEZSBLYWxiMSUwIwYDVQQKExxO -b3J0aGVybiBJbGxpbm9pcyBVbml2ZXJzaXR5MRkwFwYDVQQLExBDb21wdXRlciBT -Y2llbmNlMRUwEwYDVQQDEwxOZWlsIFJpY2tlcnQxITAfBgkqhkiG9w0BCQEWEnJp -Y2tlcnRAY3Mubml1LmVkdTAeFw0wMDA1MTIwMDQwNTBaFw0xMDA1MjAwMDQwNTBa -MIGuMQswCQYDVQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0Rl -IEthbGIxJTAjBgNVBAoTHE5vcnRoZXJuIElsbGlub2lzIFVuaXZlcnNpdHkxGTAX -BgNVBAsTEENvbXB1dGVyIFNjaWVuY2UxFTATBgNVBAMTDE5laWwgUmlja2VydDEh -MB8GCSqGSIb3DQEJARYScmlja2VydEBjcy5uaXUuZWR1MIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCxG0kG7z9E4JOtjKf3IXyHy9o19kui/YqgB1vMapuJM/wk -9bEkWVolUP0W19S8xwQd35CbXsOo6Yt9o12a6X/lK+oVp626WCYKEUlP2ppnf7Cm -ZvQntmFOPMg+oC9qtA4V1jn4kmCF36Y08/qkpeRHSeeHpKVcjmovE3ZfKfNkcwID -AQABo4IBDzCCAQswHQYDVR0OBBYEFLYxeLt+qk2hXf2iJBjGkFotLxlIMIHbBgNV -HSMEgdMwgdCAFLYxeLt+qk2hXf2iJBjGkFotLxlIoYG0pIGxMIGuMQswCQYDVQQG -EwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0RlIEthbGIxJTAjBgNV -BAoTHE5vcnRoZXJuIElsbGlub2lzIFVuaXZlcnNpdHkxGTAXBgNVBAsTEENvbXB1 -dGVyIFNjaWVuY2UxFTATBgNVBAMTDE5laWwgUmlja2VydDEhMB8GCSqGSIb3DQEJ -ARYScmlja2VydEBjcy5uaXUuZWR1ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcN -AQEEBQADgYEAYGkjZZdRXAakQssA55rcOXDD012/D+AEVE3Z3BJXEmxn/VuwOWPq -xBJlUbs98fcltM0L9lt6YSWtBgoBVdxxBSkNc+kwUb7T4bKJ/A8o9wZ1lhs0deAH -5TuzCygk5XnqVTnn0u7sY7Tkxu7LFdDI6ztPNhCkasBrA+gpcsenEAA= ------END CERTIFICATE----- - -Certificate: - Data: - Version: 3 (0x2) Serial Number: c2:3c:61:67:3b:0a:cc:5e Signature Algorithm: md5WithRSAEncryption Modified: head/contrib/sendmail/KNOWNBUGS ============================================================================== --- head/contrib/sendmail/KNOWNBUGS Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/KNOWNBUGS Tue Jun 14 04:20:18 2011 (r223067) @@ -12,6 +12,14 @@ distribution). This list is not guaranteed to be complete. +* Header values which are too long may be truncated. + + If a value of a structured header is longer than 256 (MAXNAME) + characters then it may be truncated during output. For example, + if a single address in the To: header is longer than 256 characters + then it will be truncated which may result in a syntactically + invalid address. + * Delivery to programs that generate too much output may cause problems If e-mail is delivered to a program which generates too much @@ -258,4 +266,4 @@ Kresolve sequence dnsmx canon be used if set instead of LOCAL_RELAY ($R). This will be fixed in a future version. -$Revision: 8.60 $, Last updated $Date: 2007/12/04 01:16:50 $ +$Revision: 8.61 $, Last updated $Date: 2011/04/07 17:48:23 $ Modified: head/contrib/sendmail/LICENSE ============================================================================== --- head/contrib/sendmail/LICENSE Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/LICENSE Tue Jun 14 04:20:18 2011 (r223067) @@ -1,8 +1,9 @@ SENDMAIL LICENSE -The following license terms and conditions apply, unless a different -license is obtained from Sendmail, Inc., 6475 Christie Ave, Suite 350, -Emeryville, CA 94608, USA, or by electronic mail at license@sendmail.com. +The following license terms and conditions apply, unless a redistribution +agreement or other license is obtained from Sendmail, Inc., 6475 Christie +Ave, Third Floor, Emeryville, CA 94608, USA, or by electronic mail at +license@sendmail.com. License Terms: @@ -22,10 +23,11 @@ each of the following conditions is met: must allow further use, modification, and redistribution of the Source Code under substantially the same terms as this license. For the purposes of redistribution "Source Code" means the complete compilable - and linkable source code of sendmail including all modifications. + and linkable source code of sendmail and associated libraries and + utilities in the sendmail distribution including all modifications. -2. Redistributions of source code must retain the copyright notices as they - appear in each source code file, these license terms, and the +2. Redistributions of Source Code must retain the copyright notices as they + appear in each Source Code file, these license terms, and the disclaimer/limitation of liability set forth as paragraph 6 below. 3. Redistributions in binary form must reproduce the Copyright Notice, @@ -33,16 +35,16 @@ each of the following conditions is met: forth as paragraph 6 below, in the documentation and/or other materials provided with the distribution. For the purposes of binary distribution the "Copyright Notice" refers to the following language: - "Copyright (c) 1998-2009 Sendmail, Inc. All rights reserved." + "Copyright (c) 1998-2010 Sendmail, Inc. All rights reserved." 4. Neither the name of Sendmail, Inc. nor the University of California nor - the names of their contributors may be used to endorse or promote + names of their contributors may be used to endorse or promote products derived from this software without specific prior written permission. The name "sendmail" is a trademark of Sendmail, Inc. 5. All redistributions must comply with the conditions imposed by the - University of California on certain embedded code, whose copyright - notice and conditions for redistribution are as follows: + University of California on certain embedded code, which copyright + Notice and conditions for redistribution are as follows: (a) Copyright (c) 1988, 1993 The Regents of the University of California. All rights reserved. @@ -76,4 +78,4 @@ each of the following conditions is met: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -$Revision: 8.15 $, Last updated $Date: 2009/03/04 19:58:04 $ +$Revision: 8.17 $, Last updated $Date: 2010/12/03 01:10:00 $, Document 139848.1 Modified: head/contrib/sendmail/PGPKEYS ============================================================================== --- head/contrib/sendmail/PGPKEYS Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/PGPKEYS Tue Jun 14 04:20:18 2011 (r223067) @@ -142,6 +142,223 @@ gpExpdV7qPrw9k01j5rod5PjZlG8zV0= -----END PGP PUBLIC KEY BLOCK----- Type Bits KeyID Created Expires Algorithm Use +pub 2048 A97884B0 2011-01-04 ------- RSA Sign & Encrypt +fingerprint: 5872 6218 A913 400D E660 3601 39A4 C77D A978 84B0 +uid Sendmail Signing Key/2011 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.9 (OpenBSD) + +mQENBE0ios4BCAC0mjr+Fljl/LRvhI3sI29bM146dWJFr+oJVTHuafDuKQS5ICeU +89LewVL6Pjp8RureijfbqZC51Z2v5v6GxAizr/LlD9FohjQXiAaA1vgPChBdzvLg +4TzEVnQOGFuDUnuucQH82I7ysQkK7z1GpFkofKHHgwmcfFpOiRLoUR7YVP7yDpfv +Zx3EPvRoFtR22kWlhms49J7zgRpXUCH9ggrtcl1QCXkPOlZ+VspUPrZaZEZy8RTA +3W5l0yhnGVgnJHBfOo2svFurukQ7LAU4U6yCG5AFogcD3sgEvuFAkmWBJZ2rnOBn +yCL658zfAJlmrni8kLQp6yBuEsUrT6jdRgRBABEBAAG0MVNlbmRtYWlsIFNpZ25p +bmcgS2V5LzIwMTEgPHNlbmRtYWlsQFNlbmRtYWlsLk9SRz6JATkEEwECACMFAk0i +os4CGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRA5pMd9qXiEsHIXB/0S +PFGPpoJzQqcEUHZ8w21mJOhoB6eO3GYRXBBLODQbu3x5qMXgTXT2fZgsSO5zkKBD +QCm4lMns+cJCds1+ggAZLywNM1SUvctXJYIaHnSLEnEbxIgRMM+HdULlJn3xgT6w +HUVZhzjamXOLospz5BfIXx9NynvjxvjcZ/NI8Cas1WFPvP+89fT+VCzLw0eC1bAo +puv2CA384i7pqeCvw13taksA0QnpHeN9c2xjWA6LTbLBrDLoTkfxvas0H9WzgNTF +DpzSuIHyDFonrkSvdgyOCIUYWJ0qkzDYnJzaOd7ku+4YjcF1bw5FhbvXAvcBY8OA +Ilr9WaR2TGj7//OylOjNiQEcBBABAgAGBQJNIqNLAAoJEGBN+/KFQQq+gDEH/i7x +aOd7L+QV5rIYyujJdirVoO/9s1+YJkKmFAKltUPcj8vOulQrxjK1E4Wul1qzMclr +TpZnIb9lyoqIKlGFwx345iHFhDHdWeGFxMxeQBopyOmAZcfMIX2C22+EYGNZNUsO +xVxpNV0CzKTdbfPHmBFSbA4lWnkyFxZsTR0GmGXRluwc1kT3i98QJbqNudKzUSU4 +f0+3Uda3xrnLtmChSEc57PRSDV4jHdILxORcuHh3xi50y0J3JJ2Yj0utNZ/W2KWX +guO0WSaNxv7lcKv5ilTWA5WWRt42SZfHlTiBJVpWydRBTZQGJLR6GTWpMoMs5jwP +9BGlbcR9J5+wmOFT9BmInAQQAQIABgUCTSKjbwAKCRASiW6bp38kKRGJBAC+VwW2 +/kXhV70FPyny4RErQDtyovkyS4rqFLdTNWNu80xbgEZJZY9ZcxT8YLjePsPmDZ0R +d4omumo5M35/gAastE5UMC4JCFM4v/iUUZwm5LRQNn0UtSKsSdHf32OqJx0FBr5k +GAe9LAd6gIqkPMw4AaK5H+C3H9VbR4sWHr3AEYicBBABAgAGBQJNIqN3AAoJENiq +8Mr2swcpK94D/A30eBH+qNleOIlwocxV+Fu7g6rvIPdULeYSNLhi/cuXUzo0HREs +FowErSD9gSabBkHbAUUhz8gBIXBATUKDgPfoqUqzYZmWRz15jgbKv2vVF36v6uuj +C/xgVZJsgw5uaZkJM5TI7FCEIs8EfjtPGD3AG1zBYw1+cmls6x+sq6tsiJwEEAEC +AAYFAk0io40ACgkQl0MBGHCTuEEeRwP/eaawZ80/BoQLdlgz6nNsIhomtFZSPhMS +/AFMo+cd4G777R1VJijNiD2ou3/2QbcPfu8OPENFYMLAOcYxYTzCL7XgSWkMxAmF +l2S1/xNUIteUwReoWpp/TZfCaTyro1VrX5pbTf3EYRlkF1qStBwmFfwSIZazhabi +XjlG/rDXL4WInAQQAQIABgUCTSKjlwAKCRAee7PIr5WWJfQsBACcJNvwXwHZVaf3 ++7f2wvqk1HxQk/3x2A/kMBSl1KuWFHV/WGu7Abj8hrjdrBffeCo27TpOhNt5946X +dwBLl4LYNL2Ogi8lH4nR1DsLTcJKICzxveFN1pRafd7+raVqsg/pIVQnagjxbuTa +6ClKEqGnF23kfnjMmlkQgQqupXh6kYicBBABAgAGBQJNIqOfAAoJEHCgJE0e+ZJR +RKYD/17M7wr4tyR+cO1vEJWftFbVCuyKnlUGH4yqjvZhFI0G3NhGnHcjXtl5Tntu +6gUOzObitN1vL/n0BYOPX4ppQ52Ocv6I87geOXC9EDREy5fJU8kX9lGkDRwWJEcg +i88ap0L/8Z3ihtr73hKZp3V6zfBIKdR/RfxxjV3xe5AevuooiJwEEAECAAYFAk0i +o6YACgkQyNXtKZX2F3G35wQApLZxcOkchrNplG4YJMucVcPFyNzeUFL6yhV6PMIQ +Vz8/ktBYF3LK2QQBxIFBEINF8EslKZ7LSfiFTSvsAxb8OiXGV23qHnglfN2zLFrA +CR9wvZ7jtDHHFfhHoDN8d9PA2LQR7M9qJzf1ltTaSETm9bSEZ/wC+VHvw+EVQU2S +OlSInAQQAQIABgUCTSKjrgAKCRAhg+GxOW8HiYOzBACR7nqyHOXspyNy0k2iKkEN +yAaorX32AecPpwyee7G2+QLxbK8jGGcmh5NR/GUx3ZbdKroyMZHK6OrQi42NwC7Q +n9xnzzgUgSdKRwnsA1IyP7DpiBSXMdk0kCc6UJy2L9fanHbamAe0oSZAACt9ePYD +jjq4Jmf25ObWv16Hyv83N4icBBABAgAGBQJNIqPIAAoJEIlpYrhnjAoDa9sD/inn +1dFkBlDPlPtGwHbw3+qCk8y6h3HpZubae7FxdE1pzsh/G00pB7Wy5K/EHL3MKlul +TxtetwQhSrYBmsPD5t3BhDKIyU2MQuec8dbJw/O1/7xGYmG1O4gGwq9vM4C2g+wz +atMl2pQnmi9DhhxFTwxhTgeorQ7nXrTclbuaqyLSiJwEEAECAAYFAk0io9EACgkQ +OCLbR8w3Ty1JCgQAjkZe0O9GZko22lkc7/3eql8zKwBx3Fpugt1NZ9nyOxeS2WpO +FfuiAiruA+p1L7b/dC60BUu+z6pgGIs05vIvPzzqjxnPBhqeYwWeW3ABa4JMVDi1 +RkR4TK6PsEj6IE7ZatzqiPST/GNRrjvpqtNyLsEbybPdY13hZSmxb780d1mInAQQ +AQIABgUCTSKj2gAKCRCcHL3i41xWNXseA/93476LuPukf9rKz9hvf88HrK5O0YPc +jG/CU2nFLhRbo5gkGFyf7540pODGBaCHyqwT46etzVY+WtZ1fETN0ALIJwoXkbwM +QE637pwnCLUO6ZTixa6CwceWXXAIc5/hiuQn0uKL8x4kHUcMUZqggYvqrjG1ZEDG +ZCVuTes1yhalDYicBBABAgAGBQJNIqPnAAoJEG9Sk9ijm6ZVpFYD/1OyjV5+9N/2 +rGbKcfaDXqTM0cvBjs1vBvFJfmDCy3fcOv590SboiCwY6dt5Sd6eRruY4FaTnosI +V4MZZnvMq1W3KfbT6fvcli/hgTKwYfJM7Mj+Tdp3uOGXN1u+cvKEfY3YHwDb4NAc +G3jPSslu1nrZq84bsokhnE+en8du7mKPiJwEEAECAAYFAk0io+8ACgkQ71iWZNQy +4Z1jiQP8CdqzrpIpNuKOs1nVcMsX+T1ZdiNbqbPYbjhQx7isUoaarDk/tQZZGxDE +dEXayRuNobRzQXltAKOhBrXlN2yFP9d9BR1y8B3dVBO9vsThuQ1BtMrtLrAL5In9 +4RyAvpuKcOhWnf9kJLis2MGghhIllJMuXOFeyujE3A4HSHFqGDWInAQQAQIABgUC +TSKj+gAKCRDBnB0lEtNGHaOHA/4+zClhAJappAYqATHLCs8mgzYa0/9RvI+e6iV8 +OD8/BOJl4DnHya0ijX7Kt78VJymcmdXge1ypBnq4D2b/vTo18asDfzysPhAmPoCK +FTlerV9xV/TW/QBZ7EkPW3BwOQW7LYnFd/NnoiX4z+KWh9FwOVWlXPz8xKgBgX3V +yoz3l4icBBABAgAGBQJNIqQhAAoJEMApykAW9MzppmsD/1HonMTzk4X9qvhvaLTU +/OKvOzxIdX6b/62DA0WZxN3Duyh2S8OLZzryI9SASesk5vgb2uSMC3dVCwOcfsiz +QWqStOLG5eyYJh0/iiRZ2K4YM/FrFBo3+AmQ2IeL3qRftBWGyIf11l1ZFS3Uzp8t +uzIxUFcQU2bJpy7GjHcq989qiJwEEAECAAYFAk0ipIwACgkQvdqP1j/qff3gwwP/ +WTAZ3r8UYbMoIN+ES8A9xLvUZRh/aT7TtiFCLxmJXIk3e+XKHw57DO3WUgZEo99d +PYNm/Q3tTqT+fj1rIDH9VdxhiSVw2lq/7qoIoYFb1fyCtuMQ+27jF/AFqbkDQJYx +gcnalClseYEsA9+GYKYfY0UAQePuDuWBMSPMkM+m+e+InAQQAQIABgUCTSKkqgAK +CRB8S2dtoA4VY+t1A/922nF4Apuc162UVBiP+v67PeXLgekdkjqlDACxqqgWWerW +6e41VaznDZjIGx76pQSbguCq7XbQXkiqO3E7bHcbjC8OEZ1Glju13GZG3heaoc23 +4n5pNctLmBWSdrp/4RCaf1BAgZ0UAYPO9fR7ZJyenp3vID8vwKTufoy0nR8/MIic +BBABAgAGBQJNIqS6AAoJENbgof5PvirdRDID/39vOWdqbvu17vX2n3GBI4RYseA2 +1pmvDqvzQcLLDJAXr1auTY7uiotYlXA8qPd4KTy0hCcj2r+7lZMhY1mCumG/0Sp+ +CahRkvUk/rVgWLeK0WGEsCV4IcayKc6ARJVKW+JHUNc1eAScMDAlMOyg0cNtQeDA +huCt6hxL1YGTPpPSiJwEEAECAAYFAk0on/MACgkQzx61AyIyegHYdAP/c4bKqid9 +lK7ciLbuo7RD0ZngCy+mE+xI4EQV+5LEhFVrqT+fMzSlHKLZGbPPJ2yP1ksBJITw +cYh7wGN7Dc1xA5bnB0CtjUWYqGRcQoifbgetdee2AfRs0+RvnEo5FMJIBlJOPc2X +o5eDTxmoSrt7cxnh7PEZnbxZi1gp/wJ+E+iIRgQQEQIABgUCTTHB2wAKCRAJp6JK +0eWCBxuyAJkBu7Qu46EFKyVyC8eUFwLJkghR2gCdHQUS7eF9pXHFr6aN3J2VrGFe +mFiIRgQQEQIABgUCTTUNYgAKCRDCeBwaRrHv4ROhAJ99EeU9KWWDnd2RjCN7uex5 +S6u3rQCeLUshZhe/NCehUnaaC8LJ1kwj/5yIRgQQEQIABgUCTTWM/AAKCRCWnNph +S7Y2S8bjAJ9bOB/fFGyPgTuwQIEakXITRILLgwCgvrjaVZagTRwQW2BM1uH+vk9j +yDuIRgQQEQIABgUCTUMwnwAKCRCiu/skDPlW91hCAJ0eizb5bxByUpXY0qsbcupw +H3kiBwCg1Yc7cur+Yz2dhPuRreaPk4QeVrWIRgQQEQIABgUCTUMxEgAKCRD7VAFa ++haI7RKlAKCGogTWoJdDbetwBdRpRJ72d9qUgACfUehPWCmq2A/mIaMFlPI+F3k3 +Lk25AQ0ETSKizgEIALV2tE8RtEgC1fjw4zHrZVUChXKm1uVEkRkeoaASrAI4IiK+ +qtgbNEzhLEQavQaIZECQLCaQb5qzvKLCEvuo5tClU+2P4/YjnikdBDFXUwHznSmd +N27SsX6gNoeX/ZwaEJUNpMd/v+/Gu9QmMBIFUhtXXZyeBBpCyi6CP5jw66KjjH1g +OXCQvSYJVlutIGtzvHolvQ2I+h6Ztwy9d7pFIVlr7EymFI+x0oI/i4UwF3FZPVWO +C1OZD7suXSre+eLzYXGBYyHkvGldhA/hvKLs3Z6udcirTMtX27xL6C5WKaCsuQPu +ZiYWxJ2A9UgP6zTuBzmAJ4XXKo7QgamAbxHT0sMAEQEAAYkBHwQYAQIACQUCTSKi +zgIbDAAKCRA5pMd9qXiEsI/1CACv83SSDOBt6HZcg7ucOZJ7Wkb5EJG6Mseh/K33 +CFDwWgYa20YeUUzPWD3ZRKY4irNL3ipnB3tJUF4yaasTPpI0owpcdCkOhpDw9S7M +AOnUACuv3JIZ17892ZLjXalNGMY/23qPxbQIaAidNh02ouZ6Md+NUvgh22+oDa+v +kxTkXmKiBGFpqY2myzzPvg84TMTpRBU372CZpmjjHK8duObUr9I0iIbVzshdnWuR +MKGu+n4hSU3SIYl6xLsdBGpiDOQJ3C1YHIduhDrQlyAjDVEgzgw20DUxUzKIpn2b +KH6d5q94eHcPD56A4cYD275DIZzAYqRpwzmB9O845HrHAPmQ +=pDAG +-----END PGP PUBLIC KEY BLOCK----- + +Type Bits KeyID Created Expires Algorithm Use +pub 2048 85410ABE 2010-02-19 ------- RSA Sign +fingerprint: B175 9644 5303 5DCE DD7B E919 604D FBF2 8541 0ABE +uid Sendmail Signing Key/2010 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.9 (OpenBSD) + +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 +A4NAZlDwxoivB/5PTy67pX+AC1JgvPPafUMu +=6Xeh +-----END PGP PUBLIC KEY BLOCK----- + +Type Bits KeyID Created Expires Algorithm Use pub 1024 0xA77F2429 2009-01-01 ---------- RSA Sign & Encrypt f16 Fingerprint16 = 33 3A 62 61 2C F3 21 AA 4E 87 47 F2 2F 2C 40 4D uid Sendmail Signing Key/2009 @@ -1865,4 +2082,4 @@ DnF3FZZEzV7oqPwC2jzv/1dD6GFhtgy0cnyoPGUJ =nES8 -----END PGP PUBLIC KEY BLOCK----- -$Revision: 8.29 $, Last updated $Date: 2009/01/06 05:59:03 $ +$Revision: 8.36 $, Last updated $Date: 2011/01/28 21:17:54 $ Modified: head/contrib/sendmail/RELEASE_NOTES ============================================================================== --- head/contrib/sendmail/RELEASE_NOTES Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/RELEASE_NOTES Tue Jun 14 04:20:18 2011 (r223067) @@ -1,11 +1,75 @@ SENDMAIL RELEASE NOTES - $Id: RELEASE_NOTES,v 8.1963 2009/12/23 04:43:46 ca Exp $ + $Id: RELEASE_NOTES,v 8.1991 2011/05/15 04:28:16 ca Exp $ This listing shows the version of the sendmail binary, the version of the sendmail configuration files, the date of release, and a summary of the changes in that release. +8.14.5/8.14.5 2011/05/17 + Do not cache SMTP extensions across connections as the cache + is based on hostname which may not be a unique identifier + for a server, i.e., different machines may have the + same hostname but provide different SMTP extensions. + Problem noted by Jim Hermann. + Avoid an out-of-bounds access in case a resolver reply for a DNS + map lookup returns a size larger than 1K. Based on a + patch from Dr. Werner Fink of SuSE. + If a job is aborted using the interrupt signal (e.g., control-C from + the keyboard), perform minimal cleanup to avoid invoking + functions that are not signal-safe. Note: in previous + versions the mail might have been queued up already + and would be delivered subsequently, now an interrupt + will always remove the queue files and thus prevent + delivery. + Per RFC 6176, when operating as a TLS client, do not offer SSLv2. + Since TLS session resumption is never used as a client, disable + use of RFC 4507-style session tickets. + Work around gcc4 versions which reverse 25 years of history and + no longer align char buffers on the stack, breaking calls + to resolver functions on strict alignment platforms. + Found by Stuart Henderson of OpenBSD. + Read at most two AUTH lines from a server greeting (up to two + lines are read because servers may use "AUTH mechs" and + "AUTH=mechs"). Otherwise a malicious server may exhaust + the memory of the client. Bug report by Nils of MWR + InfoSecurity. + Avoid triggering an assertion in the OpenLDAP code when the + connection to an LDAP server is lost while making a query. + Problem noted and patch provided by Andy Fiddaman. + If ConnectOnlyTo is set and sendmail is compiled with NETINET6 + it would try to use an IPv6 address if an IPv4 (or + unparseable) address is specified. + If SASLv2 is used, make sure that the macro {auth_authen} is + stored in xtext format to avoid problems with parsing + it. Problem noted by Christophe Wolfhugel. + CONFIG: FEATURE(`ldap_routing') in 8.14.4 tried to add a missing + -T that is required, but failed for some cases + that did not use LDAP. This change has been undone + until a better solution can be implemented. Problem + found by Andy Fiddaman. + CONFIG: Add cf/ostype/solaris11.m4 for Solaris11 support. + Contributed by Casper Dik of Oracle. + CONTRIB: qtool.pl: Deal with H entries that do not have a + letter between the question marks. Patch from + Stefan Christensen. + DOC: Use a better description for the -i option in sendmail. + Patch from Mitchell Berger. + Portability: + Add support for Darwin 10.x (Mac OS X 10.6). + Enable HAVE_NANOSLEEP for FreeBSD 3 and later. Patch + from John Marshall. + Enable HAVE_NANOSLEEP for OpenBSD 4.3 and later. + Use new directory "/system/volatile" for PidFile on + Solaris 11. Patch from Casper Dik of Oracle. + Fix compilation on Solaris 11 (and maybe some other + OSs) when using OpenSSL 1.0. Based on patch from + Jan Pechanec of Oracle. + Set SOCKADDR_LEN_T and SOCKOPT_LEN_T to socklen_t + for Solaris 11. Patch from Roger Faulkner of Oracle. + New Files: + cf/ostype/solaris11.m4 + 8.14.4/8.14.4 2009/12/30 SECURITY: Handle bogus certificates containing NUL characters in CNs by placing a string indicating a bad certificate Modified: head/contrib/sendmail/cf/cf/submit.cf ============================================================================== --- head/contrib/sendmail/cf/cf/submit.cf Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/cf/cf/submit.cf Tue Jun 14 04:20:18 2011 (r223067) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -16,8 +16,8 @@ ##### ##### SENDMAIL CONFIGURATION FILE ##### -##### built by ca@wiz.smi.sendmail.com on Tue Dec 22 20:49:09 PST 2009 -##### in /extra/home/ca/sm-8.14.4/OpenSource/sendmail-8.14.4/cf/cf +##### built by ca@wiz.smi.sendmail.com on Sat May 14 21:31:14 PDT 2011 +##### in /extra/home/ca/sm-8.14.5/OpenSource/sendmail-8.14.5/cf/cf ##### using ../ as configuration include directory ##### ###################################################################### @@ -27,7 +27,7 @@ ###################################################################### ###################################################################### -##### $Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $ ##### +##### $Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $ ##### ##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ ##### ##### $Id: submit.mc,v 8.14 2006/04/05 05:54:41 ca Exp $ ##### ##### $Id: msp.m4,v 1.33 2004/02/09 22:32:38 ca Exp $ ##### @@ -35,7 +35,7 @@ ##### $Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $ ##### -##### $Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $ ##### +##### $Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $ ##### # level 10 config file format V10/Berkeley @@ -114,7 +114,7 @@ D{MTAHost}[127.0.0.1] # Configuration version number -DZ8.14.4/Submit +DZ8.14.5/Submit ############### @@ -992,7 +992,6 @@ R< $* > $* $: $2 - ###################################################################### ### check_mail -- check SMTP `MAIL FROM:' command argument ###################################################################### Modified: head/contrib/sendmail/cf/feature/ldap_routing.m4 ============================================================================== --- head/contrib/sendmail/cf/feature/ldap_routing.m4 Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/cf/feature/ldap_routing.m4 Tue Jun 14 04:20:18 2011 (r223067) @@ -1,6 +1,6 @@ divert(-1) # -# Copyright (c) 1999-2002, 2004, 2007, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1999-2002, 2004, 2007 Sendmail, Inc. and its suppliers. # All rights reserved. # # By using this file, you agree to the terms and conditions set @@ -10,7 +10,7 @@ divert(-1) # divert(0) -VERSIONID(`$Id: ldap_routing.m4,v 8.17 2009/06/26 21:11:08 ca Exp $') +VERSIONID(`$Id: ldap_routing.m4,v 8.18 2010/01/05 00:57:27 ca Exp $') divert(-1) # Check first two arguments. If they aren't set, may need to warn in proto.m4 @@ -35,40 +35,12 @@ ifelse(len(X`'_ARG6_), `1', `define(`_LD _ARG6_, `tempfail', `define(`_LDAP_ROUTE_MAPTEMP_', `_TEMPFAIL_')', _ARG6_, `queue', `define(`_LDAP_ROUTE_MAPTEMP_', `_QUEUE_')') -define(`_ATMPF_', `')dnl -dnl check whether arg contains -T`'_ATMPF_ -dnl unless it is a sequence map or just LDAP -dnl note: this does not work if ARG1 begins with space(s), however, as -dnl we issue a warning, hopefully the user will fix it... -ifelse(defn(`_ARG1_'), `', `', - defn(`_ARG1_'), `LDAP', `', - `ifelse(index(_ARG1_, `sequence '), `0', `', - `ifelse(index(_ARG1_, _ATMPF_), `-1', - `errprint(`*** WARNING: missing -T'_ATMPF_` in first argument of FEATURE(`ldap_routing') -') - define(`_ABP_', index(_ARG1_, ` ')) - define(`_NARG1_', `substr(_ARG1_, 0, _ABP_) -T'_ATMPF_` substr(_ARG1_, _ABP_)') - ') - ') - ') -ifelse(defn(`_ARG2_'), `', `', - defn(`_ARG2_'), `LDAP', `', - `ifelse(index(_ARG2_, `sequence '), `0', `', - `ifelse(index(_ARG2_, _ATMPF_), `-1', - `errprint(`*** WARNING: missing -T'_ATMPF_` in second argument of FEATURE(`ldap_routing') -') - define(`_ABP_', index(_ARG2_, ` ')) - define(`_NARG2_', `substr(_ARG2_, 0, _ABP_) -T'_ATMPF_` substr(_ARG2_, _ABP_)') - ') - ') - ') - LOCAL_CONFIG # LDAP routing maps Kldapmh ifelse(len(X`'_ARG1_), `1', `ldap -1 -T -v mailHost -k (&(objectClass=inetLocalMailRecipient)(mailLocalAddress=%0))', - defn(`_NARG1_'), `', `_ARG1_', `_NARG1_') + `_ARG1_') Kldapmra ifelse(len(X`'_ARG2_), `1', `ldap -1 -T -v mailRoutingAddress -k (&(objectClass=inetLocalMailRecipient)(mailLocalAddress=%0))', - defn(`_NARG2_'), `', `_ARG2_', `_NARG2_') + `_ARG2_') Modified: head/contrib/sendmail/cf/m4/cfhead.m4 ============================================================================== --- head/contrib/sendmail/cf/m4/cfhead.m4 Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/cf/m4/cfhead.m4 Tue Jun 14 04:20:18 2011 (r223067) @@ -1,5 +1,5 @@ # -# Copyright (c) 1998-2004, 2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2004, 2009, 2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -189,6 +189,7 @@ SLocal_tls_server') define(`LOCAL_RULE_3', `divert(2)') define(`LOCAL_CONFIG', `divert(6)') define(`MAILER_DEFINITIONS', `divert(7)') +define(`LOCAL_DNSBL', `divert(8)') define(`LOCAL_NET_CONFIG', `define(`_LOCAL_RULES_', 1)divert(1)') define(`UUCPSMTP', `R DOL(*) < @ $1 .UUCP > DOL(*) DOL(1) < @ $2 > DOL(2)') define(`CONCAT', `$1$2$3$4$5$6$7') @@ -308,4 +309,4 @@ define(`confMILTER_MACROS_EOM', `{msg_id divert(0)dnl -VERSIONID(`$Id: cfhead.m4,v 8.120 2009/01/23 22:39:21 ca Exp $') +VERSIONID(`$Id: cfhead.m4,v 8.121 2010/01/07 18:20:19 ca Exp $') Modified: head/contrib/sendmail/cf/m4/proto.m4 ============================================================================== --- head/contrib/sendmail/cf/m4/proto.m4 Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/cf/m4/proto.m4 Tue Jun 14 04:20:18 2011 (r223067) @@ -1,6 +1,6 @@ divert(-1) # -# Copyright (c) 1998-2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2010 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -13,10 +13,10 @@ divert(-1) # divert(0) -VERSIONID(`$Id: proto.m4,v 8.741 2009/12/11 00:04:53 ca Exp $') +VERSIONID(`$Id: proto.m4,v 8.744 2010/11/23 20:29:47 guenther Exp $') # level CF_LEVEL config file format -V`'CF_LEVEL/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley') +V`'CF_LEVEL`'ifdef(`NO_VENDOR',`', `/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley')') divert(-1) dnl if MAILER(`local') not defined: do it ourself; be nice @@ -1795,7 +1795,7 @@ ifdef(`_CONN_CONTROL_',`dnl ifdef(`_CONN_CONTROL_IMMEDIATE_',`',`dnl dnl workspace: ignored... R$* $: $>"ConnControl" dummy')', `dnl') -undivert(8) +undivert(8)dnl LOCAL_DNSBL ifdef(`_REQUIRE_RDNS_', `dnl R$* $: $&{client_addr} $| $&{client_resolve} R$=R $* $@ RELAY We relay for these Modified: head/contrib/sendmail/cf/m4/version.m4 ============================================================================== --- head/contrib/sendmail/cf/m4/version.m4 Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/cf/m4/version.m4 Tue Jun 14 04:20:18 2011 (r223067) @@ -1,6 +1,6 @@ divert(-1) # -# Copyright (c) 1998-2009 Sendmail, Inc. and its suppliers. +# Copyright (c) 1998-2011 Sendmail, Inc. and its suppliers. # All rights reserved. # Copyright (c) 1983 Eric P. Allman. All rights reserved. # Copyright (c) 1988, 1993 @@ -11,8 +11,8 @@ divert(-1) # the sendmail distribution. # # -VERSIONID(`$Id: version.m4,v 8.205 2009/12/23 04:43:09 ca Exp $') +VERSIONID(`$Id: version.m4,v 8.214 2011/04/26 23:02:36 ca Exp $') # divert(0) # Configuration version number -DZ8.14.4`'ifdef(`confCF_VERSION', `/confCF_VERSION') +DZ8.14.5`'ifdef(`confCF_VERSION', `/confCF_VERSION') Copied: head/contrib/sendmail/cf/ostype/solaris11.m4 (from r223065, vendor/sendmail/dist/cf/ostype/solaris11.m4) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/sendmail/cf/ostype/solaris11.m4 Tue Jun 14 04:20:18 2011 (r223067, copy of r223065, vendor/sendmail/dist/cf/ostype/solaris11.m4) @@ -0,0 +1,22 @@ +divert(-1) +# +# Copyright (c) 2011 Sendmail, Inc. and its suppliers. +# All rights reserved. +# +# By using this file, you agree to the terms and conditions set +# forth in the LICENSE file which can be found at the top level of +# the sendmail distribution. +# +# This ostype file is suitable for use on Solaris 11 and later systems, +# make use of /system/volatile, introduced in Solaris 11. +# + +divert(0) +VERSIONID(`$Id: solaris11.m4,v 1.1 2011/01/24 21:22:08 ca Exp $') +divert(-1) + +ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')') +define(`confEBINDIR', `/usr/lib')dnl +define(`confPID_FILE', `/system/volatile/sendmail.pid')dnl +define(`_NETINET6_')dnl +FEATURE(`local_lmtp')dnl Modified: head/contrib/sendmail/contrib/qtool.pl ============================================================================== --- head/contrib/sendmail/contrib/qtool.pl Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/contrib/qtool.pl Tue Jun 14 04:20:18 2011 (r223067) @@ -3,7 +3,7 @@ ## Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers. ## All rights reserved. ## -## $Id: qtool.pl,v 8.30 2009/03/04 16:57:30 ca Exp $ +## $Id: qtool.pl,v 8.31 2010/11/10 19:11:54 ca Exp $ ## use strict; use File::Basename; @@ -607,7 +607,7 @@ sub parse_header $first_char = substr($line, 0, 1); if ($first_char eq "?") { - $line = substr($line, 3); + $line = (split(/\?/, $line,3))[2]; } elsif ($first_char eq "\t") { Modified: head/contrib/sendmail/doc/op/op.me ============================================================================== --- head/contrib/sendmail/doc/op/op.me Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/doc/op/op.me Tue Jun 14 04:20:18 2011 (r223067) @@ -9,7 +9,7 @@ .\" the sendmail distribution. .\" .\" -.\" $Id: op.me,v 8.745 2009/12/13 04:12:46 ca Exp $ +.\" $Id: op.me,v 8.747 2010/05/08 04:18:27 ca Exp $ .\" .\" eqn op.me | pic | troff -me .\" @@ -90,7 +90,7 @@ Sendmail, Inc. .de Ve Version \\$2 .. -.Ve $Revision: 8.745 $ +.Ve $Revision: 8.747 $ .rm Ve .sp For Sendmail Version 8.14 @@ -1095,6 +1095,9 @@ The number of envelope recipients for th (after aliasing and forwarding). .ip msgid The message id of the message (from the header). +.ip bodytype +The message body type (7BIT or 8BITMIME), +as determined from the envelope. .ip proto The protocol used to receive this message (e.g., ESMTP or UUCP) .ip daemon @@ -5154,7 +5157,8 @@ FAIL cert presented but could not be ver e.g., the signing CA is missing. NONE STARTTLS has not been performed. TEMP temporary error occurred. -PROTOCOL some protocol error occurred. +PROTOCOL some protocol error occurred + at the ESMTP level (not TLS). SOFTWARE STARTTLS handshake failed, which is a fatal error for this session, the e-mail will be queued. @@ -11463,7 +11467,7 @@ replace it with a blank sheet for double .\".sz 10 .\"Eric Allman .\".sp -.\"Version $Revision: 8.745 $ +.\"Version $Revision: 8.747 $ .\".ce 0 .bp 3 .ce Modified: head/contrib/sendmail/include/sm/conf.h ============================================================================== --- head/contrib/sendmail/include/sm/conf.h Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/include/sm/conf.h Tue Jun 14 04:20:18 2011 (r223067) @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2009 Sendmail, Inc. and its suppliers. + * Copyright (c) 1998-2011 Sendmail, Inc. and its suppliers. * All rights reserved. * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved. * Copyright (c) 1988, 1993 @@ -10,7 +10,7 @@ * the sendmail distribution. * * - * $Id: conf.h,v 1.139 2009/06/16 23:41:32 ca Exp $ + * $Id: conf.h,v 1.144 2011/05/03 16:24:00 ca Exp $ */ /* @@ -381,6 +381,12 @@ typedef int pid_t; # ifndef __svr4__ # define __svr4__ /* use all System V Release 4 defines below */ # endif /* ! __svr4__ */ +# if SOLARIS >= 21100 +# include +# endif /* SOLARIS >= 21100 */ +# ifndef _PATH_VARRUN +# define _PATH_VARRUN "/var/run/" +# endif /* _PATH_VARRUN */ # define GIDSET_T gid_t # define USE_SA_SIGACTION 1 /* use sa_sigaction field */ # define BROKEN_PTHREAD_SLEEP 1 /* sleep after pthread_create() fails */ @@ -443,7 +449,7 @@ typedef int pid_t; # endif /* SOLARIS >= 20700 || (SOLARIS < 10000 && SOLARIS >= 207) */ # if SOLARIS >= 20800 || (SOLARIS < 10000 && SOLARIS >= 208) # undef _PATH_SENDMAILPID /* tmpfs /var/run added in 2.8 */ -# define _PATH_SENDMAILPID "/var/run/sendmail.pid" +# define _PATH_SENDMAILPID _PATH_VARRUN "sendmail.pid" # ifndef SMRSH_CMDDIR # define SMRSH_CMDDIR "/var/adm/sm.bin" # endif /* ! SMRSH_CMDDIR */ @@ -461,6 +467,8 @@ typedef int pid_t; # if SOLARIS >= 21100 || (SOLARIS < 10000 && SOLARIS >= 211) # define GETLDAPALIASBYNAME_VERSION 2 /* changed in S11 */ # define HAVE_NANOSLEEP 1 /* moved from librt to libc in S11 */ +# define SOCKADDR_LEN_T socklen_t /* arg#3 to accept, getsockname */ +# define SOCKOPT_LEN_T socklen_t /* arg#5 to getsockopt */ # endif /* SOLARIS >= 21100 || (SOLARIS < 10000 && SOLARIS >= 211) */ # ifndef HASGETUSERSHELL # define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps pre-2.7 */ @@ -1014,6 +1022,9 @@ extern unsigned int sleepX __P((unsigned # if __FreeBSD_version >= 222000 /* 2.2.2-release and later */ # define HASSETUSERCONTEXT 1 /* BSDI-style login classes */ # endif /* __FreeBSD_version >= 222000 */ +# if __FreeBSD_version >= 300000 /* 3.0.0-release and later */ +# define HAVE_NANOSLEEP 1 /* has nanosleep(2) */ +# endif /* __FreeBSD_version >= 300000 */ # if __FreeBSD_version >= 330000 /* 3.3.0-release and later */ # ifndef SMRSH_CMDDIR # define SMRSH_CMDDIR "/usr/libexec/sm.bin" @@ -1055,6 +1066,9 @@ extern unsigned int sleepX __P((unsigned # if OpenBSD >= 200505 # undef NETISO /* iso.h removed in 3.7 */ # endif /* OpenBSD >= 200505 */ +# if OpenBSD >= 200800 +# define HAVE_NANOSLEEP 1 /* has nanosleep(2) */ +# endif /* OpenBSD >= 200800 */ # endif /* defined(__OpenBSD__) */ # endif /* defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) */ @@ -2808,7 +2822,7 @@ struct utsname # if _FFR_LINUX_MHNL && defined(__linux__) && MAXHOSTNAMELEN < 255 /* - ** override Linux wierdness: a FQHN can be 255 chars long + ** override Linux weirdness: a FQHN can be 255 chars long ** SUSv3 requires HOST_NAME_MAX ("Maximum length of a host ** name (not including the terminating null) as returned from the ** gethostname() function.") to be at least 255. c.f.: Modified: head/contrib/sendmail/libmilter/docs/overview.html ============================================================================== --- head/contrib/sendmail/libmilter/docs/overview.html Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/libmilter/docs/overview.html Tue Jun 14 04:20:18 2011 (r223067) @@ -4,7 +4,7 @@

    Technical Overview

    @@ -126,7 +126,7 @@ messages may be sent in a single connect Note also that a message or connection may be aborted by either the remote host or the MTA at any point during the SMTP transaction. -f this occurs during a message (between the MAIL command and the final "."), +If this occurs during a message (between the MAIL command and the final "."), the filter's xxfi_abort routine will be called. xxfi_close is called any time the Modified: head/contrib/sendmail/libmilter/docs/smfi_stop.html ============================================================================== --- head/contrib/sendmail/libmilter/docs/smfi_stop.html Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/libmilter/docs/smfi_stop.html Tue Jun 14 04:20:18 2011 (r223067) @@ -2,7 +2,7 @@ smfi_stop

    smfi_stop

    @@ -42,7 +42,7 @@ which may then exit or warm-restart. -
    ArgumentDescription
    voidTakes no arguement. + Takes no argument.
    Modified: head/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html ============================================================================== --- head/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html Tue Jun 14 04:20:18 2011 (r223067) @@ -2,7 +2,7 @@ xxfi_envrcpt

    xxfi_envrcpt

    @@ -71,7 +71,8 @@ Handle the envelope RCPT command. SMFIS_ACCEPT - Accept recipient. xxfi_abort will not be called. + Accept this message. + xxfi_abort will not be called. @@ -87,7 +88,7 @@ Handle the envelope RCPT command.
    -Copyright (c) 2000, 2003 Sendmail, Inc. and its suppliers. +Copyright (c) 2000, 2003, 2010 Sendmail, Inc. and its suppliers. All rights reserved.
    By using this file, you agree to the terms and conditions set Modified: head/contrib/sendmail/libmilter/engine.c ============================================================================== --- head/contrib/sendmail/libmilter/engine.c Tue Jun 14 04:20:17 2011 (r223066) +++ head/contrib/sendmail/libmilter/engine.c Tue Jun 14 04:20:18 2011 (r223067) @@ -9,7 +9,7 @@ */ #include -SM_RCSID("@(#)$Id: engine.c,v 8.166 2009/11/06 00:57:07 ca Exp $") +SM_RCSID("@(#)$Id: engine.c,v 8.167 2011/03/03 06:09:15 ca Exp $") #include "libmilter.h" @@ -284,7 +284,7 @@ mi_engine(ctx) if (mi_stop() == MILTER_ABRT) { if (ctx->ctx_dbg > 3) - sm_dprintf("[%ld] milter_abort\n", + sm_dprintf("[%lu] milter_abort\n", (long) ctx->ctx_id); ret = MI_FAILURE; break; @@ -315,7 +315,7 @@ mi_engine(ctx) cmd < SMFIC_VALIDCMD) { if (ctx->ctx_dbg > 5) - sm_dprintf("[%ld] mi_engine: mi_rd_cmd error (%x)\n", + sm_dprintf("[%lu] mi_engine: mi_rd_cmd error (%x)\n", (long) ctx->ctx_id, (int) cmd); /* @@ -328,7 +328,7 @@ mi_engine(ctx) break; } if (ctx->ctx_dbg > 4) - sm_dprintf("[%ld] got cmd '%c' len %d\n", + sm_dprintf("[%lu] got cmd '%c' len %d\n", (long) ctx->ctx_id, cmd, (int) len); for (i = 0; i < ncmds; i++) { @@ -339,7 +339,7 @@ mi_engine(ctx) { /* unknown command */ if (ctx->ctx_dbg > 1) - sm_dprintf("[%ld] cmd '%c' unknown\n", + sm_dprintf("[%lu] cmd '%c' unknown\n", (long) ctx->ctx_id, cmd); ret = MI_FAILURE; break; @@ -348,7 +348,7 @@ mi_engine(ctx) { /* stop for now */ if (ctx->ctx_dbg > 1) - sm_dprintf("[%ld] cmd '%c' not impl\n", + sm_dprintf("[%lu] cmd '%c' not impl\n", (long) ctx->ctx_id, cmd); ret = MI_FAILURE; break; @@ -357,14 +357,14 @@ mi_engine(ctx) /* is new state ok? */ newstate = cmds[i].cm_next; if (ctx->ctx_dbg > 5) - sm_dprintf("[%ld] cur %x new %x nextmask %x\n", + sm_dprintf("[%lu] cur %x new %x nextmask %x\n", (long) ctx->ctx_id, curstate, newstate, next_states[curstate]); if (newstate != ST_NONE && !trans_ok(curstate, newstate)) { if (ctx->ctx_dbg > 1) - sm_dprintf("[%ld] abort: cur %d (%x) new %d (%x) next %x\n", + sm_dprintf("[%lu] abort: cur %d (%x) new %d (%x) next %x\n", (long) ctx->ctx_id, curstate, MI_MASK(curstate), newstate, MI_MASK(newstate), @@ -434,7 +434,7 @@ mi_engine(ctx) else if (r == _SMFIS_ABORT) { if (ctx->ctx_dbg > 5) - sm_dprintf("[%ld] function returned abort\n", + sm_dprintf("[%lu] function returned abort\n", (long) ctx->ctx_id); ret = MI_FAILURE; break; @@ -1122,7 +1122,7 @@ st_optionneg(g) fix_stm(ctx); if (ctx->ctx_dbg > 3) - sm_dprintf("[%ld] milter_negotiate:" + sm_dprintf("[%lu] milter_negotiate:" " mta_actions=0x%lx, mta_flags=0x%lx" " actions=0x%lx, flags=0x%lx\n" , (long) ctx->ctx_id @@ -1131,7 +1131,7 @@ st_optionneg(g) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 04:33:44 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 41BBE106564A; Tue, 14 Jun 2011 04:33:44 +0000 (UTC) (envelope-from gshapiro@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 317B98FC0A; Tue, 14 Jun 2011 04:33:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E4XiC7013541; Tue, 14 Jun 2011 04:33:44 GMT (envelope-from gshapiro@svn.freebsd.org) Received: (from gshapiro@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E4XirN013539; Tue, 14 Jun 2011 04:33:44 GMT (envelope-from gshapiro@svn.freebsd.org) Message-Id: <201106140433.p5E4XirN013539@svn.freebsd.org> From: Gregory Neil Shapiro Date: Tue, 14 Jun 2011 04:33:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223068 - head/etc/sendmail X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 04:33:44 -0000 Author: gshapiro Date: Tue Jun 14 04:33:43 2011 New Revision: 223068 URL: http://svn.freebsd.org/changeset/base/223068 Log: Update DNSBL information (MAPS has been acquired, used a generic example) Modified: head/etc/sendmail/freebsd.mc Modified: head/etc/sendmail/freebsd.mc ============================================================================== --- head/etc/sendmail/freebsd.mc Tue Jun 14 04:20:18 2011 (r223067) +++ head/etc/sendmail/freebsd.mc Tue Jun 14 04:33:43 2011 (r223068) @@ -66,12 +66,10 @@ dnl so this file will not serve as a dat dnl For that, visit dnl http://www.google.com/Top/Computers/Internet/E-mail/Spam/Blacklists/ -dnl Uncomment to activate Realtime Blackhole List -dnl information available at http://www.mail-abuse.com/ -dnl NOTE: This is a subscription service as of July 31, 2001 -dnl FEATURE(dnsbl) +dnl Uncomment to activate your chosen DNS based blacklist +dnl FEATURE(dnsbl, `dnsbl.example.com') dnl Alternatively, you can provide your own server and rejection message: -dnl FEATURE(dnsbl, `blackholes.mail-abuse.org', ``"550 Mail from " $&{client_addr} " rejected, see http://mail-abuse.org/cgi-bin/lookup?" $&{client_addr}'') +dnl FEATURE(dnsbl, `dnsbl.example.com', ``"550 Mail from " $&{client_addr} " rejected'') dnl Dialup users should uncomment and define this appropriately dnl define(`SMART_HOST', `your.isp.mail.server') From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 04:34:20 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ABD2E106566C; Tue, 14 Jun 2011 04:34:20 +0000 (UTC) (envelope-from gshapiro@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9C10F8FC0C; Tue, 14 Jun 2011 04:34:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E4YKCu013599; Tue, 14 Jun 2011 04:34:20 GMT (envelope-from gshapiro@svn.freebsd.org) Received: (from gshapiro@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E4YKo7013597; Tue, 14 Jun 2011 04:34:20 GMT (envelope-from gshapiro@svn.freebsd.org) Message-Id: <201106140434.p5E4YKo7013597@svn.freebsd.org> From: Gregory Neil Shapiro Date: Tue, 14 Jun 2011 04:34:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223069 - head/etc/sendmail X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 04:34:20 -0000 Author: gshapiro Date: Tue Jun 14 04:34:20 2011 New Revision: 223069 URL: http://svn.freebsd.org/changeset/base/223069 Log: Minor change to force commit this file so new freebsd*.cf files are built to use the new sendmail-8.14.5/cf tree. MFC after: 4 days Modified: head/etc/sendmail/freebsd.submit.mc Modified: head/etc/sendmail/freebsd.submit.mc ============================================================================== --- head/etc/sendmail/freebsd.submit.mc Tue Jun 14 04:33:43 2011 (r223068) +++ head/etc/sendmail/freebsd.submit.mc Tue Jun 14 04:34:20 2011 (r223069) @@ -25,4 +25,3 @@ define(`confBIND_OPTS', `WorkAroundBroke dnl dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1] FEATURE(`msp', `[127.0.0.1]')dnl - From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 04:37:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5B6021065676; Tue, 14 Jun 2011 04:37:10 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 40F998FC17; Tue, 14 Jun 2011 04:37:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E4bACM013729; Tue, 14 Jun 2011 04:37:10 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E4bALJ013724; Tue, 14 Jun 2011 04:37:10 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201106140437.p5E4bALJ013724@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Tue, 14 Jun 2011 04:37:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223070 - in stable/8: sbin/ipfw sys/netinet/ipfw X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 04:37:10 -0000 Author: ae Date: Tue Jun 14 04:37:09 2011 New Revision: 223070 URL: http://svn.freebsd.org/changeset/base/223070 Log: MFC r222473: Add tablearg support for ipfw setfib. PR: kern/156410 MFC r222474: Wrap long line. Modified: stable/8/sbin/ipfw/ipfw.8 stable/8/sbin/ipfw/ipfw2.c stable/8/sys/netinet/ipfw/ip_fw2.c stable/8/sys/netinet/ipfw/ip_fw_sockopt.c Directory Properties: stable/8/sbin/ipfw/ (props changed) stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sbin/ipfw/ipfw.8 ============================================================================== --- stable/8/sbin/ipfw/ipfw.8 Tue Jun 14 04:34:20 2011 (r223069) +++ stable/8/sbin/ipfw/ipfw.8 Tue Jun 14 04:37:09 2011 (r223070) @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 27, 2010 +.Dd May 30, 2011 .Dt IPFW 8 .Os .Sh NAME @@ -867,13 +867,16 @@ for more information on and .Cm ngtee actions. -.It Cm setfib Ar fibnum +.It Cm setfib Ar fibnum | tablearg The packet is tagged so as to use the FIB (routing table) .Ar fibnum in any subsequent forwarding decisions. Initially this is limited to the values 0 through 15, see .Xr setfib 1 . Processing continues at the next rule. +It is possible to use the +.Cm tablearg +keyword with a setfib. If tablearg value is not within compiled FIB range packet fib is set to 0. .It Cm reass Queue and reassemble ip fragments. If the packet is not fragmented, counters are updated and processing continues with the next rule. @@ -1697,7 +1700,7 @@ is used. The .Cm tablearg argument can be used with the following actions: -.Cm nat, pipe , queue, divert, tee, netgraph, ngtee, fwd, skipto +.Cm nat, pipe , queue, divert, tee, netgraph, ngtee, fwd, skipto, setfib, action parameters: .Cm tag, untag, rule options: Modified: stable/8/sbin/ipfw/ipfw2.c ============================================================================== --- stable/8/sbin/ipfw/ipfw2.c Tue Jun 14 04:34:20 2011 (r223069) +++ stable/8/sbin/ipfw/ipfw2.c Tue Jun 14 04:37:09 2011 (r223070) @@ -2826,14 +2826,19 @@ chkarg: size_t intsize = sizeof(int); action->opcode = O_SETFIB; - NEED1("missing fib number"); - action->arg1 = strtoul(*av, NULL, 10); - if (sysctlbyname("net.fibs", &numfibs, &intsize, NULL, 0) == -1) - errx(EX_DATAERR, "fibs not suported.\n"); - if (action->arg1 >= numfibs) /* Temporary */ - errx(EX_DATAERR, "fib too large.\n"); - av++; - break; + NEED1("missing fib number"); + if (_substrcmp(*av, "tablearg") == 0) { + action->arg1 = IP_FW_TABLEARG; + } else { + action->arg1 = strtoul(*av, NULL, 10); + if (sysctlbyname("net.fibs", &numfibs, &intsize, + NULL, 0) == -1) + errx(EX_DATAERR, "fibs not suported.\n"); + if (action->arg1 >= numfibs) /* Temporary */ + errx(EX_DATAERR, "fib too large.\n"); + } + av++; + break; } case TOK_REASS: Modified: stable/8/sys/netinet/ipfw/ip_fw2.c ============================================================================== --- stable/8/sys/netinet/ipfw/ip_fw2.c Tue Jun 14 04:34:20 2011 (r223069) +++ stable/8/sys/netinet/ipfw/ip_fw2.c Tue Jun 14 04:37:09 2011 (r223070) @@ -2101,14 +2101,21 @@ do { \ done = 1; /* exit outer loop */ break; - case O_SETFIB: + case O_SETFIB: { + uint32_t fib; + f->pcnt++; /* update stats */ f->bcnt += pktlen; f->timestamp = time_uptime; - M_SETFIB(m, cmd->arg1); - args->f_id.fib = cmd->arg1; + fib = (cmd->arg1 == IP_FW_TABLEARG) ? tablearg: + cmd->arg1; + if (fib >= rt_numfibs) + fib = 0; + M_SETFIB(m, fib); + args->f_id.fib = fib; l = 0; /* exit inner loop */ break; + } case O_NAT: if (!IPFW_NAT_LOADED) { Modified: stable/8/sys/netinet/ipfw/ip_fw_sockopt.c ============================================================================== --- stable/8/sys/netinet/ipfw/ip_fw_sockopt.c Tue Jun 14 04:34:20 2011 (r223069) +++ stable/8/sys/netinet/ipfw/ip_fw_sockopt.c Tue Jun 14 04:37:09 2011 (r223070) @@ -605,7 +605,8 @@ check_ipfw_struct(struct ip_fw *rule, in case O_SETFIB: if (cmdlen != F_INSN_SIZE(ipfw_insn)) goto bad_size; - if (cmd->arg1 >= rt_numfibs) { + if ((cmd->arg1 != IP_FW_TABLEARG) && + (cmd->arg1 >= rt_numfibs)) { printf("ipfw: invalid fib number %d\n", cmd->arg1); return EINVAL; From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 06:44:42 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F04BC106566B; Tue, 14 Jun 2011 06:44:42 +0000 (UTC) (envelope-from gshapiro@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DFF8D8FC14; Tue, 14 Jun 2011 06:44:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E6igL7017261; Tue, 14 Jun 2011 06:44:42 GMT (envelope-from gshapiro@svn.freebsd.org) Received: (from gshapiro@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E6igKo017259; Tue, 14 Jun 2011 06:44:42 GMT (envelope-from gshapiro@svn.freebsd.org) Message-Id: <201106140644.p5E6igKo017259@svn.freebsd.org> From: Gregory Neil Shapiro Date: Tue, 14 Jun 2011 06:44:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223071 - head/contrib/sendmail X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 06:44:43 -0000 Author: gshapiro Date: Tue Jun 14 06:44:42 2011 New Revision: 223071 URL: http://svn.freebsd.org/changeset/base/223071 Log: Update notes regarding FreeBSD import Modified: head/contrib/sendmail/FREEBSD-upgrade Modified: head/contrib/sendmail/FREEBSD-upgrade ============================================================================== --- head/contrib/sendmail/FREEBSD-upgrade Tue Jun 14 04:37:09 2011 (r223070) +++ head/contrib/sendmail/FREEBSD-upgrade Tue Jun 14 06:44:42 2011 (r223071) @@ -1,6 +1,6 @@ $FreeBSD$ -sendmail 8.14.4 +sendmail 8.14.5 originals can be found at: ftp://ftp.sendmail.org/pub/sendmail/ For the import of sendmail, the following directories were renamed: @@ -110,4 +110,4 @@ infrastructure in FreeBSD: usr.sbin/mailwrapper/Makefile gshapiro@FreeBSD.org -25-January-2010 +13-June-2011 From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 06:45:49 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 550B6106564A; Tue, 14 Jun 2011 06:45:49 +0000 (UTC) (envelope-from gshapiro@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4497A8FC12; Tue, 14 Jun 2011 06:45:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E6jnDS017334; Tue, 14 Jun 2011 06:45:49 GMT (envelope-from gshapiro@svn.freebsd.org) Received: (from gshapiro@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E6jnbo017332; Tue, 14 Jun 2011 06:45:49 GMT (envelope-from gshapiro@svn.freebsd.org) Message-Id: <201106140645.p5E6jnbo017332@svn.freebsd.org> From: Gregory Neil Shapiro Date: Tue, 14 Jun 2011 06:45:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223072 - head/release/doc/en_US.ISO8859-1/relnotes X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 06:45:49 -0000 Author: gshapiro Date: Tue Jun 14 06:45:48 2011 New Revision: 223072 URL: http://svn.freebsd.org/changeset/base/223072 Log: sendmail has been updated to 8.14.5 Modified: head/release/doc/en_US.ISO8859-1/relnotes/article.sgml Modified: head/release/doc/en_US.ISO8859-1/relnotes/article.sgml ============================================================================== --- head/release/doc/en_US.ISO8859-1/relnotes/article.sgml Tue Jun 14 06:44:42 2011 (r223071) +++ head/release/doc/en_US.ISO8859-1/relnotes/article.sgml Tue Jun 14 06:45:48 2011 (r223072) @@ -480,7 +480,7 @@ Figwort release to the Hydrangea release. sendmail has been updated from - 8.14.1 to 8.14.4. + 8.14.1 to 8.14.5. The timezone database has been updated from the tzdata2008h release to From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 07:20:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D9F011065673; Tue, 14 Jun 2011 07:20:16 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BEB6C8FC23; Tue, 14 Jun 2011 07:20:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5E7KG94018392; Tue, 14 Jun 2011 07:20:16 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5E7KGAu018390; Tue, 14 Jun 2011 07:20:16 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201106140720.p5E7KGAu018390@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Tue, 14 Jun 2011 07:20:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223073 - head/sys/netinet/ipfw X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 07:20:16 -0000 Author: ae Date: Tue Jun 14 07:20:16 2011 New Revision: 223073 URL: http://svn.freebsd.org/changeset/base/223073 Log: Add IPv6 support to the ipfw uid/gid check. Pass an ip_fw_args structure to the check_uidgid() function, since it contains all needed arguments and also pointer to mbuf and now it is possible use in_pcblookup_mbuf() function. Since i can not test it for the non-FreeBSD case, i keep this ifdef unchanged. Tested by: Alexander V. Chernikov MFC after: 3 weeks Modified: head/sys/netinet/ipfw/ip_fw2.c Modified: head/sys/netinet/ipfw/ip_fw2.c ============================================================================== --- head/sys/netinet/ipfw/ip_fw2.c Tue Jun 14 06:45:48 2011 (r223072) +++ head/sys/netinet/ipfw/ip_fw2.c Tue Jun 14 07:20:16 2011 (r223073) @@ -84,6 +84,7 @@ __FBSDID("$FreeBSD$"); #include #include #ifdef INET6 +#include #include #include #endif @@ -646,21 +647,27 @@ send_reject(struct ip_fw_args *args, int * we tried and failed, or any other value if successful. */ static int -check_uidgid(ipfw_insn_u32 *insn, int proto, struct ifnet *oif, - struct in_addr dst_ip, u_int16_t dst_port, struct in_addr src_ip, - u_int16_t src_port, int *ugid_lookupp, - struct ucred **uc, struct inpcb *inp) +check_uidgid(ipfw_insn_u32 *insn, struct ip_fw_args *args, int *ugid_lookupp, + struct ucred **uc) { #ifndef __FreeBSD__ + /* XXX */ return cred_check(insn, proto, oif, dst_ip, dst_port, src_ip, src_port, (struct bsd_ucred *)uc, ugid_lookupp, ((struct mbuf *)inp)->m_skb); #else /* FreeBSD */ + struct in_addr src_ip, dst_ip; struct inpcbinfo *pi; + struct ipfw_flow_id *id; + struct inpcb *pcb, *inp; + struct ifnet *oif; int lookupflags; - struct inpcb *pcb; int match; + id = &args->f_id; + inp = args->inp; + oif = args->oif; + /* * Check to see if the UDP or TCP stack supplied us with * the PCB. If so, rather then holding a lock and looking @@ -681,10 +688,10 @@ check_uidgid(ipfw_insn_u32 *insn, int pr */ if (*ugid_lookupp == -1) return (0); - if (proto == IPPROTO_TCP) { + if (id->proto == IPPROTO_TCP) { lookupflags = 0; pi = &V_tcbinfo; - } else if (proto == IPPROTO_UDP) { + } else if (id->proto == IPPROTO_UDP) { lookupflags = INPLOOKUP_WILDCARD; pi = &V_udbinfo; } else @@ -692,19 +699,36 @@ check_uidgid(ipfw_insn_u32 *insn, int pr lookupflags |= INPLOOKUP_RLOCKPCB; match = 0; if (*ugid_lookupp == 0) { - /* - * XXXRW: If we had the mbuf here, could use - * in_pcblookup_mbuf(). - */ - pcb = (oif) ? - in_pcblookup(pi, - dst_ip, htons(dst_port), - src_ip, htons(src_port), - lookupflags, oif) : - in_pcblookup(pi, - src_ip, htons(src_port), - dst_ip, htons(dst_port), - lookupflags, NULL); + if (id->addr_type == 6) { +#ifdef INET6 + if (oif == NULL) + pcb = in6_pcblookup_mbuf(pi, + &id->src_ip6, htons(id->src_port), + &id->dst_ip6, htons(id->dst_port), + lookupflags, oif, args->m); + else + pcb = in6_pcblookup_mbuf(pi, + &id->dst_ip6, htons(id->dst_port), + &id->src_ip6, htons(id->src_port), + lookupflags, oif, args->m); +#else + *ugid_lookupp = -1; + return (0); +#endif + } else { + src_ip.s_addr = htonl(id->src_ip); + dst_ip.s_addr = htonl(id->dst_ip); + if (oif == NULL) + pcb = in_pcblookup_mbuf(pi, + src_ip, htons(id->src_port), + dst_ip, htons(id->dst_port), + lookupflags, oif, args->m); + else + pcb = in_pcblookup_mbuf(pi, + dst_ip, htons(id->dst_port), + src_ip, htons(id->src_port), + lookupflags, oif, args->m); + } if (pcb != NULL) { INP_RLOCK_ASSERT(pcb); *uc = crhold(pcb->inp_cred); @@ -719,14 +743,14 @@ check_uidgid(ipfw_insn_u32 *insn, int pr *ugid_lookupp = -1; return (0); } - } + } if (insn->o.opcode == O_UID) match = ((*uc)->cr_uid == (uid_t)insn->d[0]); else if (insn->o.opcode == O_GID) match = groupmember((gid_t)insn->d[0], *uc); else if (insn->o.opcode == O_JAIL) match = ((*uc)->cr_prison->pr_id == (int)insn->d[0]); - return match; + return (match); #endif /* __FreeBSD__ */ } @@ -1264,22 +1288,17 @@ do { \ * as this ensures that we have a * packet with the ports info. */ - if (offset!=0) - break; - if (is_ipv6) /* XXX to be fixed later */ + if (offset != 0) break; if (proto == IPPROTO_TCP || proto == IPPROTO_UDP) match = check_uidgid( (ipfw_insn_u32 *)cmd, - proto, oif, - dst_ip, dst_port, - src_ip, src_port, &ucred_lookup, + args, &ucred_lookup, #ifdef __FreeBSD__ - &ucred_cache, args->inp); + &ucred_cache); #else - (void *)&ucred_cache, - (struct inpcb *)args->m); + (void *)&ucred_cache); #endif break; @@ -1394,18 +1413,15 @@ do { \ else if (v == 4 || v == 5) { check_uidgid( (ipfw_insn_u32 *)cmd, - proto, oif, - dst_ip, dst_port, - src_ip, src_port, &ucred_lookup, + args, &ucred_lookup, #ifdef __FreeBSD__ - &ucred_cache, args->inp); + &ucred_cache); if (v == 4 /* O_UID */) key = ucred_cache->cr_uid; else if (v == 5 /* O_JAIL */) key = ucred_cache->cr_prison->pr_id; #else /* !__FreeBSD__ */ - (void *)&ucred_cache, - (struct inpcb *)args->m); + (void *)&ucred_cache); if (v ==4 /* O_UID */) key = ucred_cache.uid; else if (v == 5 /* O_JAIL */) From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 10:49:18 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 85F5B106564A; Tue, 14 Jun 2011 10:49:18 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5CC378FC0C; Tue, 14 Jun 2011 10:49:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EAnINr031221; Tue, 14 Jun 2011 10:49:18 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EAnINI031219; Tue, 14 Jun 2011 10:49:18 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201106141049.p5EAnINI031219@svn.freebsd.org> From: Glen Barber Date: Tue, 14 Jun 2011 10:49:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223074 - in stable/8/sbin/geom/class: eli sched X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 10:49:18 -0000 Author: gjb (doc committer) Date: Tue Jun 14 10:49:18 2011 New Revision: 223074 URL: http://svn.freebsd.org/changeset/base/223074 Log: MFC 216147 [1], 219424 [2]: 216147 by delphij [1]: - Recommend a overwrite of whole geli provider before use. - Correct a typo. 219424 by pjd [2]: - Change example wording. PR: 155385 [2] Modified: stable/8/sbin/geom/class/eli/geli.8 Directory Properties: stable/8/sbin/geom/ (props changed) stable/8/sbin/geom/class/multipath/ (props changed) stable/8/sbin/geom/class/part/ (props changed) stable/8/sbin/geom/class/sched/gsched.8 (props changed) stable/8/sbin/geom/class/stripe/ (props changed) Modified: stable/8/sbin/geom/class/eli/geli.8 ============================================================================== --- stable/8/sbin/geom/class/eli/geli.8 Tue Jun 14 07:20:16 2011 (r223073) +++ stable/8/sbin/geom/class/eli/geli.8 Tue Jun 14 10:49:18 2011 (r223074) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 20, 2010 +.Dd March 9, 2011 .Dt GELI 8 .Os .Sh NAME @@ -694,15 +694,17 @@ Enter passphrase: .Ed .Pp Create an encrypted provider, but use two keys: -one for your girlfriend and one for -you (so there will be no tragedy if she forgets her passphrase): +one for your employee and one for you as company's security officer +(so there is no tragedy if the employee +.Qq accidentally +forgets his passphrase): .Bd -literal -offset indent # geli init /dev/da2 -Enter new passphrase: (enter your passphrase) +Enter new passphrase: (enter security officer passphrase) Reenter new passphrase: # geli setkey -n 1 /dev/da2 -Enter passphrase: (enter your passphrase) -Enter new passphrase: (let your girlfriend enter her passphrase ...) +Enter passphrase: (enter security officer passphrase) +Enter new passphrase: (let your employee enter his passphrase ...) Reenter new passphrase: (... twice) .Ed .Pp @@ -842,7 +844,7 @@ Enter passphrase: .Nm supports two encryption modes: .Nm XTS , -which was standarized as +which was standardized as .Nm IEE P1619 and .Nm CBC @@ -873,6 +875,10 @@ changes with the data he owns without no In other words .Nm will not protect your data against replay attacks. +.Pp +It is recommended to write the whole provider before the first use, +in order to make sure that all sectors and their corresponding +checksums are properly initialized into a consistent state. .Sh SEE ALSO .Xr crypto 4 , .Xr gbde 4 , From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 10:50:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 250EF106564A; Tue, 14 Jun 2011 10:50:09 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0FF188FC1C; Tue, 14 Jun 2011 10:50:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EAo1gh031287; Tue, 14 Jun 2011 10:50:01 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EAo19s031284; Tue, 14 Jun 2011 10:50:01 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201106141050.p5EAo19s031284@svn.freebsd.org> From: Martin Matuska Date: Tue, 14 Jun 2011 10:50:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223075 - in stable/8/sys/cddl: compat/opensolaris/kern contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 10:50:09 -0000 Author: mm Date: Tue Jun 14 10:50:01 2011 New Revision: 223075 URL: http://svn.freebsd.org/changeset/base/223075 Log: MFC 222343, 222518, 222835 MFC r222343 (pjd): Silence warnings about unsupoorted value types. MFC r222518 (pjd): Imagine situation where a security problem is found in setuid binary. User upgrades his system to fix the problem, but if he has any ZFS snapshots for the file system which contains problematic binary, any user can mount the snapshot and execute vulnerable binary. Prevent this from happening by always mounting snapshots with setuid turned off. MFC r222835: Silence notice on pool creation, import and access. Modified: stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_sysevent.c stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_sysevent.c ============================================================================== --- stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_sysevent.c Tue Jun 14 10:49:18 2011 (r223074) +++ stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_sysevent.c Tue Jun 14 10:50:01 2011 (r223075) @@ -113,8 +113,10 @@ sysevent_add_attr(sysevent_attr_list_t * } break; default: +#if 0 printf("%s: type %d is not implemented\n", __func__, se_value->value_type); +#endif break; } @@ -286,8 +288,10 @@ log_sysevent(sysevent_t *evp, int flag, break; } default: +#if 0 printf("%s: type %d is not implemented\n", __func__, nvpair_type(elem)); +#endif break; } } Modified: stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c ============================================================================== --- stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c Tue Jun 14 10:49:18 2011 (r223074) +++ stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_vfs.c Tue Jun 14 10:50:01 2011 (r223075) @@ -172,6 +172,11 @@ mount_snapshot(kthread_t *td, vnode_t ** */ mp->mnt_flag |= MNT_RDONLY; /* + * We don't want snapshots to allow access to vulnerable setuid + * programs, so we turn off setuid when mounting snapshots. + */ + mp->mnt_flag |= MNT_NOSUID; + /* * We don't want snapshots to be visible in regular * mount(8) and df(1) output. */ Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c Tue Jun 14 10:49:18 2011 (r223074) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c Tue Jun 14 10:50:01 2011 (r223075) @@ -500,9 +500,11 @@ spa_history_log_version(spa_t *spa, hist utsname.nodename, utsname.release, utsname.version, utsname.machine); } +#if 0 cmn_err(CE_CONT, "!%s version %llu pool %s using %llu", event == LOG_POOL_IMPORT ? "imported" : event == LOG_POOL_CREATE ? "created" : "accessed", (u_longlong_t)current_vers, spa_name(spa), SPA_VERSION); #endif +#endif } From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 10:50:17 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 606041065673; Tue, 14 Jun 2011 10:50:17 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 368228FC16; Tue, 14 Jun 2011 10:50:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EAoHX4031331; Tue, 14 Jun 2011 10:50:17 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EAoHus031329; Tue, 14 Jun 2011 10:50:17 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201106141050.p5EAoHus031329@svn.freebsd.org> From: Glen Barber Date: Tue, 14 Jun 2011 10:50:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223076 - stable/7/sbin/geom/class/eli X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 10:50:17 -0000 Author: gjb (doc committer) Date: Tue Jun 14 10:50:16 2011 New Revision: 223076 URL: http://svn.freebsd.org/changeset/base/223076 Log: MFC 216147 [1], 219424 [2]: 216147 by delphij [1]: - Recommend a overwrite of whole geli provider before use. 219424 by pjd [2]: - Change example wording. PR: 155385 [2] Modified: stable/7/sbin/geom/class/eli/geli.8 Directory Properties: stable/7/sbin/geom/ (props changed) stable/7/sbin/geom/class/journal/ (props changed) stable/7/sbin/geom/class/label/ (props changed) stable/7/sbin/geom/class/part/ (props changed) stable/7/sbin/geom/class/stripe/ (props changed) stable/7/sbin/geom/misc/ (props changed) Modified: stable/7/sbin/geom/class/eli/geli.8 ============================================================================== --- stable/7/sbin/geom/class/eli/geli.8 Tue Jun 14 10:50:01 2011 (r223075) +++ stable/7/sbin/geom/class/eli/geli.8 Tue Jun 14 10:50:16 2011 (r223076) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 16, 2006 +.Dd March 9, 2011 .Dt GELI 8 .Os .Sh NAME @@ -543,15 +543,17 @@ Enter passphrase: .Ed .Pp Create an encrypted provider, but use two keys: -one for your girlfriend and one for -you (so there will be no tragedy if she forgets her passphrase): +one for your employee and one for you as company's security officer +(so there is no tragedy if the employee +.Qq accidentally +forgets his passphrase): .Bd -literal -offset indent # geli init /dev/da2 -Enter new passphrase: (enter your passphrase) +Enter new passphrase: (enter security officer passphrase) Reenter new passphrase: # geli setkey -n 1 /dev/da2 -Enter passphrase: (enter your passphrase) -Enter new passphrase: (let your girlfriend enter her passphrase ...) +Enter passphrase: (enter security officer passphrase) +Enter new passphrase: (let your employee enter his passphrase ...) Reenter new passphrase: (... twice) .Ed .Pp @@ -643,6 +645,10 @@ changes with the data he owns without no In other words .Nm will not protect your data against replay attacks. +.Pp +It is recommended to write the whole provider before the first use, +in order to make sure that all sectors and their corresponding +checksums are properly initialized into a consistent state. .Sh SEE ALSO .Xr crypto 4 , .Xr gbde 4 , From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 12:06:39 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 40FC11065673; Tue, 14 Jun 2011 12:06:39 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 312288FC15; Tue, 14 Jun 2011 12:06:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EC6dCT033639; Tue, 14 Jun 2011 12:06:39 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EC6dPF033637; Tue, 14 Jun 2011 12:06:39 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201106141206.p5EC6dPF033637@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Tue, 14 Jun 2011 12:06:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223077 - head/sys/netinet/libalias X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 12:06:39 -0000 Author: ae Date: Tue Jun 14 12:06:38 2011 New Revision: 223077 URL: http://svn.freebsd.org/changeset/base/223077 Log: Sort alias mode flags in the increasing order. Modified: head/sys/netinet/libalias/alias.h Modified: head/sys/netinet/libalias/alias.h ============================================================================== --- head/sys/netinet/libalias/alias.h Tue Jun 14 10:50:16 2011 (r223076) +++ head/sys/netinet/libalias/alias.h Tue Jun 14 12:06:38 2011 (r223077) @@ -197,17 +197,6 @@ struct mbuf *m_megapullup(struct mbuf */ #define PKT_ALIAS_RESET_ON_ADDR_CHANGE 0x20 -#ifndef NO_FW_PUNCH -/* - * If PKT_ALIAS_PUNCH_FW is set, active FTP and IRC DCC connections will - * create a 'hole' in the firewall to allow the transfers to work. The - * ipfw rule number that the hole is created with is controlled by - * PacketAliasSetFWBase(). The hole will be attached to that - * particular alias_link, so when the link goes away the hole is deleted. - */ -#define PKT_ALIAS_PUNCH_FW 0x100 -#endif - /* * If PKT_ALIAS_PROXY_ONLY is set, then NAT will be disabled and only * transparent proxying is performed. @@ -220,6 +209,17 @@ struct mbuf *m_megapullup(struct mbuf */ #define PKT_ALIAS_REVERSE 0x80 +#ifndef NO_FW_PUNCH +/* + * If PKT_ALIAS_PUNCH_FW is set, active FTP and IRC DCC connections will + * create a 'hole' in the firewall to allow the transfers to work. The + * ipfw rule number that the hole is created with is controlled by + * PacketAliasSetFWBase(). The hole will be attached to that + * particular alias_link, so when the link goes away the hole is deleted. + */ +#define PKT_ALIAS_PUNCH_FW 0x100 +#endif + /* Function return codes. */ #define PKT_ALIAS_ERROR -1 #define PKT_ALIAS_OK 1 From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 12:40:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3134D1065677; Tue, 14 Jun 2011 12:40:56 +0000 (UTC) (envelope-from luigi@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BDA748FC13; Tue, 14 Jun 2011 12:40:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ECetXu034681; Tue, 14 Jun 2011 12:40:55 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ECetMH034678; Tue, 14 Jun 2011 12:40:55 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201106141240.p5ECetMH034678@svn.freebsd.org> From: Luigi Rizzo Date: Tue, 14 Jun 2011 12:40:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223078 - in head: sbin/ifconfig sys/net X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 12:40:56 -0000 Author: luigi Date: Tue Jun 14 12:40:55 2011 New Revision: 223078 URL: http://svn.freebsd.org/changeset/base/223078 Log: Grab one of the ifcap bits for netmap, and enable printing in ifconfig. Document the fact that we might want an IFCAP_CANTCHANGE mask, even though the value is not yet used in sys/net/if.c (asked on -current a week ago, no feedback so i assume no objection). Modified: head/sbin/ifconfig/ifconfig.c head/sys/net/if.h Modified: head/sbin/ifconfig/ifconfig.c ============================================================================== --- head/sbin/ifconfig/ifconfig.c Tue Jun 14 12:06:38 2011 (r223077) +++ head/sbin/ifconfig/ifconfig.c Tue Jun 14 12:40:55 2011 (r223078) @@ -908,7 +908,7 @@ unsetifdescr(const char *val, int value, #define IFCAPBITS \ "\020\1RXCSUM\2TXCSUM\3NETCONS\4VLAN_MTU\5VLAN_HWTAGGING\6JUMBO_MTU\7POLLING" \ "\10VLAN_HWCSUM\11TSO4\12TSO6\13LRO\14WOL_UCAST\15WOL_MCAST\16WOL_MAGIC" \ -"\21VLAN_HWFILTER\23VLAN_HWTSO\24LINKSTATE" +"\21VLAN_HWFILTER\23VLAN_HWTSO\24LINKSTATE\25NETMAP" /* * Print the status of the interface. If an address family was Modified: head/sys/net/if.h ============================================================================== --- head/sys/net/if.h Tue Jun 14 12:06:38 2011 (r223077) +++ head/sys/net/if.h Tue Jun 14 12:40:55 2011 (r223078) @@ -199,6 +199,13 @@ struct if_data { * field. IFCAP_* and CSUM_* do not match one to one and CSUM_* may be * more detailed or differenciated than IFCAP_*. * Hwassist features are defined CSUM_* in sys/mbuf.h + * + * Capabilities that cannot be arbitrarily changed with ifconfig/ioctl + * are listed in IFCAP_CANTCHANGE, similar to IFF_CANTCHANGE. + * This is not strictly necessary because the common code never + * changes capabilities, and it is left to the individual driver + * to do the right thing. However, having the filter here + * avoids replication of the same code in all individual drivers. */ #define IFCAP_RXCSUM 0x00001 /* can offload checksum on RX */ #define IFCAP_TXCSUM 0x00002 /* can offload checksum on TX */ @@ -220,12 +227,15 @@ struct if_data { #define IFCAP_POLLING_NOCOUNT 0x20000 /* polling ticks cannot be fragmented */ #define IFCAP_VLAN_HWTSO 0x40000 /* can do IFCAP_TSO on VLANs */ #define IFCAP_LINKSTATE 0x80000 /* the runtime link state is dynamic */ +#define IFCAP_NETMAP 0x100000 /* netmap mode supported/enabled */ #define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM) #define IFCAP_TSO (IFCAP_TSO4 | IFCAP_TSO6) #define IFCAP_WOL (IFCAP_WOL_UCAST | IFCAP_WOL_MCAST | IFCAP_WOL_MAGIC) #define IFCAP_TOE (IFCAP_TOE4 | IFCAP_TOE6) +#define IFCAP_CANTCHANGE (IFCAP_NETMAP) + #define IFQ_MAXLEN 50 #define IFNET_SLOWHZ 1 /* granularity is 1 second */ From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 13:02:26 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6DA7A1065670; Tue, 14 Jun 2011 13:02:26 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5DE078FC16; Tue, 14 Jun 2011 13:02:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ED2QUI036245; Tue, 14 Jun 2011 13:02:26 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ED2QJ8036243; Tue, 14 Jun 2011 13:02:26 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201106141302.p5ED2QJ8036243@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Tue, 14 Jun 2011 13:02:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223079 - head/sbin/ipfw X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 13:02:26 -0000 Author: ae Date: Tue Jun 14 13:02:26 2011 New Revision: 223079 URL: http://svn.freebsd.org/changeset/base/223079 Log: Check nat id a bit more strictly. Modified: head/sbin/ipfw/nat.c Modified: head/sbin/ipfw/nat.c ============================================================================== --- head/sbin/ipfw/nat.c Tue Jun 14 12:40:55 2011 (r223078) +++ head/sbin/ipfw/nat.c Tue Jun 14 13:02:26 2011 (r223079) @@ -721,16 +721,18 @@ ipfw_config_nat(int ac, char **av) { struct cfg_nat *n; /* Nat instance configuration. */ int i, off, tok, ac1; - char *id, *buf, **av1; + char *id, *buf, **av1, *end; size_t len; av++; ac--; /* Nat id. */ - if (ac && isdigit(**av)) { - id = *av; - ac--; av++; - } else + if (ac == 0) errx(EX_DATAERR, "missing nat id"); + id = *av; + i = (int)strtol(id, &end, 0); + if (i <= 0 || *end != '\0') + errx(EX_DATAERR, "illegal nat id: %s", id); + av++; ac--; if (ac == 0) errx(EX_DATAERR, "missing option"); @@ -787,7 +789,6 @@ ipfw_config_nat(int ac, char **av) off = sizeof(*n); memset(buf, 0, len); n = (struct cfg_nat *)buf; - i = atoi(id); n->id = i; while (ac > 0) { From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 13:35:25 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5C51E1065688; Tue, 14 Jun 2011 13:35:25 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BF0638FC18; Tue, 14 Jun 2011 13:35:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EDZOEZ037253; Tue, 14 Jun 2011 13:35:24 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EDZO1U037245; Tue, 14 Jun 2011 13:35:24 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201106141335.p5EDZO1U037245@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Tue, 14 Jun 2011 13:35:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223080 - in head: sbin/ipfw sys/netinet/ipfw sys/netinet/libalias X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 13:35:25 -0000 Author: ae Date: Tue Jun 14 13:35:24 2011 New Revision: 223080 URL: http://svn.freebsd.org/changeset/base/223080 Log: Implement "global" mode for ipfw nat. It is similar to natd(8) "globalport" option for multiple NAT instances. If ipfw rule contains "global" keyword instead of nat_number, then for each outgoing packet ipfw_nat looks up translation state in all configured nat instances. If an entry is found, packet aliased according to that entry, otherwise packet is passed unchanged. User can specify "skip_global" option in NAT configuration to exclude an instance from the lookup in global mode. PR: kern/157867 Submitted by: Alexander V. Chernikov (previous version) Tested by: Eugene Grosbein Modified: head/sbin/ipfw/ipfw.8 head/sbin/ipfw/ipfw2.c head/sbin/ipfw/ipfw2.h head/sbin/ipfw/nat.c head/sys/netinet/ipfw/ip_fw2.c head/sys/netinet/ipfw/ip_fw_nat.c head/sys/netinet/libalias/alias.h Modified: head/sbin/ipfw/ipfw.8 ============================================================================== --- head/sbin/ipfw/ipfw.8 Tue Jun 14 13:02:26 2011 (r223079) +++ head/sbin/ipfw/ipfw.8 Tue Jun 14 13:35:24 2011 (r223080) @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 30, 2011 +.Dd June 14, 2011 .Dt IPFW 8 .Os .Sh NAME @@ -2435,6 +2435,27 @@ Reset table of the packet aliasing engin Reverse the way libalias handles aliasing. .It Cm proxy_only Obey transparent proxy rules only, packet aliasing is not performed. +.It Cm skip_global +Skip instance in case of global state lookup (see below). +.El +.Pp +Some specials value can be supplied instead of +.Va nat_number: +.Bl -tag -width indent +.It Cm global +Looks up translation state in all configured nat instances. +If an entry is found, packet is aliased according to that entry. +If no entry was found in any of the instances, packet is passed unchanged, +and no new entry will be created. +See section +.Sx MULTIPLE INSTANCES +in +.Xr natd 8 +for more information. +.It Cm tablearg +Uses argument supplied in lookup table. See +.Sx LOOKUP TABLES +section below for more information on lookup tables. .El .Pp To let the packet continue after being (de)aliased, set the sysctl variable Modified: head/sbin/ipfw/ipfw2.c ============================================================================== --- head/sbin/ipfw/ipfw2.c Tue Jun 14 13:02:26 2011 (r223079) +++ head/sbin/ipfw/ipfw2.c Tue Jun 14 13:35:24 2011 (r223080) @@ -1121,8 +1121,11 @@ show_ipfw(struct ip_fw *rule, int pcwidt break; case O_NAT: - PRINT_UINT_ARG("nat ", cmd->arg1); - break; + if (cmd->arg1 != 0) + PRINT_UINT_ARG("nat ", cmd->arg1); + else + printf("nat global"); + break; case O_SETFIB: PRINT_UINT_ARG("setfib ", cmd->arg1); @@ -2738,9 +2741,14 @@ ipfw_add(char *av[]) break; case TOK_NAT: - action->opcode = O_NAT; - action->len = F_INSN_SIZE(ipfw_insn_nat); - goto chkarg; + action->opcode = O_NAT; + action->len = F_INSN_SIZE(ipfw_insn_nat); + if (_substrcmp(*av, "global") == 0) { + action->arg1 = 0; + av++; + break; + } else + goto chkarg; case TOK_QUEUE: action->opcode = O_QUEUE; Modified: head/sbin/ipfw/ipfw2.h ============================================================================== --- head/sbin/ipfw/ipfw2.h Tue Jun 14 13:02:26 2011 (r223079) +++ head/sbin/ipfw/ipfw2.h Tue Jun 14 13:35:24 2011 (r223080) @@ -178,6 +178,7 @@ enum tokens { TOK_DENY_INC, TOK_SAME_PORTS, TOK_UNREG_ONLY, + TOK_SKIP_GLOBAL, TOK_RESET_ADDR, TOK_ALIAS_REV, TOK_PROXY_ONLY, Modified: head/sbin/ipfw/nat.c ============================================================================== --- head/sbin/ipfw/nat.c Tue Jun 14 13:02:26 2011 (r223079) +++ head/sbin/ipfw/nat.c Tue Jun 14 13:35:24 2011 (r223080) @@ -53,6 +53,7 @@ static struct _s_x nat_params[] = { { "deny_in", TOK_DENY_INC }, { "same_ports", TOK_SAME_PORTS }, { "unreg_only", TOK_UNREG_ONLY }, + { "skip_global", TOK_SKIP_GLOBAL }, { "reset", TOK_RESET_ADDR }, { "reverse", TOK_ALIAS_REV }, { "proxy_only", TOK_PROXY_ONLY }, @@ -628,6 +629,9 @@ print_nat_config(unsigned char *buf) } else if (n->mode & PKT_ALIAS_SAME_PORTS) { printf(" same_ports"); n->mode &= ~PKT_ALIAS_SAME_PORTS; + } else if (n->mode & PKT_ALIAS_SKIP_GLOBAL) { + printf(" skip_global"); + n->mode &= ~PKT_ALIAS_SKIP_GLOBAL; } else if (n->mode & PKT_ALIAS_UNREGISTERED_ONLY) { printf(" unreg_only"); n->mode &= ~PKT_ALIAS_UNREGISTERED_ONLY; @@ -746,10 +750,11 @@ ipfw_config_nat(int ac, char **av) case TOK_IP: case TOK_IF: ac1--; av1++; - break; + break; case TOK_ALOG: case TOK_DENY_INC: case TOK_SAME_PORTS: + case TOK_SKIP_GLOBAL: case TOK_UNREG_ONLY: case TOK_RESET_ADDR: case TOK_ALIAS_REV: @@ -821,6 +826,9 @@ ipfw_config_nat(int ac, char **av) case TOK_UNREG_ONLY: n->mode |= PKT_ALIAS_UNREGISTERED_ONLY; break; + case TOK_SKIP_GLOBAL: + n->mode |= PKT_ALIAS_SKIP_GLOBAL; + break; case TOK_RESET_ADDR: n->mode |= PKT_ALIAS_RESET_ON_ADDR_CHANGE; break; Modified: head/sys/netinet/ipfw/ip_fw2.c ============================================================================== --- head/sys/netinet/ipfw/ip_fw2.c Tue Jun 14 13:02:26 2011 (r223079) +++ head/sys/netinet/ipfw/ip_fw2.c Tue Jun 14 13:35:24 2011 (r223080) @@ -2194,6 +2194,13 @@ do { \ int nat_id; set_match(args, f_pos, chain); + /* Check if this is 'global' nat rule */ + if (cmd->arg1 == 0) { + retval = ipfw_nat_ptr(args, NULL, m); + l = 0; + done = 1; + break; + } t = ((ipfw_insn_nat *)cmd)->nat; if (t == NULL) { nat_id = (cmd->arg1 == IP_FW_TABLEARG) ? Modified: head/sys/netinet/ipfw/ip_fw_nat.c ============================================================================== --- head/sys/netinet/ipfw/ip_fw_nat.c Tue Jun 14 13:02:26 2011 (r223079) +++ head/sys/netinet/ipfw/ip_fw_nat.c Tue Jun 14 13:35:24 2011 (r223080) @@ -207,7 +207,8 @@ ipfw_nat(struct ip_fw_args *args, struct struct mbuf *mcl; struct ip *ip; /* XXX - libalias duct tape */ - int ldt, retval; + int ldt, retval, found; + struct ip_fw_chain *chain; char *c; ldt = 0; @@ -256,12 +257,44 @@ ipfw_nat(struct ip_fw_args *args, struct ldt = 1; c = mtod(mcl, char *); - if (args->oif == NULL) - retval = LibAliasIn(t->lib, c, - mcl->m_len + M_TRAILINGSPACE(mcl)); - else - retval = LibAliasOut(t->lib, c, - mcl->m_len + M_TRAILINGSPACE(mcl)); + + /* Check if this is 'global' instance */ + if (t == NULL) { + if (args->oif == NULL) { + /* Wrong direction, skip processing */ + args->m = mcl; + return (IP_FW_NAT); + } + + found = 0; + chain = &V_layer3_chain; + IPFW_RLOCK(chain); + /* Check every nat entry... */ + LIST_FOREACH(t, &chain->nat, _next) { + if ((t->mode & PKT_ALIAS_SKIP_GLOBAL) != 0) + continue; + retval = LibAliasOutTry(t->lib, c, + mcl->m_len + M_TRAILINGSPACE(mcl), 0); + if (retval == PKT_ALIAS_OK) { + /* Nat instance recognises state */ + found = 1; + break; + } + } + IPFW_RUNLOCK(chain); + if (found != 1) { + /* No instance found, return ignore */ + args->m = mcl; + return (IP_FW_NAT); + } + } else { + if (args->oif == NULL) + retval = LibAliasIn(t->lib, c, + mcl->m_len + M_TRAILINGSPACE(mcl)); + else + retval = LibAliasOut(t->lib, c, + mcl->m_len + M_TRAILINGSPACE(mcl)); + } /* * We drop packet when: @@ -274,7 +307,7 @@ ipfw_nat(struct ip_fw_args *args, struct if (retval == PKT_ALIAS_ERROR || (args->oif == NULL && (retval == PKT_ALIAS_UNRESOLVED_FRAGMENT || (retval == PKT_ALIAS_IGNORED && - (t->lib->packetAliasMode & PKT_ALIAS_DENY_INCOMING) != 0)))) { + (t->mode & PKT_ALIAS_DENY_INCOMING) != 0)))) { /* XXX - should i add some logging? */ m_free(mcl); args->m = NULL; Modified: head/sys/netinet/libalias/alias.h ============================================================================== --- head/sys/netinet/libalias/alias.h Tue Jun 14 13:02:26 2011 (r223079) +++ head/sys/netinet/libalias/alias.h Tue Jun 14 13:35:24 2011 (r223080) @@ -220,6 +220,12 @@ struct mbuf *m_megapullup(struct mbuf #define PKT_ALIAS_PUNCH_FW 0x100 #endif +/* + * If PKT_ALIAS_SKIP_GLOBAL is set, nat instance is not checked for matching + * states in 'ipfw nat global' rule. + */ +#define PKT_ALIAS_SKIP_GLOBAL 0x200 + /* Function return codes. */ #define PKT_ALIAS_ERROR -1 #define PKT_ALIAS_OK 1 From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 14:53:18 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3599B1065673; Tue, 14 Jun 2011 14:53:18 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 237F78FC12; Tue, 14 Jun 2011 14:53:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EErI5R039649; Tue, 14 Jun 2011 14:53:18 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EErH3q039637; Tue, 14 Jun 2011 14:53:17 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201106141453.p5EErH3q039637@svn.freebsd.org> From: "Justin T. Gibbs" Date: Tue, 14 Jun 2011 14:53:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223081 - in head: sbin/camcontrol sys/cam sys/cam/scsi X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 14:53:18 -0000 Author: gibbs Date: Tue Jun 14 14:53:17 2011 New Revision: 223081 URL: http://svn.freebsd.org/changeset/base/223081 Log: Lay groundwork in CAM for recording and reporting physical path and other device attributes stored in the CAM Existing Device Table (EDT). This includes some infrastructure requried by the enclosure services driver to export physical path information. Make the CAM device advanced info interface accept store requests. sys/cam/scsi/scsi_all.c: sys/cam/scsi/scsi_all.h: - Replace scsi_get_sas_addr() with a scsi_get_devid() which takes a callback that decides whether to accept a particular descriptor. Provide callbacks for NAA IEEE Registered addresses and for SAS addresses, replacing the old function. This is needed because the old function doesn't work for an enclosure address for a SAS device, which is not flagged as a SAS address, but is NAA IEEE Registered. It may be worthwhile merging this interface with the devid match interface. - Add a few more defines for some device ID fields. sbin/camcontrol/camcontrol.c: - Update for the CCB_DEV_ADVINFO interface change. cam/cam_xpt_internal.h: - Add the new fields for the physical path string to the CAM EDT. cam/cam_ccb.h: - Rename CCB_GDEV_ADVINFO to simply CCB_DEV_ADVINFO, and the ccb structure to ccb_dev_advinfo. - Add a flag that changes this CCB's action to store, rather than the default, retrieve. - Add a new buffer type, CDAI_TYPE_PHYS_PATH, for the new CAM EDT physpath field. - Remove the never-implemented transport & proto flags. cam/cam_xpt.c: cam/cam_xpt.h: - Add xpt_getattr(), which provides a wrapper for fetching a device's attribute using the GEOM strings as key. This method currently supports "GEOM::ident" and "GEOM::physpath". Submitted by: will Reviewed by : gibbs Extend the XPT_DEV_MATCH api to allow a device search by device ID. As far as the API is concerned, device ID is a binary blob to be interpreted by the transport layer. The SCSI implementation assumes it is an array of VPD device ID descriptors. sys/cam/cam_ccb.h: Create a new structure, device_id_match_pattern, and update the XPT_DEV_MATCH datastructures and flags so that this pattern type can be used. sys/cam/cam_xpt.c: - A single pattern matching on both inquiry data and device ID is invalid. Report any violators. - Pass device ID match requests through to the new routine scsi_devid_match(). The direct call of a SCSI routine is a layering violation, but no worse than the one a few lines up that checks inquiry data. Defer cleaning this up until our future, larger, rototilling of CAM. - Zero out cam_ed and cam_et nodes on allocation. Prior to this change, device_id_len and device_id were not inialized, preventing proper detection of the presence of this information. sys/cam/scsi/scsi_all.c: sys/cam/scsi/scsi_all.h: Add the scsi_match_devid() routine. Add a helper function for extracting peripherial driver names sys/cam/cam_periph.c: sys/cam/cam_periph.h: Add the cam_periph_list() method which fills an sbuf with a comma delimited list of the peripheral instances associated with a given CAM path. Add a helper functions for SCSI commands used by the SES driver. sys/cam/scsi/scsi_all.c: sys/cam/scsi/scsi_all.h: Add structure definitions and csio filling functions for the receive diagnostic results and send diagnostic commands. Misc CAM XPT cleanups. sys/cam/cam_xpt.c: Broadcast AC_FOUND_DEVICE and AC_PATH_REGISTERED events at the time async event handlers are attached even when registering just for events on a partitular SIM. Previously, you had to register for these events on all SIMs in the system in order to get the initial broadcast even though subsequent device and path arrivals would be delivered. sys/cam/cam_xpt.c: Remove SIM mutex held asserts from path accessors. CAM paths are reference counted and it is this reference count, not the sim mutex, that garantees they are stable. Sponsored by: Spectra Logic Corporation Modified: head/sbin/camcontrol/camcontrol.c head/sys/cam/cam_ccb.h head/sys/cam/cam_periph.c head/sys/cam/cam_periph.h head/sys/cam/cam_xpt.c head/sys/cam/cam_xpt.h head/sys/cam/cam_xpt_internal.h head/sys/cam/scsi/scsi_all.c head/sys/cam/scsi/scsi_all.h head/sys/cam/scsi/scsi_pass.c head/sys/cam/scsi/scsi_xpt.c Modified: head/sbin/camcontrol/camcontrol.c ============================================================================== --- head/sbin/camcontrol/camcontrol.c Tue Jun 14 13:35:24 2011 (r223080) +++ head/sbin/camcontrol/camcontrol.c Tue Jun 14 14:53:17 2011 (r223081) @@ -5044,13 +5044,13 @@ getdevid(struct cam_devitem *item) * then allocate that much memory and try again. */ retry: - ccb->ccb_h.func_code = XPT_GDEV_ADVINFO; + ccb->ccb_h.func_code = XPT_DEV_ADVINFO; ccb->ccb_h.flags = CAM_DIR_IN; - ccb->cgdai.flags = CGDAI_FLAG_PROTO; - ccb->cgdai.buftype = CGDAI_TYPE_SCSI_DEVID; - ccb->cgdai.bufsiz = item->device_id_len; + ccb->cdai.flags = 0; + ccb->cdai.buftype = CDAI_TYPE_SCSI_DEVID; + ccb->cdai.bufsiz = item->device_id_len; if (item->device_id_len != 0) - ccb->cgdai.buf = (uint8_t *)item->device_id; + ccb->cdai.buf = (uint8_t *)item->device_id; if (cam_send_ccb(dev, ccb) < 0) { warn("%s: error sending XPT_GDEV_ADVINFO CCB", __func__); @@ -5069,13 +5069,13 @@ retry: * This is our first time through. Allocate the buffer, * and then go back to get the data. */ - if (ccb->cgdai.provsiz == 0) { + if (ccb->cdai.provsiz == 0) { warnx("%s: invalid .provsiz field returned with " "XPT_GDEV_ADVINFO CCB", __func__); retval = 1; goto bailout; } - item->device_id_len = ccb->cgdai.provsiz; + item->device_id_len = ccb->cdai.provsiz; item->device_id = malloc(item->device_id_len); if (item->device_id == NULL) { warn("%s: unable to allocate %d bytes", __func__, @@ -5283,8 +5283,9 @@ findsasdevice(struct cam_devlist *devlis /* * XXX KDM look for LUN IDs as well? */ - item_addr = scsi_get_sas_addr(item->device_id, - item->device_id_len); + item_addr = scsi_get_devid(item->device_id, + item->device_id_len, + scsi_devid_is_sas_target); if (item_addr == NULL) continue; Modified: head/sys/cam/cam_ccb.h ============================================================================== --- head/sys/cam/cam_ccb.h Tue Jun 14 13:35:24 2011 (r223080) +++ head/sys/cam/cam_ccb.h Tue Jun 14 14:53:17 2011 (r223081) @@ -144,8 +144,8 @@ typedef enum { /* Device statistics (error counts, etc.) */ XPT_FREEZE_QUEUE = 0x0d, /* Freeze device queue */ - XPT_GDEV_ADVINFO = 0x0e, - /* Advanced device information */ + XPT_DEV_ADVINFO = 0x0e, + /* Get/Set Device advanced information */ /* SCSI Control Functions: 0x10->0x1F */ XPT_ABORT = 0x10, /* Abort the specified CCB */ @@ -391,15 +391,24 @@ typedef enum { DEV_MATCH_TARGET = 0x002, DEV_MATCH_LUN = 0x004, DEV_MATCH_INQUIRY = 0x008, + DEV_MATCH_DEVID = 0x010, DEV_MATCH_ANY = 0x00f } dev_pattern_flags; +struct device_id_match_pattern { + uint8_t id_len; + uint8_t id[256]; +}; + struct device_match_pattern { - path_id_t path_id; - target_id_t target_id; - lun_id_t target_lun; - struct scsi_static_inquiry_pattern inq_pat; - dev_pattern_flags flags; + path_id_t path_id; + target_id_t target_id; + lun_id_t target_lun; + dev_pattern_flags flags; + union { + struct scsi_static_inquiry_pattern inq_pat; + struct device_id_match_pattern devid_pat; + } data; }; typedef enum { @@ -745,6 +754,7 @@ struct ccb_relsim { * Definitions for the asynchronous callback CCB fields. */ typedef enum { + AC_ADVINFO_CHANGED = 0x2000,/* Advance info might have changes */ AC_CONTRACT = 0x1000,/* A contractual callback */ AC_GETDEV_CHANGED = 0x800,/* Getdev info might have changed */ AC_INQ_CHANGED = 0x400,/* Inquiry info might have changed */ @@ -1094,19 +1104,20 @@ struct ccb_eng_exec { /* This structure #define XPT_CCB_INVALID -1 /* for signaling a bad CCB to free */ /* - * CCB for getting advanced device information. This operates in a fashion + * CCB for working with advanced device information. This operates in a fashion * similar to XPT_GDEV_TYPE. Specify the target in ccb_h, the buffer * type requested, and provide a buffer size/buffer to write to. If the - * buffer is too small, the handler will set GDEVAI_FLAG_MORE. + * buffer is too small, provsiz will be larger than bufsiz. */ -struct ccb_getdev_advinfo { +struct ccb_dev_advinfo { struct ccb_hdr ccb_h; uint32_t flags; -#define CGDAI_FLAG_TRANSPORT 0x1 -#define CGDAI_FLAG_PROTO 0x2 +#define CDAI_FLAG_STORE 0x1 /* If set, action becomes store */ uint32_t buftype; /* IN: Type of data being requested */ /* NB: buftype is interpreted on a per-transport basis */ -#define CGDAI_TYPE_SCSI_DEVID 1 +#define CDAI_TYPE_SCSI_DEVID 1 +#define CDAI_TYPE_SERIAL_NUM 2 +#define CDAI_TYPE_PHYS_PATH 3 off_t bufsiz; /* IN: Size of external buffer */ #define CAM_SCSI_DEVID_MAXLEN 65536 /* length in buffer is an uint16_t */ off_t provsiz; /* OUT: Size required/used */ @@ -1151,7 +1162,7 @@ union ccb { struct ccb_rescan crcn; struct ccb_debug cdbg; struct ccb_ataio ataio; - struct ccb_getdev_advinfo cgdai; + struct ccb_dev_advinfo cdai; }; __BEGIN_DECLS Modified: head/sys/cam/cam_periph.c ============================================================================== --- head/sys/cam/cam_periph.c Tue Jun 14 13:35:24 2011 (r223080) +++ head/sys/cam/cam_periph.c Tue Jun 14 14:53:17 2011 (r223081) @@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -303,6 +304,38 @@ cam_periph_find(struct cam_path *path, c return(NULL); } +/* + * Find a peripheral structure with the specified path, target, lun, + * and (optionally) type. If the name is NULL, this function will return + * the first peripheral driver that matches the specified path. + */ +int +cam_periph_list(struct cam_path *path, struct sbuf *sb) +{ + struct periph_driver **p_drv; + struct cam_periph *periph; + int count; + + count = 0; + xpt_lock_buses(); + for (p_drv = periph_drivers; *p_drv != NULL; p_drv++) { + + TAILQ_FOREACH(periph, &(*p_drv)->units, unit_links) { + if (xpt_path_comp(periph->path, path) != 0) + continue; + + if (sbuf_len(sb) != 0) + sbuf_cat(sb, ","); + + sbuf_printf(sb, "%s%d", periph->periph_name, + periph->unit_number); + count++; + } + } + xpt_unlock_buses(); + return (count); +} + cam_status cam_periph_acquire(struct cam_periph *periph) { @@ -654,12 +687,12 @@ cam_periph_mapmem(union ccb *ccb, struct dirs[1] = CAM_DIR_IN; numbufs = 2; break; - case XPT_GDEV_ADVINFO: - if (ccb->cgdai.bufsiz == 0) + case XPT_DEV_ADVINFO: + if (ccb->cdai.bufsiz == 0) return (0); - data_ptrs[0] = (uint8_t **)&ccb->cgdai.buf; - lengths[0] = ccb->cgdai.bufsiz; + data_ptrs[0] = (uint8_t **)&ccb->cdai.buf; + lengths[0] = ccb->cdai.bufsiz; dirs[0] = CAM_DIR_IN; numbufs = 1; @@ -813,9 +846,9 @@ cam_periph_unmapmem(union ccb *ccb, stru data_ptrs[0] = &ccb->smpio.smp_request; data_ptrs[1] = &ccb->smpio.smp_response; break; - case XPT_GDEV_ADVINFO: + case XPT_DEV_ADVINFO: numbufs = min(mapinfo->num_bufs_used, 1); - data_ptrs[0] = (uint8_t **)&ccb->cgdai.buf; + data_ptrs[0] = (uint8_t **)&ccb->cdai.buf; break; default: /* allow ourselves to be swapped once again */ Modified: head/sys/cam/cam_periph.h ============================================================================== --- head/sys/cam/cam_periph.h Tue Jun 14 13:35:24 2011 (r223080) +++ head/sys/cam/cam_periph.h Tue Jun 14 14:53:17 2011 (r223081) @@ -142,6 +142,7 @@ cam_status cam_periph_alloc(periph_ctor_ char *name, cam_periph_type type, struct cam_path *, ac_callback_t *, ac_code, void *arg); struct cam_periph *cam_periph_find(struct cam_path *path, char *name); +int cam_periph_list(struct cam_path *, struct sbuf *); cam_status cam_periph_acquire(struct cam_periph *periph); void cam_periph_release(struct cam_periph *periph); void cam_periph_release_locked(struct cam_periph *periph); @@ -200,5 +201,12 @@ cam_periph_owned(struct cam_periph *peri return (mtx_owned(periph->sim->mtx)); } +static __inline int +cam_periph_sleep(struct cam_periph *periph, void *chan, int priority, + const char *wmesg, int timo) +{ + return (msleep(chan, periph->sim->mtx, priority, wmesg, timo)); +} + #endif /* _KERNEL */ #endif /* _CAM_CAM_PERIPH_H */ Modified: head/sys/cam/cam_xpt.c ============================================================================== --- head/sys/cam/cam_xpt.c Tue Jun 14 13:35:24 2011 (r223080) +++ head/sys/cam/cam_xpt.c Tue Jun 14 14:53:17 2011 (r223081) @@ -287,9 +287,6 @@ static xpt_targetfunc_t xptdeftargetfunc static xpt_devicefunc_t xptdefdevicefunc; static xpt_periphfunc_t xptdefperiphfunc; static void xpt_finishconfig_task(void *context, int pending); -static int xpt_for_all_busses(xpt_busfunc_t *tr_func, void *arg); -static int xpt_for_all_devices(xpt_devicefunc_t *tr_func, - void *arg); static void xpt_dev_async_default(u_int32_t async_code, struct cam_eb *bus, struct cam_et *target, @@ -1105,6 +1102,44 @@ xpt_announce_periph(struct cam_periph *p periph->unit_number, announce_string); } +int +xpt_getattr(char *buf, size_t len, const char *attr, struct cam_path *path) +{ + int ret = -1; + struct ccb_dev_advinfo cdai; + + memset(&cdai, 0, sizeof(cdai)); + xpt_setup_ccb(&cdai.ccb_h, path, CAM_PRIORITY_NORMAL); + cdai.ccb_h.func_code = XPT_DEV_ADVINFO; + cdai.bufsiz = len; + + if (!strcmp(attr, "GEOM::ident")) + cdai.buftype = CDAI_TYPE_SERIAL_NUM; + else if (!strcmp(attr, "GEOM::physpath")) + cdai.buftype = CDAI_TYPE_PHYS_PATH; + else + goto out; + + cdai.buf = malloc(cdai.bufsiz, M_CAMXPT, M_NOWAIT|M_ZERO); + if (cdai.buf == NULL) { + ret = ENOMEM; + goto out; + } + xpt_action((union ccb *)&cdai); /* can only be synchronous */ + if ((cdai.ccb_h.status & CAM_DEV_QFRZN) != 0) + cam_release_devq(cdai.ccb_h.path, 0, 0, 0, FALSE); + if (cdai.provsiz == 0) + goto out; + ret = 0; + if (strlcpy(buf, cdai.buf, len) >= len) + ret = EFAULT; + +out: + if (cdai.buf != NULL) + free(cdai.buf, M_CAMXPT); + return ret; +} + static dev_match_ret xptbusmatch(struct dev_match_pattern *patterns, u_int num_patterns, struct cam_eb *bus) @@ -1241,6 +1276,7 @@ xptdevicematch(struct dev_match_pattern for (i = 0; i < num_patterns; i++) { struct device_match_pattern *cur_pattern; + struct scsi_vpd_device_id *device_id_page; /* * If the pattern in question isn't for a device node, we @@ -1255,22 +1291,17 @@ xptdevicematch(struct dev_match_pattern cur_pattern = &patterns[i].pattern.device_pattern; + /* Error out if mutually exclusive options are specified. */ + if ((cur_pattern->flags & (DEV_MATCH_INQUIRY|DEV_MATCH_DEVID)) + == (DEV_MATCH_INQUIRY|DEV_MATCH_DEVID)) + return(DM_RET_ERROR); + /* * If they want to match any device node, we give them any * device node. */ - if (cur_pattern->flags == DEV_MATCH_ANY) { - /* set the copy flag */ - retval |= DM_RET_COPY; - - - /* - * If we've already decided on an action, go ahead - * and return. - */ - if ((retval & DM_RET_ACTION_MASK) != DM_RET_NONE) - return(retval); - } + if (cur_pattern->flags == DEV_MATCH_ANY) + goto copy_dev_node; /* * Not sure why someone would do this... @@ -1292,11 +1323,22 @@ xptdevicematch(struct dev_match_pattern if (((cur_pattern->flags & DEV_MATCH_INQUIRY) != 0) && (cam_quirkmatch((caddr_t)&device->inq_data, - (caddr_t)&cur_pattern->inq_pat, - 1, sizeof(cur_pattern->inq_pat), + (caddr_t)&cur_pattern->data.inq_pat, + 1, sizeof(cur_pattern->data.inq_pat), scsi_static_inquiry_match) == NULL)) continue; + device_id_page = (struct scsi_vpd_device_id *)device->device_id; + if (((cur_pattern->flags & DEV_MATCH_DEVID) != 0) + && (device->device_id_len < SVPD_DEVICE_ID_HDR_LEN + || scsi_devid_match((uint8_t *)device_id_page->desc_list, + device->device_id_len + - SVPD_DEVICE_ID_HDR_LEN, + cur_pattern->data.devid_pat.id, + cur_pattern->data.devid_pat.id_len) != 0)) + continue; + +copy_dev_node: /* * If we get to this point, the user definitely wants * information on this device. So tell the caller to copy @@ -2889,6 +2931,8 @@ xpt_action_default(union ccb *start_ccb) case XPT_TERM_IO: case XPT_ENG_INQ: /* XXX Implement */ + printf("%s: CCB type %#x not supported\n", __func__, + start_ccb->ccb_h.func_code); start_ccb->ccb_h.status = CAM_PROVIDE_FAIL; if (start_ccb->ccb_h.func_code & XPT_FC_DEV_QUEUED) { xpt_done(start_ccb); @@ -3528,16 +3572,12 @@ xpt_path_string(struct cam_path *path, c path_id_t xpt_path_path_id(struct cam_path *path) { - mtx_assert(path->bus->sim->mtx, MA_OWNED); - return(path->bus->path_id); } target_id_t xpt_path_target_id(struct cam_path *path) { - mtx_assert(path->bus->sim->mtx, MA_OWNED); - if (path->target != NULL) return (path->target->target_id); else @@ -3547,8 +3587,6 @@ xpt_path_target_id(struct cam_path *path lun_id_t xpt_path_lun_id(struct cam_path *path) { - mtx_assert(path->bus->sim->mtx, MA_OWNED); - if (path->device != NULL) return (path->device->lun_id); else @@ -4242,7 +4280,8 @@ xpt_alloc_target(struct cam_eb *bus, tar { struct cam_et *target; - target = (struct cam_et *)malloc(sizeof(*target), M_CAMXPT, M_NOWAIT); + target = (struct cam_et *)malloc(sizeof(*target), M_CAMXPT, + M_NOWAIT|M_ZERO); if (target != NULL) { struct cam_et *cur_target; @@ -4330,7 +4369,7 @@ xpt_alloc_device(struct cam_eb *bus, str device = NULL; } else { device = (struct cam_ed *)malloc(sizeof(*device), - M_CAMXPT, M_NOWAIT); + M_CAMXPT, M_NOWAIT|M_ZERO); } if (device != NULL) { @@ -4676,27 +4715,29 @@ xpt_register_async(int event, ac_callbac csa.callback_arg = cbarg; xpt_action((union ccb *)&csa); status = csa.ccb_h.status; + if (xptpath) { xpt_free_path(path); mtx_unlock(&xsoftc.xpt_lock); + } - if ((status == CAM_REQ_CMP) && - (csa.event_enable & AC_FOUND_DEVICE)) { - /* - * Get this peripheral up to date with all - * the currently existing devices. - */ - xpt_for_all_devices(xptsetasyncfunc, &csa); - } - if ((status == CAM_REQ_CMP) && - (csa.event_enable & AC_PATH_REGISTERED)) { - /* - * Get this peripheral up to date with all - * the currently existing busses. - */ - xpt_for_all_busses(xptsetasyncbusfunc, &csa); - } + if ((status == CAM_REQ_CMP) && + (csa.event_enable & AC_FOUND_DEVICE)) { + /* + * Get this peripheral up to date with all + * the currently existing devices. + */ + xpt_for_all_devices(xptsetasyncfunc, &csa); } + if ((status == CAM_REQ_CMP) && + (csa.event_enable & AC_PATH_REGISTERED)) { + /* + * Get this peripheral up to date with all + * the currently existing busses. + */ + xpt_for_all_busses(xptsetasyncbusfunc, &csa); + } + return (status); } @@ -4852,8 +4893,10 @@ camisr_runqueue(void *V_queue) if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0 && (--dev->tag_delay_count == 0)) xpt_start_tags(ccb_h->path); - if (!device_is_send_queued(dev)) - xpt_schedule_dev_sendq(ccb_h->path->bus, dev); + if (!device_is_send_queued(dev)) { + runq = xpt_schedule_dev_sendq(ccb_h->path->bus, + dev); + } } if (ccb_h->status & CAM_RELEASE_SIMQ) { Modified: head/sys/cam/cam_xpt.h ============================================================================== --- head/sys/cam/cam_xpt.h Tue Jun 14 13:35:24 2011 (r223080) +++ head/sys/cam/cam_xpt.h Tue Jun 14 14:53:17 2011 (r223081) @@ -103,6 +103,8 @@ cam_status xpt_create_path_unlocked(str struct cam_periph *perph, path_id_t path_id, target_id_t target_id, lun_id_t lun_id); +int xpt_getattr(char *buf, size_t len, const char *attr, + struct cam_path *path); void xpt_free_path(struct cam_path *path); int xpt_path_comp(struct cam_path *path1, struct cam_path *path2); Modified: head/sys/cam/cam_xpt_internal.h ============================================================================== --- head/sys/cam/cam_xpt_internal.h Tue Jun 14 13:35:24 2011 (r223080) +++ head/sys/cam/cam_xpt_internal.h Tue Jun 14 14:53:17 2011 (r223081) @@ -97,6 +97,8 @@ struct cam_ed { uint8_t supported_vpds_len; uint32_t device_id_len; uint8_t *device_id; + uint8_t physpath_len; + uint8_t *physpath; /* physical path string form */ struct ata_params ident_data; u_int8_t inq_flags; /* * Current settings for inquiry flags. Modified: head/sys/cam/scsi/scsi_all.c ============================================================================== --- head/sys/cam/scsi/scsi_all.c Tue Jun 14 13:35:24 2011 (r223080) +++ head/sys/cam/scsi/scsi_all.c Tue Jun 14 14:53:17 2011 (r223081) @@ -3552,32 +3552,63 @@ scsi_calc_syncparam(u_int period) return (period/400); } -uint8_t * -scsi_get_sas_addr(struct scsi_vpd_device_id *id, uint32_t len) +int +scsi_devid_is_naa_ieee_reg(uint8_t *bufp) { - uint8_t *bufp, *buf_end; struct scsi_vpd_id_descriptor *descr; struct scsi_vpd_id_naa_basic *naa; - bufp = buf_end = (uint8_t *)id; - bufp += SVPD_DEVICE_ID_HDR_LEN; - buf_end += len; - while (bufp < buf_end) { - descr = (struct scsi_vpd_id_descriptor *)bufp; - bufp += SVPD_DEVICE_ID_DESC_HDR_LEN; - /* Right now, we only care about SAS NAA IEEE Reg addrs */ - if (((descr->id_type & SVPD_ID_PIV) != 0) - && (descr->proto_codeset >> SVPD_ID_PROTO_SHIFT) == - SCSI_PROTO_SAS - && (descr->id_type & SVPD_ID_TYPE_MASK) == SVPD_ID_TYPE_NAA){ - naa = (struct scsi_vpd_id_naa_basic *)bufp; - if ((naa->naa >> 4) == SVPD_ID_NAA_IEEE_REG) - return bufp; - } - bufp += descr->length; + descr = (struct scsi_vpd_id_descriptor *)bufp; + naa = (struct scsi_vpd_id_naa_basic *)descr->identifier; + if ((descr->id_type & SVPD_ID_TYPE_MASK) != SVPD_ID_TYPE_NAA) + return 0; + if (descr->length < sizeof(struct scsi_vpd_id_naa_ieee_reg)) + return 0; + if ((naa->naa >> SVPD_ID_NAA_NAA_SHIFT) != SVPD_ID_NAA_IEEE_REG) + return 0; + return 1; +} + +int +scsi_devid_is_sas_target(uint8_t *bufp) +{ + struct scsi_vpd_id_descriptor *descr; + + descr = (struct scsi_vpd_id_descriptor *)bufp; + if (!scsi_devid_is_naa_ieee_reg(bufp)) + return 0; + if ((descr->id_type & SVPD_ID_PIV) == 0) /* proto field reserved */ + return 0; + if ((descr->proto_codeset >> SVPD_ID_PROTO_SHIFT) != SCSI_PROTO_SAS) + return 0; + return 1; +} + +uint8_t * +scsi_get_devid(struct scsi_vpd_device_id *id, uint32_t page_len, + scsi_devid_checkfn_t ck_fn) +{ + struct scsi_vpd_id_descriptor *desc; + uint8_t *page_end; + uint8_t *desc_buf_end; + + page_end = (uint8_t *)id + page_len; + if (page_end < id->desc_list) + return (NULL); + + desc_buf_end = MIN(id->desc_list + scsi_2btoul(id->length), page_end); + + for (desc = (struct scsi_vpd_id_descriptor *)id->desc_list; + desc->identifier <= desc_buf_end + && desc->identifier + desc->length <= desc_buf_end; + desc = (struct scsi_vpd_id_descriptor *)(desc->identifier + + desc->length)) { + + if (ck_fn == NULL || ck_fn((uint8_t *)desc) != 0) + return (desc->identifier); } - return NULL; + return (NULL); } void @@ -4174,6 +4205,77 @@ scsi_read_write(struct ccb_scsiio *csio, timeout); } +void +scsi_receive_diagnostic_results(struct ccb_scsiio *csio, u_int32_t retries, + void (*cbfcnp)(struct cam_periph *, union ccb*), + uint8_t tag_action, int pcv, uint8_t page_code, + uint8_t *data_ptr, uint16_t allocation_length, + uint8_t sense_len, uint32_t timeout) +{ + struct scsi_receive_diag *scsi_cmd; + + scsi_cmd = (struct scsi_receive_diag *)&csio->cdb_io.cdb_bytes; + memset(scsi_cmd, 0, sizeof(*scsi_cmd)); + scsi_cmd->opcode = RECEIVE_DIAGNOSTIC; + if (pcv) { + scsi_cmd->byte2 |= SRD_PCV; + scsi_cmd->page_code = page_code; + } + scsi_ulto2b(allocation_length, scsi_cmd->length); + + cam_fill_csio(csio, + retries, + cbfcnp, + /*flags*/CAM_DIR_IN, + tag_action, + data_ptr, + allocation_length, + sense_len, + sizeof(*scsi_cmd), + timeout); +} + +void +scsi_send_diagnostic(struct ccb_scsiio *csio, u_int32_t retries, + void (*cbfcnp)(struct cam_periph *, union ccb *), + uint8_t tag_action, int unit_offline, int device_offline, + int self_test, int page_format, int self_test_code, + uint8_t *data_ptr, uint16_t param_list_length, + uint8_t sense_len, uint32_t timeout) +{ + struct scsi_send_diag *scsi_cmd; + + scsi_cmd = (struct scsi_send_diag *)&csio->cdb_io.cdb_bytes; + memset(scsi_cmd, 0, sizeof(*scsi_cmd)); + scsi_cmd->opcode = SEND_DIAGNOSTIC; + + /* + * The default self-test mode control and specific test + * control are mutually exclusive. + */ + if (self_test) + self_test_code = SSD_SELF_TEST_CODE_NONE; + + scsi_cmd->byte2 = ((self_test_code << SSD_SELF_TEST_CODE_SHIFT) + & SSD_SELF_TEST_CODE_MASK) + | (unit_offline ? SSD_UNITOFFL : 0) + | (device_offline ? SSD_DEVOFFL : 0) + | (self_test ? SSD_SELFTEST : 0) + | (page_format ? SSD_PF : 0); + scsi_ulto2b(param_list_length, scsi_cmd->length); + + cam_fill_csio(csio, + retries, + cbfcnp, + /*flags*/param_list_length ? CAM_DIR_OUT : CAM_DIR_NONE, + tag_action, + data_ptr, + param_list_length, + sense_len, + sizeof(*scsi_cmd), + timeout); +} + void scsi_start_stop(struct ccb_scsiio *csio, u_int32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb *), @@ -4206,7 +4308,6 @@ scsi_start_stop(struct ccb_scsiio *csio, sense_len, sizeof(*scsi_cmd), timeout); - } @@ -4264,6 +4365,66 @@ scsi_static_inquiry_match(caddr_t inqbuf return (-1); } +/** + * Compare two buffers of vpd device descriptors for a match. + * + * \param lhs Pointer to first buffer of descriptors to compare. + * \param lhs_len The length of the first buffer. + * \param rhs Pointer to second buffer of descriptors to compare. + * \param rhs_len The length of the second buffer. + * + * \return 0 on a match, -1 otherwise. + * + * Treat rhs and lhs as arrays of vpd device id descriptors. Walk lhs matching + * agains each element in rhs until all data are exhausted or we have found + * a match. + */ +int +scsi_devid_match(uint8_t *lhs, size_t lhs_len, uint8_t *rhs, size_t rhs_len) +{ + struct scsi_vpd_id_descriptor *lhs_id; + struct scsi_vpd_id_descriptor *lhs_last; + struct scsi_vpd_id_descriptor *rhs_last; + uint8_t *lhs_end; + uint8_t *rhs_end; + + lhs_end = lhs + lhs_len; + rhs_end = rhs + rhs_len; + + /* + * rhs_last and lhs_last are the last posible position of a valid + * descriptor assuming it had a zero length identifier. We use + * these variables to insure we can safely dereference the length + * field in our loop termination tests. + */ + lhs_last = (struct scsi_vpd_id_descriptor *) + (lhs_end - __offsetof(struct scsi_vpd_id_descriptor, identifier)); + rhs_last = (struct scsi_vpd_id_descriptor *) + (rhs_end - __offsetof(struct scsi_vpd_id_descriptor, identifier)); + + lhs_id = (struct scsi_vpd_id_descriptor *)lhs; + while (lhs_id <= lhs_last + && (lhs_id->identifier + lhs_id->length) <= lhs_end) { + struct scsi_vpd_id_descriptor *rhs_id; + + rhs_id = (struct scsi_vpd_id_descriptor *)rhs; + while (rhs_id <= rhs_last + && (rhs_id->identifier + rhs_id->length) <= rhs_end) { + + if (rhs_id->length == lhs_id->length + && memcmp(rhs_id->identifier, lhs_id->identifier, + rhs_id->length) == 0) + return (0); + + rhs_id = (struct scsi_vpd_id_descriptor *) + (rhs_id->identifier + rhs_id->length); + } + lhs_id = (struct scsi_vpd_id_descriptor *) + (lhs_id->identifier + lhs_id->length); + } + return (-1); +} + #ifdef _KERNEL static void init_scsi_delay(void) Modified: head/sys/cam/scsi/scsi_all.h ============================================================================== --- head/sys/cam/scsi/scsi_all.h Tue Jun 14 13:35:24 2011 (r223080) +++ head/sys/cam/scsi/scsi_all.h Tue Jun 14 14:53:17 2011 (r223081) @@ -115,6 +115,7 @@ struct scsi_request_sense { u_int8_t opcode; u_int8_t byte2; +#define SRS_DESC 0x01 u_int8_t unused[2]; u_int8_t length; u_int8_t control; @@ -128,17 +129,33 @@ struct scsi_test_unit_ready u_int8_t control; }; -struct scsi_send_diag -{ - u_int8_t opcode; - u_int8_t byte2; -#define SSD_UOL 0x01 -#define SSD_DOL 0x02 -#define SSD_SELFTEST 0x04 -#define SSD_PF 0x10 - u_int8_t unused[1]; - u_int8_t paramlen[2]; - u_int8_t control; +struct scsi_receive_diag { + uint8_t opcode; + uint8_t byte2; +#define SRD_PCV 0x01 + uint8_t page_code; + uint8_t length[2]; + uint8_t control; +}; + +struct scsi_send_diag { + uint8_t opcode; + uint8_t byte2; +#define SSD_UNITOFFL 0x01 +#define SSD_DEVOFFL 0x02 +#define SSD_SELFTEST 0x04 +#define SSD_PF 0x10 +#define SSD_SELF_TEST_CODE_MASK 0xE0 +#define SSD_SELF_TEST_CODE_SHIFT 5 +#define SSD_SELF_TEST_CODE_NONE 0x00 +#define SSD_SELF_TEST_CODE_BG_SHORT 0x01 +#define SSD_SELF_TEST_CODE_BG_EXTENDED 0x02 +#define SSD_SELF_TEST_CODE_BG_ABORT 0x04 +#define SSD_SELF_TEST_CODE_FG_SHORT 0x05 +#define SSD_SELF_TEST_CODE_FG_EXTENDED 0x06 + uint8_t reserved; + uint8_t length[2]; + uint8_t control; }; struct scsi_sense @@ -894,11 +911,12 @@ struct scsi_vpd_id_naa_basic uint8_t naa : 4; uint8_t naa_desig : 4; */ +#define SVPD_ID_NAA_NAA_SHIFT 4 #define SVPD_ID_NAA_IEEE_EXT 0x02 #define SVPD_ID_NAA_LOCAL_REG 0x03 #define SVPD_ID_NAA_IEEE_REG 0x05 #define SVPD_ID_NAA_IEEE_REG_EXT 0x06 - uint8_t naa_data[0]; + uint8_t naa_data[]; }; struct scsi_vpd_id_naa_ieee_extended_id @@ -1322,7 +1340,12 @@ void scsi_print_inquiry(struct scsi_inq u_int scsi_calc_syncsrate(u_int period_factor); u_int scsi_calc_syncparam(u_int period); -uint8_t * scsi_get_sas_addr(struct scsi_vpd_device_id *id, uint32_t len); + +typedef int (*scsi_devid_checkfn_t)(uint8_t *); +int scsi_devid_is_naa_ieee_reg(uint8_t *bufp); +int scsi_devid_is_sas_target(uint8_t *bufp); +uint8_t * scsi_get_devid(struct scsi_vpd_device_id *id, uint32_t len, + scsi_devid_checkfn_t ck_fn); void scsi_test_unit_ready(struct ccb_scsiio *csio, u_int32_t retries, void (*cbfcnp)(struct cam_periph *, @@ -1439,6 +1462,22 @@ void scsi_synchronize_cache(struct ccb_ u_int32_t begin_lba, u_int16_t lb_count, u_int8_t sense_len, u_int32_t timeout); +void scsi_receive_diagnostic_results(struct ccb_scsiio *csio, u_int32_t retries, + void (*cbfcnp)(struct cam_periph *, + union ccb*), + uint8_t tag_action, int pcv, + uint8_t page_code, uint8_t *data_ptr, + uint16_t allocation_length, + uint8_t sense_len, uint32_t timeout); + +void scsi_send_diagnostic(struct ccb_scsiio *csio, u_int32_t retries, + void (*cbfcnp)(struct cam_periph *, union ccb *), + uint8_t tag_action, int unit_offline, + int device_offline, int self_test, int page_format, + int self_test_code, uint8_t *data_ptr, + uint16_t param_list_length, uint8_t sense_len, + uint32_t timeout); + void scsi_read_write(struct ccb_scsiio *csio, u_int32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int readop, u_int8_t byte2, @@ -1455,6 +1494,8 @@ void scsi_start_stop(struct ccb_scsiio * int scsi_inquiry_match(caddr_t inqbuffer, caddr_t table_entry); int scsi_static_inquiry_match(caddr_t inqbuffer, caddr_t table_entry); +int scsi_devid_match(uint8_t *rhs, size_t rhs_len, + uint8_t *lhs, size_t lhs_len); static __inline void scsi_extract_sense(struct scsi_sense_data *sense, int *error_code, int *sense_key, Modified: head/sys/cam/scsi/scsi_pass.c ============================================================================== --- head/sys/cam/scsi/scsi_pass.c Tue Jun 14 13:35:24 2011 (r223080) +++ head/sys/cam/scsi/scsi_pass.c Tue Jun 14 14:53:17 2011 (r223081) @@ -548,8 +548,8 @@ passsendccb(struct cam_periph *periph, u && ((ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_NONE)) || (ccb->ccb_h.func_code == XPT_DEV_MATCH) || (ccb->ccb_h.func_code == XPT_SMP_IO) - || ((ccb->ccb_h.func_code == XPT_GDEV_ADVINFO) - && (ccb->cgdai.bufsiz > 0)))) { + || ((ccb->ccb_h.func_code == XPT_DEV_ADVINFO) + && (ccb->cdai.bufsiz > 0)))) { bzero(&mapinfo, sizeof(mapinfo)); Modified: head/sys/cam/scsi/scsi_xpt.c ============================================================================== --- head/sys/cam/scsi/scsi_xpt.c Tue Jun 14 13:35:24 2011 (r223080) +++ head/sys/cam/scsi/scsi_xpt.c Tue Jun 14 14:53:17 2011 (r223081) @@ -542,6 +542,7 @@ static const int scsi_quirk_table_size = static cam_status proberegister(struct cam_periph *periph, void *arg); static void probeschedule(struct cam_periph *probe_periph); +static int device_has_vpd(struct cam_ed *device, uint8_t page_id); static void probestart(struct cam_periph *periph, union ccb *start_ccb); static void proberequestdefaultnegotiation(struct cam_periph *periph); static int proberequestbackoff(struct cam_periph *periph, @@ -1460,7 +1461,7 @@ probedone(struct cam_periph *periph, uni path->device->device_id = (uint8_t *)devid; } } else if (cam_periph_error(done_ccb, 0, - SF_RETRY_UA|SF_NO_PRINT, + SF_RETRY_UA, &softc->saved_ccb) == ERESTART) { return; } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { @@ -1506,9 +1507,9 @@ probe_device_check: (u_int8_t *)malloc((serial_buf->length + 1), M_CAMXPT, M_NOWAIT); if (path->device->serial_num != NULL) { - bcopy(serial_buf->serial_num, - path->device->serial_num, - serial_buf->length); + memcpy(path->device->serial_num, + serial_buf->serial_num, + serial_buf->length); path->device->serial_num_len = serial_buf->length; path->device->serial_num[serial_buf->length] @@ -2433,28 +2434,77 @@ scsi_devise_transport(struct cam_path *p } static void -scsi_getdev_advinfo(union ccb *start_ccb) +scsi_dev_advinfo(union ccb *start_ccb) { struct cam_ed *device; - struct ccb_getdev_advinfo *cgdai; + struct ccb_dev_advinfo *cdai; off_t amt; device = start_ccb->ccb_h.path->device; - cgdai = &start_ccb->cgdai; - switch(cgdai->buftype) { - case CGDAI_TYPE_SCSI_DEVID: - cgdai->provsiz = device->device_id_len; + cdai = &start_ccb->cdai; + switch(cdai->buftype) { + case CDAI_TYPE_SCSI_DEVID: + if (cdai->flags & CDAI_FLAG_STORE) + break; + cdai->provsiz = device->device_id_len; if (device->device_id_len == 0) break; amt = device->device_id_len; - if (cgdai->provsiz > cgdai->bufsiz) - amt = cgdai->bufsiz; - bcopy(device->device_id, cgdai->buf, amt); + if (cdai->provsiz > cdai->bufsiz) + amt = cdai->bufsiz; + memcpy(cdai->buf, device->device_id, amt); + break; + case CDAI_TYPE_SERIAL_NUM: + if (cdai->flags & CDAI_FLAG_STORE) + break; + cdai->provsiz = device->serial_num_len; + if (device->serial_num_len == 0) + break; + amt = device->serial_num_len; + if (cdai->provsiz > cdai->bufsiz) + amt = cdai->bufsiz; + memcpy(cdai->buf, device->serial_num, amt); + break; + case CDAI_TYPE_PHYS_PATH: + if (cdai->flags & CDAI_FLAG_STORE) { + if (device->physpath != NULL) + free(device->physpath, M_CAMXPT); + device->physpath_len = cdai->bufsiz; + /* Clear existing buffer if zero length */ + if (cdai->bufsiz == 0) + break; + device->physpath = malloc(cdai->bufsiz, M_CAMXPT, M_NOWAIT); + if (device->physpath == NULL) { + start_ccb->ccb_h.status = CAM_REQ_ABORTED; + return; + } + memcpy(device->physpath, cdai->buf, cdai->bufsiz); + } else { + cdai->provsiz = device->physpath_len; + if (device->physpath_len == 0) + break; + amt = device->physpath_len; + if (cdai->provsiz > cdai->bufsiz) + amt = cdai->bufsiz; + memcpy(cdai->buf, device->physpath, amt); + } break; default: break; } start_ccb->ccb_h.status = CAM_REQ_CMP; + + if (cdai->flags & CDAI_FLAG_STORE) { + int owned; + + owned = mtx_owned(start_ccb->ccb_h.path->bus->sim->mtx); + if (owned == 0) + mtx_lock(start_ccb->ccb_h.path->bus->sim->mtx); + xpt_async(AC_ADVINFO_CHANGED, start_ccb->ccb_h.path, + (void *)(uintptr_t)cdai->buftype); + if (owned == 0) + mtx_unlock(start_ccb->ccb_h.path->bus->sim->mtx); + } } static void @@ -2486,9 +2536,9 @@ scsi_action(union ccb *start_ccb) (*(sim->sim_action))(sim, start_ccb); break; } - case XPT_GDEV_ADVINFO: + case XPT_DEV_ADVINFO: { - scsi_getdev_advinfo(start_ccb); + scsi_dev_advinfo(start_ccb); break; } default: From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 15:20:31 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 02B091065688; Tue, 14 Jun 2011 15:20:31 +0000 (UTC) (envelope-from andreast@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E51528FC1B; Tue, 14 Jun 2011 15:20:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EFKU3L040556; Tue, 14 Jun 2011 15:20:30 GMT (envelope-from andreast@svn.freebsd.org) Received: (from andreast@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EFKURp040554; Tue, 14 Jun 2011 15:20:30 GMT (envelope-from andreast@svn.freebsd.org) Message-Id: <201106141520.p5EFKURp040554@svn.freebsd.org> From: Andreas Tobler Date: Tue, 14 Jun 2011 15:20:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223082 - head/contrib/gdb/gdb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 15:20:31 -0000 Author: andreast Date: Tue Jun 14 15:20:30 2011 New Revision: 223082 URL: http://svn.freebsd.org/changeset/base/223082 Log: - Check on target wordsize instead of compile time define if we build on 64-bit PowerPC or 32-bit PowerPC. - Make gdb work on powerpc64, the code for this is obtained from ppc-linux-tdep.c. - Remove non-elf core read functionality. Implement core read functionality similar like other FreeBSD targets. - Set long double limitations. Modified: head/contrib/gdb/gdb/ppcfbsd-tdep.c Modified: head/contrib/gdb/gdb/ppcfbsd-tdep.c ============================================================================== --- head/contrib/gdb/gdb/ppcfbsd-tdep.c Tue Jun 14 14:53:17 2011 (r223081) +++ head/contrib/gdb/gdb/ppcfbsd-tdep.c Tue Jun 14 15:20:30 2011 (r223082) @@ -27,7 +27,9 @@ #include "target.h" #include "breakpoint.h" #include "value.h" +#include "gdb_string.h" #include "osabi.h" +#include "regset.h" #include "ppc-tdep.h" #include "ppcfbsd-tdep.h" @@ -80,6 +82,17 @@ ppcfbsd_supply_reg (char *regs, int regn regcache_raw_supply (current_regcache, PC_REGNUM, regs + REG_PC_OFFSET); } +static void +ppcfbsd_supply_gregset (const struct regset *regset, + struct regcache *regcache, + int regnum, void *gregs, size_t size) +{ + ppcfbsd_supply_reg (gregs, -1); +} + +static struct regset ppcfbsd_gregset = { + NULL, (void*)ppcfbsd_supply_gregset +}; void ppcfbsd_fill_reg (char *regs, int regno) @@ -144,6 +157,20 @@ ppcfbsd_supply_fpreg (char *fpregs, int fpregs + FPREG_FPSCR_OFFSET); } +static void +ppcfbsd_supply_fpregset (const struct regset *regset, + struct regcache * regcache, + int regnum, void *fpset, size_t size) +{ + ppcfbsd_supply_fpreg (fpset, -1); +} + + +static struct regset ppcfbsd_fpregset = +{ + NULL, (void*)ppcfbsd_supply_fpregset +}; + void ppcfbsd_fill_fpreg (char *fpregs, int regno) { @@ -174,69 +201,285 @@ ppcfbsd_fill_fpreg (char *fpregs, int re fpregs + FPREG_FPSCR_OFFSET); } -static void -fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which, - CORE_ADDR ignore) +/* Return the appropriate register set for the core section identified + by SECT_NAME and SECT_SIZE. */ + +const struct regset * +ppcfbsd_regset_from_core_section (struct gdbarch *gdbarch, + const char *sect_name, size_t sect_size) { - char *regs, *fpregs; + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (strcmp (sect_name, ".reg") == 0 && sect_size >= SIZEOF_STRUCT_REG) + return &ppcfbsd_gregset; + + if (strcmp (sect_name, ".reg2") == 0 && sect_size >= SIZEOF_STRUCT_FPREG) + return &ppcfbsd_fpregset; - /* We get everything from one section. */ - if (which != 0) - return; + return NULL; +} - regs = core_reg_sect; - fpregs = core_reg_sect + SIZEOF_STRUCT_REG; - /* Integer registers. */ - ppcfbsd_supply_reg (regs, -1); +/* Macros for matching instructions. Note that, since all the + operands are masked off before they're or-ed into the instruction, + you can use -1 to make masks. */ + +#define insn_d(opcd, rts, ra, d) \ + ((((opcd) & 0x3f) << 26) \ + | (((rts) & 0x1f) << 21) \ + | (((ra) & 0x1f) << 16) \ + | ((d) & 0xffff)) + +#define insn_ds(opcd, rts, ra, d, xo) \ + ((((opcd) & 0x3f) << 26) \ + | (((rts) & 0x1f) << 21) \ + | (((ra) & 0x1f) << 16) \ + | ((d) & 0xfffc) \ + | ((xo) & 0x3)) + +#define insn_xfx(opcd, rts, spr, xo) \ + ((((opcd) & 0x3f) << 26) \ + | (((rts) & 0x1f) << 21) \ + | (((spr) & 0x1f) << 16) \ + | (((spr) & 0x3e0) << 6) \ + | (((xo) & 0x3ff) << 1)) + +/* Read a PPC instruction from memory. PPC instructions are always + big-endian, no matter what endianness the program is running in, so + we can't use read_memory_integer or one of its friends here. */ +static unsigned int +read_insn (CORE_ADDR pc) +{ + unsigned char buf[4]; - /* Floating point registers. */ - ppcfbsd_supply_fpreg (fpregs, -1); + read_memory (pc, buf, 4); + return (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; } -static void -fetch_elfcore_registers (char *core_reg_sect, unsigned core_reg_size, int which, - CORE_ADDR ignore) + +/* An instruction to match. */ +struct insn_pattern { - switch (which) + unsigned int mask; /* mask the insn with this... */ + unsigned int data; /* ...and see if it matches this. */ + int optional; /* If non-zero, this insn may be absent. */ +}; + +/* Return non-zero if the instructions at PC match the series + described in PATTERN, or zero otherwise. PATTERN is an array of + 'struct insn_pattern' objects, terminated by an entry whose mask is + zero. + + When the match is successful, fill INSN[i] with what PATTERN[i] + matched. If PATTERN[i] is optional, and the instruction wasn't + present, set INSN[i] to 0 (which is not a valid PPC instruction). + INSN should have as many elements as PATTERN. Note that, if + PATTERN contains optional instructions which aren't present in + memory, then INSN will have holes, so INSN[i] isn't necessarily the + i'th instruction in memory. */ +static int +insns_match_pattern (CORE_ADDR pc, + struct insn_pattern *pattern, + unsigned int *insn) +{ + int i; + + for (i = 0; pattern[i].mask; i++) { - case 0: /* Integer registers. */ - if (core_reg_size != SIZEOF_STRUCT_REG) - warning (_("Wrong size register set in core file.")); + insn[i] = read_insn (pc); + if ((insn[i] & pattern[i].mask) == pattern[i].data) + pc += 4; + else if (pattern[i].optional) + insn[i] = 0; else - ppcfbsd_supply_reg (core_reg_sect, -1); - break; + return 0; + } - case 2: /* Floating point registers. */ - if (core_reg_size != SIZEOF_STRUCT_FPREG) - warning (_("Wrong size FP register set in core file.")); - else - ppcfbsd_supply_fpreg (core_reg_sect, -1); - break; + return 1; +} - default: - /* Don't know what kind of register request this is; just ignore it. */ - break; - } + +/* Return the 'd' field of the d-form instruction INSN, properly + sign-extended. */ +static CORE_ADDR +insn_d_field (unsigned int insn) +{ + return ((((CORE_ADDR) insn & 0xffff) ^ 0x8000) - 0x8000); } -static struct core_fns ppcfbsd_core_fns = + +/* Return the 'ds' field of the ds-form instruction INSN, with the two + zero bits concatenated at the right, and properly + sign-extended. */ +static CORE_ADDR +insn_ds_field (unsigned int insn) { - bfd_target_unknown_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_core_registers, /* core_read_registers */ - NULL /* next */ -}; + return ((((CORE_ADDR) insn & 0xfffc) ^ 0x8000) - 0x8000); +} + -static struct core_fns ppcfbsd_elfcore_fns = +/* If DESC is the address of a 64-bit PowerPC FreeBSD function + descriptor, return the descriptor's entry point. */ +static CORE_ADDR +ppc64_desc_entry_point (CORE_ADDR desc) { - bfd_target_elf_flavour, /* core_flavour */ - default_check_format, /* check_format */ - default_core_sniffer, /* core_sniffer */ - fetch_elfcore_registers, /* core_read_registers */ - NULL /* next */ -}; + /* The first word of the descriptor is the entry point. */ + return (CORE_ADDR) read_memory_unsigned_integer (desc, 8); +} + + +/* Pattern for the standard linkage function. These are built by + build_plt_stub in elf64-ppc.c, whose GLINK argument is always + zero. */ +static struct insn_pattern ppc64_standard_linkage[] = + { + /* addis r12, r2, */ + { insn_d (-1, -1, -1, 0), insn_d (15, 12, 2, 0), 0 }, + + /* std r2, 40(r1) */ + { -1, insn_ds (62, 2, 1, 40, 0), 0 }, + + /* ld r11, (r12) */ + { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 12, 0, 0), 0 }, + + /* addis r12, r12, 1 */ + { insn_d (-1, -1, -1, -1), insn_d (15, 12, 2, 1), 1 }, + + /* ld r2, (r12) */ + { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 2, 12, 0, 0), 0 }, + + /* addis r12, r12, 1 */ + { insn_d (-1, -1, -1, -1), insn_d (15, 12, 2, 1), 1 }, + + /* mtctr r11 */ + { insn_xfx (-1, -1, -1, -1), insn_xfx (31, 11, 9, 467), + 0 }, + + /* ld r11, (r12) */ + { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 12, 0, 0), 0 }, + + /* bctr */ + { -1, 0x4e800420, 0 }, + + { 0, 0, 0 } + }; +#define PPC64_STANDARD_LINKAGE_LEN \ + (sizeof (ppc64_standard_linkage) / sizeof (ppc64_standard_linkage[0])) + +/* When the dynamic linker is doing lazy symbol resolution, the first + call to a function in another object will go like this: + + - The user's function calls the linkage function: + + 100007c4: 4b ff fc d5 bl 10000498 + 100007c8: e8 41 00 28 ld r2,40(r1) + + - The linkage function loads the entry point (and other stuff) from + the function descriptor in the PLT, and jumps to it: + + 10000498: 3d 82 00 00 addis r12,r2,0 + 1000049c: f8 41 00 28 std r2,40(r1) + 100004a0: e9 6c 80 98 ld r11,-32616(r12) + 100004a4: e8 4c 80 a0 ld r2,-32608(r12) + 100004a8: 7d 69 03 a6 mtctr r11 + 100004ac: e9 6c 80 a8 ld r11,-32600(r12) + 100004b0: 4e 80 04 20 bctr + + - But since this is the first time that PLT entry has been used, it + sends control to its glink entry. That loads the number of the + PLT entry and jumps to the common glink0 code: + + 10000c98: 38 00 00 00 li r0,0 + 10000c9c: 4b ff ff dc b 10000c78 + + - The common glink0 code then transfers control to the dynamic + linker's fixup code: + + 10000c78: e8 41 00 28 ld r2,40(r1) + 10000c7c: 3d 82 00 00 addis r12,r2,0 + 10000c80: e9 6c 80 80 ld r11,-32640(r12) + 10000c84: e8 4c 80 88 ld r2,-32632(r12) + 10000c88: 7d 69 03 a6 mtctr r11 + 10000c8c: e9 6c 80 90 ld r11,-32624(r12) + 10000c90: 4e 80 04 20 bctr + + Eventually, this code will figure out how to skip all of this, + including the dynamic linker. At the moment, we just get through + the linkage function. */ + +/* If the current thread is about to execute a series of instructions + at PC matching the ppc64_standard_linkage pattern, and INSN is the result + from that pattern match, return the code address to which the + standard linkage function will send them. (This doesn't deal with + dynamic linker lazy symbol resolution stubs.) */ +static CORE_ADDR +ppc64_standard_linkage_target (CORE_ADDR pc, unsigned int *insn) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch); + + /* The address of the function descriptor this linkage function + references. */ + CORE_ADDR desc + = ((CORE_ADDR) read_register (tdep->ppc_gp0_regnum + 2) + + (insn_d_field (insn[0]) << 16) + + insn_ds_field (insn[2])); + + /* The first word of the descriptor is the entry point. Return that. */ + return ppc64_desc_entry_point (desc); +} + + +/* Given that we've begun executing a call trampoline at PC, return + the entry point of the function the trampoline will go to. */ +static CORE_ADDR +ppc64_skip_trampoline_code (CORE_ADDR pc) +{ + unsigned int ppc64_standard_linkage_insn[PPC64_STANDARD_LINKAGE_LEN]; + + if (insns_match_pattern (pc, ppc64_standard_linkage, + ppc64_standard_linkage_insn)) + return ppc64_standard_linkage_target (pc, ppc64_standard_linkage_insn); + else + return 0; +} + + +/* Support for CONVERT_FROM_FUNC_PTR_ADDR (ARCH, ADDR, TARG) on PPC64 + GNU/Linux and FreeBSD. + + Usually a function pointer's representation is simply the address + of the function. On GNU/Linux on the 64-bit PowerPC however, a + function pointer is represented by a pointer to a TOC entry. This + TOC entry contains three words, the first word is the address of + the function, the second word is the TOC pointer (r2), and the + third word is the static chain value. Throughout GDB it is + currently assumed that a function pointer contains the address of + the function, which is not easy to fix. In addition, the + conversion of a function address to a function pointer would + require allocation of a TOC entry in the inferior's memory space, + with all its drawbacks. To be able to call C++ virtual methods in + the inferior (which are called via function pointers), + find_function_addr uses this function to get the function address + from a function pointer. */ + +/* If ADDR points at what is clearly a function descriptor, transform + it into the address of the corresponding function. Be + conservative, otherwize GDB will do the transformation on any + random addresses such as occures when there is no symbol table. */ + +static CORE_ADDR +ppc64_fbsd_convert_from_func_ptr_addr (struct gdbarch *gdbarch, + CORE_ADDR addr, + struct target_ops *targ) +{ + struct section_table *s = target_section_by_addr (targ, addr); + + /* Check if ADDR points to a function descriptor. */ + if (s && strcmp (s->the_bfd_section->name, ".opd") == 0) + return get_target_memory_unsigned (targ, addr, 8); + + return addr; +} static int ppcfbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name) @@ -270,27 +513,42 @@ static void ppcfbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + /* FreeBSD doesn't support the 128-bit `long double' from the psABI. */ + set_gdbarch_long_double_bit (gdbarch, 64); + set_gdbarch_pc_in_sigtramp (gdbarch, ppcfbsd_pc_in_sigtramp); - /* For NetBSD, this is an on again, off again thing. Some systems - do use the broken struct convention, and some don't. */ - set_gdbarch_return_value (gdbarch, ppcfbsd_return_value); -#ifdef __powerpc64__ - set_solib_svr4_fetch_link_map_offsets (gdbarch, - svr4_lp64_fetch_link_map_offsets); -#else - set_solib_svr4_fetch_link_map_offsets (gdbarch, - svr4_ilp32_fetch_link_map_offsets); -#endif + + if (tdep->wordsize == 4) + { + set_gdbarch_return_value (gdbarch, ppcfbsd_return_value); + set_solib_svr4_fetch_link_map_offsets (gdbarch, + svr4_ilp32_fetch_link_map_offsets); + } + + if (tdep->wordsize == 8) + { + set_gdbarch_convert_from_func_ptr_addr + (gdbarch, ppc64_fbsd_convert_from_func_ptr_addr); + + set_gdbarch_skip_trampoline_code (gdbarch, ppc64_skip_trampoline_code); + + set_solib_svr4_fetch_link_map_offsets (gdbarch, + svr4_lp64_fetch_link_map_offsets); + } + + set_gdbarch_regset_from_core_section (gdbarch, + ppcfbsd_regset_from_core_section); } void _initialize_ppcfbsd_tdep (void) { + gdbarch_register_osabi (bfd_arch_powerpc, bfd_mach_ppc, + GDB_OSABI_FREEBSD_ELF, ppcfbsd_init_abi); + gdbarch_register_osabi (bfd_arch_powerpc, bfd_mach_ppc64, + GDB_OSABI_FREEBSD_ELF, ppcfbsd_init_abi); gdbarch_register_osabi (bfd_arch_rs6000, 0, GDB_OSABI_FREEBSD_ELF, ppcfbsd_init_abi); - gdbarch_register_osabi (bfd_arch_powerpc, 0, GDB_OSABI_FREEBSD_ELF, - ppcfbsd_init_abi); - - add_core_fns (&ppcfbsd_core_fns); - add_core_fns (&ppcfbsd_elfcore_fns); } From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 16:05:01 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5C07C106566C; Tue, 14 Jun 2011 16:05:01 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 47A438FC1C; Tue, 14 Jun 2011 16:05:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EG510f041989; Tue, 14 Jun 2011 16:05:01 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EG51vx041987; Tue, 14 Jun 2011 16:05:01 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201106141605.p5EG51vx041987@svn.freebsd.org> From: "Justin T. Gibbs" Date: Tue, 14 Jun 2011 16:05:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223084 - head/sys/cam/scsi X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 16:05:01 -0000 Author: gibbs Date: Tue Jun 14 16:05:00 2011 New Revision: 223084 URL: http://svn.freebsd.org/changeset/base/223084 Log: sys/cam/scsi/scsi_da.c: - Only attempt the closing synchronize cache on a disk if it is still there. - When a device is lost, report the number of outstanding I/Os as they are drained. - When a device is lost, return any unprocessed bios with ENXIO instead of EIO. - Filter asynchronous events, but always allow cam_periph_async() to see them too. Sponsored by: Spectra Logic Corporation Modified: head/sys/cam/scsi/scsi_da.c Modified: head/sys/cam/scsi/scsi_da.c ============================================================================== --- head/sys/cam/scsi/scsi_da.c Tue Jun 14 15:45:41 2011 (r223083) +++ head/sys/cam/scsi/scsi_da.c Tue Jun 14 16:05:00 2011 (r223084) @@ -727,7 +727,8 @@ daclose(struct disk *dp) softc = (struct da_softc *)periph->softc; - if ((softc->quirks & DA_Q_NO_SYNC_CACHE) == 0) { + if ((softc->quirks & DA_Q_NO_SYNC_CACHE) == 0 + && (softc->flags & DA_FLAG_PACK_INVALID) == 0) { union ccb *ccb; ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); @@ -977,7 +978,8 @@ daoninvalidate(struct cam_periph *periph bioq_flush(&softc->bio_queue, NULL, ENXIO); disk_gone(softc->disk); - xpt_print(periph->path, "lost device\n"); + xpt_print(periph->path, "lost device - %d outstanding\n", + softc->outstanding_cmds); } static void @@ -1060,12 +1062,12 @@ daasync(void *callback_arg, u_int32_t co softc->flags |= DA_FLAG_RETRY_UA; LIST_FOREACH(ccbh, &softc->pending_ccbs, periph_links.le) ccbh->ccb_state |= DA_CCB_RETRY_UA; - /* FALLTHROUGH*/ + break; } default: - cam_periph_async(periph, code, path, arg); break; } + cam_periph_async(periph, code, path, arg); } static void @@ -1558,7 +1560,7 @@ dadone(struct cam_periph *periph, union if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { int error; int sf; - + if ((csio->ccb_h.ccb_state & DA_CCB_RETRY_UA) != 0) sf = SF_RETRY_UA; else @@ -1573,8 +1575,17 @@ dadone(struct cam_periph *periph, union return; } if (error != 0) { + int queued_error; + + /* + * return all queued I/O with EIO, so that + * the client can retry these I/Os in the + * proper order should it attempt to recover. + */ + queued_error = EIO; - if (error == ENXIO) { + if (error == ENXIO + && (softc->flags & DA_FLAG_PACK_INVALID)== 0) { /* * Catastrophic error. Mark our pack as * invalid. @@ -1586,14 +1597,10 @@ dadone(struct cam_periph *periph, union xpt_print(periph->path, "Invalidating pack\n"); softc->flags |= DA_FLAG_PACK_INVALID; + queued_error = ENXIO; } - - /* - * return all queued I/O with EIO, so that - * the client can retry these I/Os in the - * proper order should it attempt to recover. - */ - bioq_flush(&softc->bio_queue, NULL, EIO); + bioq_flush(&softc->bio_queue, NULL, + queued_error); bp->bio_error = error; bp->bio_resid = bp->bio_bcount; bp->bio_flags |= BIO_ERROR; @@ -1626,6 +1633,11 @@ dadone(struct cam_periph *periph, union if (softc->outstanding_cmds == 0) softc->flags |= DA_FLAG_WENT_IDLE; + if ((softc->flags & DA_FLAG_PACK_INVALID) != 0) { + xpt_print(periph->path, "oustanding %d\n", + softc->outstanding_cmds); + } + biodone(bp); break; } From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 16:29:44 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 53C5B1065674; Tue, 14 Jun 2011 16:29:44 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 433078FC1C; Tue, 14 Jun 2011 16:29:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EGTiAo042712; Tue, 14 Jun 2011 16:29:44 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EGTiOp042709; Tue, 14 Jun 2011 16:29:44 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201106141629.p5EGTiOp042709@svn.freebsd.org> From: "Justin T. Gibbs" Date: Tue, 14 Jun 2011 16:29:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223085 - in head/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 16:29:44 -0000 Author: gibbs Date: Tue Jun 14 16:29:43 2011 New Revision: 223085 URL: http://svn.freebsd.org/changeset/base/223085 Log: sys/sys/conf.h: sys/kern/kern_conf.c: Add make_dev_physpath_alias(). This interface takes the parent cdev of the alias, an old alias cdev (if any) to replace with the newly created alias, and the physical path string. The alias is visiable as a symlink to the parent, with the same name as the parent, rooted at physpath in devfs. Note: make_dev_physpath_alias() has hard coded knowledge of the Solaris style prefix convention for physical path data, "id1,". In the future, I expect the convention to change to allow "physical path quality" to be reported in the prefix. For example, a physical path based on NewBus topology would be of "lower quality" than a physical path reported by a device enclosure. Sponsored by: Spectra Logic Corporation Modified: head/sys/kern/kern_conf.c head/sys/sys/conf.h Modified: head/sys/kern/kern_conf.c ============================================================================== --- head/sys/kern/kern_conf.c Tue Jun 14 16:05:00 2011 (r223084) +++ head/sys/kern/kern_conf.c Tue Jun 14 16:29:43 2011 (r223085) @@ -963,6 +963,68 @@ make_dev_alias_p(int flags, struct cdev return (res); } +int +make_dev_physpath_alias(int flags, struct cdev **cdev, struct cdev *pdev, + struct cdev *old_alias, const char *physpath) +{ + char *devfspath; + int physpath_len; + int max_parentpath_len; + int parentpath_len; + int devfspathbuf_len; + int mflags; + int ret; + + *cdev = NULL; + devfspath = NULL; + physpath_len = strlen(physpath); + ret = EINVAL; + if (physpath_len == 0) + goto out; + + if (strncmp("id1,", physpath, 4) == 0) { + physpath += 4; + physpath_len -= 4; + if (physpath_len == 0) + goto out; + } + + max_parentpath_len = SPECNAMELEN - physpath_len - /*/*/1; + parentpath_len = strlen(pdev->si_name); + if (max_parentpath_len < parentpath_len) { + printf("make_dev_physpath_alias: WARNING - Unable to alias %s " + "to %s/%s - path too long\n", + pdev->si_name, physpath, pdev->si_name); + ret = ENAMETOOLONG; + goto out; + } + + mflags = (flags & MAKEDEV_NOWAIT) ? M_NOWAIT : M_WAITOK; + devfspathbuf_len = physpath_len + /*/*/1 + parentpath_len + /*NUL*/1; + devfspath = malloc(devfspathbuf_len, M_DEVBUF, mflags); + if (devfspath == NULL) { + ret = ENOMEM; + goto out; + } + + sprintf(devfspath, "%s/%s", physpath, pdev->si_name); + if (old_alias != NULL + && strcmp(old_alias->si_name, devfspath) == 0) { + /* Retain the existing alias. */ + *cdev = old_alias; + old_alias = NULL; + ret = 0; + } else { + ret = make_dev_alias_p(flags, cdev, pdev, devfspath); + } +out: + if (old_alias != NULL) + destroy_dev(old_alias); + if (devfspath != NULL) + free(devfspath, M_DEVBUF); + return (ret); +} + static void destroy_devl(struct cdev *dev) { Modified: head/sys/sys/conf.h ============================================================================== --- head/sys/sys/conf.h Tue Jun 14 16:05:00 2011 (r223084) +++ head/sys/sys/conf.h Tue Jun 14 16:29:43 2011 (r223085) @@ -280,6 +280,9 @@ struct cdev *make_dev_alias(struct cdev __printflike(2, 3); int make_dev_alias_p(int _flags, struct cdev **_cdev, struct cdev *_pdev, const char *_fmt, ...) __printflike(4, 5); +int make_dev_physpath_alias(int _flags, struct cdev **_cdev, + struct cdev *_pdev, struct cdev *_old_alias, + const char *_physpath); void dev_lock(void); void dev_unlock(void); void setconf(void); From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 16:50:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C42ED1065673; Tue, 14 Jun 2011 16:50:16 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 70E968FC1A; Tue, 14 Jun 2011 16:50:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EGoGoF043408; Tue, 14 Jun 2011 16:50:16 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EGoGvv043403; Tue, 14 Jun 2011 16:50:16 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201106141650.p5EGoGvv043403@svn.freebsd.org> From: Edward Tomasz Napierala Date: Tue, 14 Jun 2011 16:50:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223086 - head/bin/ps X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 16:50:17 -0000 Author: trasz Date: Tue Jun 14 16:50:16 2011 New Revision: 223086 URL: http://svn.freebsd.org/changeset/base/223086 Log: Add "gid" and "group" keywords to display the effective group ID and effective group name. Also, add "egid", "egroup" and "euid" aliases. PR: bin/146331 Submitted by: Jeremie Le Hen Modified: head/bin/ps/extern.h head/bin/ps/keyword.c head/bin/ps/print.c head/bin/ps/ps.1 Modified: head/bin/ps/extern.h ============================================================================== --- head/bin/ps/extern.h Tue Jun 14 16:29:43 2011 (r223085) +++ head/bin/ps/extern.h Tue Jun 14 16:50:16 2011 (r223086) @@ -70,6 +70,7 @@ void pmem(KINFO *, VARENT *); void pri(KINFO *, VARENT *); void printheader(void); void priorityr(KINFO *, VARENT *); +void egroupname(KINFO *, VARENT *); void rgroupname(KINFO *, VARENT *); void runame(KINFO *, VARENT *); void rvar(KINFO *, VARENT *); @@ -78,6 +79,7 @@ int s_cputime(KINFO *); int s_label(KINFO *); int s_loginclass(KINFO *); int s_logname(KINFO *); +int s_egroupname(KINFO *); int s_rgroupname(KINFO *); int s_runame(KINFO *); int s_systime(KINFO *); Modified: head/bin/ps/keyword.c ============================================================================== --- head/bin/ps/keyword.c Tue Jun 14 16:29:43 2011 (r223085) +++ head/bin/ps/keyword.c Tue Jun 14 16:50:16 2011 (r223086) @@ -88,12 +88,19 @@ static VAR var[] = { {"cpu", "CPU", NULL, 0, kvar, NULL, 3, KOFF(ki_estcpu), UINT, "d", 0}, {"cputime", "", "time", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, + {"egid", "", "gid", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, + {"egroup", "", "group", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"emul", "EMUL", NULL, LJUST, emulname, NULL, EMULLEN, 0, CHAR, NULL, 0}, {"etime", "ELAPSED", NULL, USER, elapsed, NULL, 12, 0, CHAR, NULL, 0}, {"etimes", "ELAPSED", NULL, USER, elapseds, NULL, 12, 0, CHAR, NULL, 0}, + {"euid", "", "uid", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"f", "F", NULL, 0, kvar, NULL, 8, KOFF(ki_flag), INT, "x", 0}, {"flags", "", "f", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, + {"gid", "GID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_groups), + UINT, UIDFMT, 0}, + {"group", "GROUP", NULL, LJUST, egroupname, s_egroupname, + USERLEN, 0, CHAR, NULL, 0}, {"ignored", "", "sigignore", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"inblk", "INBLK", NULL, USER, rvar, NULL, 4, ROFF(ru_inblock), LONG, "ld", 0}, Modified: head/bin/ps/print.c ============================================================================== --- head/bin/ps/print.c Tue Jun 14 16:29:43 2011 (r223085) +++ head/bin/ps/print.c Tue Jun 14 16:50:16 2011 (r223086) @@ -341,6 +341,22 @@ s_uname(KINFO *k) } void +egroupname(KINFO *k, VARENT *ve) +{ + VAR *v; + + v = ve->var; + (void)printf("%-*s", v->width, + group_from_gid(k->ki_p->ki_groups[0], 0)); +} + +int +s_egroupname(KINFO *k) +{ + return (strlen(group_from_gid(k->ki_p->ki_groups[0], 0))); +} + +void rgroupname(KINFO *k, VARENT *ve) { VAR *v; Modified: head/bin/ps/ps.1 ============================================================================== --- head/bin/ps/ps.1 Tue Jun 14 16:29:43 2011 (r223085) +++ head/bin/ps/ps.1 Tue Jun 14 16:50:16 2011 (r223086) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd April 18, 2011 +.Dd June 14, 2011 .Dt PS 1 .Os .Sh NAME @@ -502,6 +502,12 @@ elapsed running time, in decimal integer .It Cm flags the process flags, in hexadecimal (alias .Cm f ) +.It Cm gid +effective group ID (alias +.Cm egid ) +.It Cm group +group name (from egid) (alias +.Cm egroup ) .It Cm inblk total blocks read (alias .Cm inblock ) @@ -629,7 +635,8 @@ process pointer .It Cm ucomm name to be used for accounting .It Cm uid -effective user ID +effective user ID (alias +.Cm euid ) .It Cm upr scheduling priority on return from system call (alias .Cm usrpri ) From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 17:09:31 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BA15D1065670; Tue, 14 Jun 2011 17:09:30 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A08A48FC15; Tue, 14 Jun 2011 17:09:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EH9Ul2044053; Tue, 14 Jun 2011 17:09:30 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EH9UWm044049; Tue, 14 Jun 2011 17:09:30 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201106141709.p5EH9UWm044049@svn.freebsd.org> From: "David E. O'Brien" Date: Tue, 14 Jun 2011 17:09:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223088 - in head/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 17:09:31 -0000 Author: obrien Date: Tue Jun 14 17:09:30 2011 New Revision: 223088 URL: http://svn.freebsd.org/changeset/base/223088 Log: We should not return ECHILD when debugging a child and the parent does a "wait4(-1, ..., WNOHANG, ...)". Instead wait(2) should behave as if the child does not wish to report status at this time. Reviewed by: jhb Modified: head/sys/kern/kern_exit.c head/sys/kern/sys_process.c head/sys/sys/proc.h Modified: head/sys/kern/kern_exit.c ============================================================================== --- head/sys/kern/kern_exit.c Tue Jun 14 16:50:29 2011 (r223087) +++ head/sys/kern/kern_exit.c Tue Jun 14 17:09:30 2011 (r223088) @@ -701,8 +701,9 @@ proc_reap(struct thread *td, struct proc */ if (p->p_oppid && (t = pfind(p->p_oppid)) != NULL) { PROC_LOCK(p); - p->p_oppid = 0; proc_reparent(p, t); + p->p_pptr->p_dbg_child--; + p->p_oppid = 0; PROC_UNLOCK(p); pksignal(t, SIGCHLD, p->p_ksi); wakeup(t); @@ -794,7 +795,8 @@ kern_wait(struct thread *td, pid_t pid, pid = -q->p_pgid; PROC_UNLOCK(q); } - if (options &~ (WUNTRACED|WNOHANG|WCONTINUED|WNOWAIT|WLINUXCLONE)) + /* If we don't know the option, just return. */ + if (options & ~(WUNTRACED|WNOHANG|WCONTINUED|WNOWAIT|WLINUXCLONE)) return (EINVAL); loop: if (q->p_flag & P_STATCHILD) { @@ -873,7 +875,10 @@ loop: } if (nfound == 0) { sx_xunlock(&proctree_lock); - return (ECHILD); + if (td->td_proc->p_dbg_child) + return (0); + else + return (ECHILD); } if (options & WNOHANG) { sx_xunlock(&proctree_lock); Modified: head/sys/kern/sys_process.c ============================================================================== --- head/sys/kern/sys_process.c Tue Jun 14 16:50:29 2011 (r223087) +++ head/sys/kern/sys_process.c Tue Jun 14 17:09:30 2011 (r223088) @@ -831,8 +831,11 @@ kern_ptrace(struct thread *td, int req, /* security check done above */ p->p_flag |= P_TRACED; p->p_oppid = p->p_pptr->p_pid; - if (p->p_pptr != td->td_proc) + if (p->p_pptr != td->td_proc) { + /* Remember that a child is being debugged(traced). */ + p->p_pptr->p_dbg_child++; proc_reparent(p, td->td_proc); + } data = SIGSTOP; goto sendsig; /* in PT_CONTINUE below */ @@ -919,11 +922,12 @@ kern_ptrace(struct thread *td, int req, PROC_UNLOCK(pp); PROC_LOCK(p); proc_reparent(p, pp); + p->p_pptr->p_dbg_child--; if (pp == initproc) p->p_sigparent = SIGCHLD; } - p->p_flag &= ~(P_TRACED | P_WAITED | P_FOLLOWFORK); p->p_oppid = 0; + p->p_flag &= ~(P_TRACED | P_WAITED | P_FOLLOWFORK); /* should we send SIGCHLD? */ /* childproc_continued(p); */ Modified: head/sys/sys/proc.h ============================================================================== --- head/sys/sys/proc.h Tue Jun 14 16:50:29 2011 (r223087) +++ head/sys/sys/proc.h Tue Jun 14 17:09:30 2011 (r223088) @@ -503,6 +503,8 @@ struct proc { /* The following fields are all zeroed upon creation in fork. */ #define p_startzero p_oppid pid_t p_oppid; /* (c + e) Save ppid in ptrace. XXX */ + int p_dbg_child; /* (c + e) # of debugged children in + ptrace. */ struct vmspace *p_vmspace; /* (b) Address space. */ u_int p_swtick; /* (c) Tick when swapped in or out. */ struct itimerval p_realtimer; /* (c) Alarm timer. */ From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 17:10:33 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 47A9B1065673; Tue, 14 Jun 2011 17:10:33 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3573E8FC1D; Tue, 14 Jun 2011 17:10:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EHAXuA044131; Tue, 14 Jun 2011 17:10:33 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EHAXYS044119; Tue, 14 Jun 2011 17:10:33 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201106141710.p5EHAXYS044119@svn.freebsd.org> From: "Justin T. Gibbs" Date: Tue, 14 Jun 2011 17:10:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223089 - in head: sys/cam/ata sys/cam/scsi sys/geom sys/sys usr.sbin/diskinfo X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 17:10:33 -0000 Author: gibbs Date: Tue Jun 14 17:10:32 2011 New Revision: 223089 URL: http://svn.freebsd.org/changeset/base/223089 Log: Plumb device physical path reporting from CAM devices, through GEOM and DEVFS, and make it accessible via the diskinfo utility. Extend GEOM's generic attribute query mechanism into generic disk consumers. sys/geom/geom_disk.c: sys/geom/geom_disk.h: sys/cam/scsi/scsi_da.c: sys/cam/ata/ata_da.c: - Allow disk providers to implement a new method which can override the default BIO_GETATTR response, d_getattr(struct bio *). This function returns -1 if not handled, otherwise it returns 0 or an errno to be passed to g_io_deliver(). sys/cam/scsi/scsi_da.c: sys/cam/ata/ata_da.c: - Don't copy the serial number to dp->d_ident anymore, as the CAM XPT is now responsible for returning this information via d_getattr()->(a)dagetattr()->xpt_getatr(). sys/geom/geom_dev.c: - Implement a new ioctl, DIOCGPHYSPATH, which returns the GEOM attribute "GEOM::physpath", if possible. If the attribute request returns a zero-length string, ENOENT is returned. usr.sbin/diskinfo/diskinfo.c: - If the DIOCGPHYSPATH ioctl is successful, report physical path data when diskinfo is executed with the '-v' option. Submitted by: will Reviewed by: gibbs Sponsored by: Spectra Logic Corporation Add generic attribute change notification support to GEOM. sys/sys/geom/geom.h: Add a new attrchanged method field to both g_class and g_geom. sys/sys/geom/geom.h: sys/geom/geom_event.c: - Provide the g_attr_changed() function that providers can use to advertise attribute changes. - Perform delivery of attribute change notifications from a thread context via the standard GEOM event mechanism. sys/geom/geom_subr.c: Inherit the attrchanged method from class to geom (class instance). sys/geom/geom_disk.c: Provide disk_attr_changed() to provide g_attr_changed() access to consumers of the disk API. sys/cam/scsi/scsi_pass.c: sys/cam/scsi/scsi_da.c: sys/geom/geom_dev.c: sys/geom/geom_disk.c: Use attribute changed events to track updates to physical path information. sys/cam/scsi/scsi_da.c: Add AC_ADVINFO_CHANGED to the registered asynchronous CAM events for this driver. When this event occurs, and the updated buffer type references our physical path attribute, emit a GEOM attribute changed event via the disk_attr_changed() API. sys/cam/scsi/scsi_pass.c: Add AC_ADVINFO_CHANGED to the registered asynchronous CAM events for this driver. When this event occurs, update the physical patch devfs alias for this pass instance. Submitted by: gibbs Sponsored by: Spectra Logic Corporation Modified: head/sys/cam/ata/ata_da.c head/sys/cam/scsi/scsi_da.c head/sys/cam/scsi/scsi_pass.c head/sys/geom/geom.h head/sys/geom/geom_dev.c head/sys/geom/geom_disk.c head/sys/geom/geom_disk.h head/sys/geom/geom_event.c head/sys/geom/geom_subr.c head/sys/sys/disk.h head/usr.sbin/diskinfo/diskinfo.c Modified: head/sys/cam/ata/ata_da.c ============================================================================== --- head/sys/cam/ata/ata_da.c Tue Jun 14 17:09:30 2011 (r223088) +++ head/sys/cam/ata/ata_da.c Tue Jun 14 17:10:32 2011 (r223089) @@ -812,6 +812,25 @@ adasysctlinit(void *context, int pending cam_periph_release(periph); } +static int +adagetattr(struct bio *bp) +{ + int ret = -1; + struct cam_periph *periph; + + if (bp->bio_disk == NULL || bp->bio_disk->d_drv1) + return ENXIO; + periph = (struct cam_periph *)bp->bio_disk->d_drv1; + if (periph->path == NULL) + return ENXIO; + + ret = xpt_getattr(bp->bio_data, bp->bio_length, bp->bio_attribute, + periph->path); + if (ret == 0) + bp->bio_completed = bp->bio_length; + return ret; +} + static cam_status adaregister(struct cam_periph *periph, void *arg) { @@ -917,6 +936,7 @@ adaregister(struct cam_periph *periph, v softc->disk->d_open = adaopen; softc->disk->d_close = adaclose; softc->disk->d_strategy = adastrategy; + softc->disk->d_getattr = adagetattr; softc->disk->d_dump = adadump; softc->disk->d_name = "ada"; softc->disk->d_drv1 = periph; @@ -938,8 +958,6 @@ adaregister(struct cam_periph *periph, v ((softc->flags & ADA_FLAG_CAN_CFA) && !(softc->flags & ADA_FLAG_CAN_48BIT))) softc->disk->d_flags |= DISKFLAG_CANDELETE; - strlcpy(softc->disk->d_ident, cgd->serial_num, - MIN(sizeof(softc->disk->d_ident), cgd->serial_num_len + 1)); strlcpy(softc->disk->d_descr, cgd->ident_data.model, MIN(sizeof(softc->disk->d_descr), sizeof(cgd->ident_data.model))); softc->disk->d_hba_vendor = cpi.hba_vendor; Modified: head/sys/cam/scsi/scsi_da.c ============================================================================== --- head/sys/cam/scsi/scsi_da.c Tue Jun 14 17:09:30 2011 (r223088) +++ head/sys/cam/scsi/scsi_da.c Tue Jun 14 17:10:32 2011 (r223089) @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #endif /* _KERNEL */ @@ -933,6 +934,25 @@ dadump(void *arg, void *virtual, vm_offs return (0); } +static int +dagetattr(struct bio *bp) +{ + int ret = -1; + struct cam_periph *periph; + + if (bp->bio_disk == NULL || bp->bio_disk->d_drv1 == NULL) + return ENXIO; + periph = (struct cam_periph *)bp->bio_disk->d_drv1; + if (periph->path == NULL) + return ENXIO; + + ret = xpt_getattr(bp->bio_data, bp->bio_length, bp->bio_attribute, + periph->path); + if (ret == 0) + bp->bio_completed = bp->bio_length; + return ret; +} + static void dainit(void) { @@ -1046,6 +1066,20 @@ daasync(void *callback_arg, u_int32_t co && status != CAM_REQ_INPROG) printf("daasync: Unable to attach to new device " "due to status 0x%x\n", status); + return; + } + case AC_ADVINFO_CHANGED: + { + uintptr_t buftype; + + buftype = (uintptr_t)arg; + if (buftype == CDAI_TYPE_PHYS_PATH) { + struct da_softc *softc; + + softc = periph->softc; + disk_attr_changed(softc->disk, "GEOM::physpath", + M_NOWAIT); + } break; } case AC_SENT_BDR: @@ -1233,17 +1267,6 @@ daregister(struct cam_periph *periph, vo TASK_INIT(&softc->sysctl_task, 0, dasysctlinit, periph); /* - * Add async callbacks for bus reset and - * bus device reset calls. I don't bother - * checking if this fails as, in most cases, - * the system will function just fine without - * them and the only alternative would be to - * not attach the device on failure. - */ - xpt_register_async(AC_SENT_BDR | AC_BUS_RESET | AC_LOST_DEVICE, - daasync, periph, periph->path); - - /* * Take an exclusive refcount on the periph while dastart is called * to finish the probe. The reference will be dropped in dadone at * the end of probe. @@ -1303,6 +1326,7 @@ daregister(struct cam_periph *periph, vo softc->disk->d_close = daclose; softc->disk->d_strategy = dastrategy; softc->disk->d_dump = dadump; + softc->disk->d_getattr = dagetattr; softc->disk->d_name = "da"; softc->disk->d_drv1 = periph; if (cpi.maxio == 0) @@ -1315,8 +1339,6 @@ daregister(struct cam_periph *periph, vo softc->disk->d_flags = 0; if ((softc->quirks & DA_Q_NO_SYNC_CACHE) == 0) softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE; - strlcpy(softc->disk->d_ident, cgd->serial_num, - MIN(sizeof(softc->disk->d_ident), cgd->serial_num_len + 1)); cam_strvis(softc->disk->d_descr, cgd->inq_data.vendor, sizeof(cgd->inq_data.vendor), sizeof(softc->disk->d_descr)); strlcat(softc->disk->d_descr, " ", sizeof(softc->disk->d_descr)); @@ -1330,6 +1352,25 @@ daregister(struct cam_periph *periph, vo disk_create(softc->disk, DISK_VERSION); mtx_lock(periph->sim->mtx); + /* + * Add async callbacks for events of interest. + * I don't bother checking if this fails as, + * in most cases, the system will function just + * fine without them and the only alternative + * would be to not attach the device on failure. + */ + xpt_register_async(AC_SENT_BDR | AC_BUS_RESET + | AC_LOST_DEVICE | AC_ADVINFO_CHANGED, + daasync, periph, periph->path); + + /* + * Emit an attribute changed notification just in case + * physical path information arrived before our async + * event handler was registered, but after anyone attaching + * to our disk device polled it. + */ + disk_attr_changed(softc->disk, "GEOM::physpath", M_NOWAIT); + xpt_schedule(periph, CAM_PRIORITY_DEV); return(CAM_REQ_CMP); Modified: head/sys/cam/scsi/scsi_pass.c ============================================================================== --- head/sys/cam/scsi/scsi_pass.c Tue Jun 14 17:09:30 2011 (r223088) +++ head/sys/cam/scsi/scsi_pass.c Tue Jun 14 17:10:32 2011 (r223089) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -70,12 +71,14 @@ typedef enum { #define ccb_bp ppriv_ptr1 struct pass_softc { - pass_state state; - pass_flags flags; - u_int8_t pd_type; - union ccb saved_ccb; - struct devstat *device_stats; - struct cdev *dev; + pass_state state; + pass_flags flags; + u_int8_t pd_type; + union ccb saved_ccb; + struct devstat *device_stats; + struct cdev *dev; + struct cdev *alias_dev; + struct task add_physpath_task; }; @@ -88,6 +91,7 @@ static periph_ctor_t passregister; static periph_oninv_t passoninvalidate; static periph_dtor_t passcleanup; static periph_start_t passstart; +static void pass_add_physpath(void *context, int pending); static void passasync(void *callback_arg, u_int32_t code, struct cam_path *path, void *arg); static void passdone(struct cam_periph *periph, @@ -168,17 +172,45 @@ passcleanup(struct cam_periph *periph) if (bootverbose) xpt_print(periph->path, "removing device entry\n"); devstat_remove_entry(softc->device_stats); + cam_periph_unlock(periph); + taskqueue_drain(taskqueue_thread, &softc->add_physpath_task); + /* * passcleanup() is indirectly a d_close method via passclose, * so using destroy_dev(9) directly can result in deadlock. */ destroy_dev_sched(softc->dev); cam_periph_lock(periph); + free(softc, M_DEVBUF); } static void +pass_add_physpath(void *context, int pending) +{ + struct cam_periph *periph; + struct pass_softc *softc; + char *physpath; + + /* + * If we have one, create a devfs alias for our + * physical path. + */ + periph = context; + softc = periph->softc; + physpath = malloc(MAXPATHLEN, M_DEVBUF, M_WAITOK); + if (xpt_getattr(physpath, MAXPATHLEN, + "GEOM::physpath", periph->path) == 0 + && strlen(physpath) != 0) { + + make_dev_physpath_alias(MAKEDEV_WAITOK, &softc->alias_dev, + softc->dev, softc->alias_dev, physpath); + } + free(physpath, M_DEVBUF); +} + +static void passasync(void *callback_arg, u_int32_t code, struct cam_path *path, void *arg) { @@ -219,6 +251,20 @@ passasync(void *callback_arg, u_int32_t break; } + case AC_ADVINFO_CHANGED: + { + uintptr_t buftype; + + buftype = (uintptr_t)arg; + if (buftype == CDAI_TYPE_PHYS_PATH) { + struct pass_softc *softc; + + softc = (struct pass_softc *)periph->softc; + taskqueue_enqueue(taskqueue_thread, + &softc->add_physpath_task); + } + break; + } default: cam_periph_async(periph, code, path, arg); break; @@ -292,11 +338,22 @@ passregister(struct cam_periph *periph, mtx_lock(periph->sim->mtx); softc->dev->si_drv1 = periph; + TASK_INIT(&softc->add_physpath_task, /*priority*/0, + pass_add_physpath, periph); + + /* + * See if physical path information is already available. + */ + taskqueue_enqueue(taskqueue_thread, &softc->add_physpath_task); + /* - * Add an async callback so that we get - * notified if this device goes away. + * Add an async callback so that we get notified if + * this device goes away or its physical path + * (stored in the advanced info data of the EDT) has + * changed. */ - xpt_register_async(AC_LOST_DEVICE, passasync, periph, periph->path); + xpt_register_async(AC_LOST_DEVICE | AC_ADVINFO_CHANGED, + passasync, periph, periph->path); if (bootverbose) xpt_announce_periph(periph, NULL); Modified: head/sys/geom/geom.h ============================================================================== --- head/sys/geom/geom.h Tue Jun 14 17:09:30 2011 (r223088) +++ head/sys/geom/geom.h Tue Jun 14 17:10:32 2011 (r223089) @@ -76,6 +76,7 @@ typedef void g_orphan_t (struct g_consum typedef void g_start_t (struct bio *); typedef void g_spoiled_t (struct g_consumer *); +typedef void g_attrchanged_t (struct g_consumer *, const char *attr); typedef void g_dumpconf_t (struct sbuf *, const char *indent, struct g_geom *, struct g_consumer *, struct g_provider *); @@ -100,6 +101,7 @@ struct g_class { */ g_start_t *start; g_spoiled_t *spoiled; + g_attrchanged_t *attrchanged; g_dumpconf_t *dumpconf; g_access_t *access; g_orphan_t *orphan; @@ -128,6 +130,7 @@ struct g_geom { int rank; g_start_t *start; g_spoiled_t *spoiled; + g_attrchanged_t *attrchanged; g_dumpconf_t *dumpconf; g_access_t *access; g_orphan_t *orphan; @@ -217,6 +220,7 @@ struct g_classifier_hook { /* geom_dev.c */ struct cdev; void g_dev_print(void); +void g_dev_physpath_changed(void); struct g_provider *g_dev_getprovider(struct cdev *dev); /* geom_dump.c */ @@ -232,6 +236,7 @@ typedef void g_event_t(void *, int flag) int g_post_event(g_event_t *func, void *arg, int flag, ...); int g_waitfor_event(g_event_t *func, void *arg, int flag, ...); void g_cancel_event(void *ref); +int g_attr_changed(struct g_provider *pp, const char *attr, int flag); void g_orphan_provider(struct g_provider *pp, int error); void g_waitidlelock(void); Modified: head/sys/geom/geom_dev.c ============================================================================== --- head/sys/geom/geom_dev.c Tue Jun 14 17:09:30 2011 (r223088) +++ head/sys/geom/geom_dev.c Tue Jun 14 17:10:32 2011 (r223089) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -52,6 +53,12 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include + +/* + * Use the consumer private field to reference a physdev alias (if any). + */ +#define cp_alias_dev private static d_open_t g_dev_open; static d_close_t g_dev_close; @@ -72,12 +79,14 @@ static struct cdevsw g_dev_cdevsw = { static g_taste_t g_dev_taste; static g_orphan_t g_dev_orphan; +static g_attrchanged_t g_dev_attrchanged; static struct g_class g_dev_class = { .name = "DEV", .version = G_VERSION, .taste = g_dev_taste, .orphan = g_dev_orphan, + .attrchanged = g_dev_attrchanged }; void @@ -93,6 +102,40 @@ g_dev_print(void) printf("\n"); } +static void +g_dev_attrchanged(struct g_consumer *cp, const char *attr) +{ + + if (strcmp(attr, "GEOM::physpath") != 0) + return; + + if (g_access(cp, 1, 0, 0) == 0) { + char *physpath; + int error, physpath_len; + + physpath_len = MAXPATHLEN; + physpath = g_malloc(physpath_len, M_WAITOK|M_ZERO); + error = + g_io_getattr("GEOM::physpath", cp, &physpath_len, physpath); + g_access(cp, -1, 0, 0); + if (error == 0 && strlen(physpath) != 0) { + struct cdev *dev; + struct cdev *old_alias_dev; + struct cdev **alias_devp; + + dev = cp->geom->softc; + old_alias_dev = cp->cp_alias_dev; + alias_devp = (struct cdev **)&cp->cp_alias_dev; + make_dev_physpath_alias(MAKEDEV_WAITOK, alias_devp, + dev, old_alias_dev, physpath); + } else if (cp->cp_alias_dev) { + destroy_dev((struct cdev *)cp->cp_alias_dev); + cp->cp_alias_dev = NULL; + } + g_free(physpath); + } +} + struct g_provider * g_dev_getprovider(struct cdev *dev) { @@ -107,7 +150,6 @@ g_dev_getprovider(struct cdev *dev) return (cp->provider); } - static struct g_geom * g_dev_taste(struct g_class *mp, struct g_provider *pp, int insist __unused) { @@ -167,6 +209,9 @@ g_dev_taste(struct g_class *mp, struct g adev->si_drv1 = gp; adev->si_drv2 = cp; } + + g_dev_attrchanged(cp, "GEOM::physpath"); + return (gp); } @@ -365,6 +410,11 @@ g_dev_ioctl(struct cdev *dev, u_long cmd case DIOCGSTRIPEOFFSET: *(off_t *)data = cp->provider->stripeoffset; break; + case DIOCGPHYSPATH: + error = g_io_getattr("GEOM::physpath", cp, &i, data); + if (error == 0 && *(char *)data == '\0') + error = ENOENT; + break; default: if (cp->provider->geom->ioctl != NULL) { error = cp->provider->geom->ioctl(cp->provider, cmd, data, fflag, td); Modified: head/sys/geom/geom_disk.c ============================================================================== --- head/sys/geom/geom_disk.c Tue Jun 14 17:09:30 2011 (r223088) +++ head/sys/geom/geom_disk.c Tue Jun 14 17:10:32 2011 (r223089) @@ -347,6 +347,15 @@ g_disk_start(struct bio *bp) } while (bp2 != NULL); break; case BIO_GETATTR: + /* Give the driver a chance to override */ + if (dp->d_getattr != NULL) { + if (bp->bio_disk == NULL) + bp->bio_disk = dp; + error = dp->d_getattr(bp); + if (error != -1) + break; + error = EJUSTRETURN; + } if (g_handleattr_int(bp, "GEOM::candelete", (dp->d_flags & DISKFLAG_CANDELETE) != 0)) break; @@ -582,6 +591,18 @@ disk_gone(struct disk *dp) g_wither_provider(pp, ENXIO); } +void +disk_attr_changed(struct disk *dp, const char *attr, int flag) +{ + struct g_geom *gp; + struct g_provider *pp; + + gp = dp->d_geom; + if (gp != NULL) + LIST_FOREACH(pp, &gp->provider, provider) + (void)g_attr_changed(pp, attr, flag); +} + static void g_kern_disks(void *p, int flag __unused) { Modified: head/sys/geom/geom_disk.h ============================================================================== --- head/sys/geom/geom_disk.h Tue Jun 14 17:09:30 2011 (r223088) +++ head/sys/geom/geom_disk.h Tue Jun 14 17:10:32 2011 (r223089) @@ -49,6 +49,7 @@ struct disk; typedef int disk_open_t(struct disk *); typedef int disk_close_t(struct disk *); typedef void disk_strategy_t(struct bio *bp); +typedef int disk_getattr_t(struct bio *bp); typedef int disk_ioctl_t(struct disk *, u_long cmd, void *data, int fflag, struct thread *td); /* NB: disk_ioctl_t SHALL be cast'able to d_ioctl_t */ @@ -75,6 +76,7 @@ struct disk { disk_strategy_t *d_strategy; disk_ioctl_t *d_ioctl; dumper_t *d_dump; + disk_getattr_t *d_getattr; /* Info fields from driver to geom_disk.c. Valid when open */ u_int d_sectorsize; @@ -104,6 +106,7 @@ struct disk *disk_alloc(void); void disk_create(struct disk *disk, int version); void disk_destroy(struct disk *disk); void disk_gone(struct disk *disk); +void disk_attr_changed(struct disk *dp, const char *attr, int flag); #define DISK_VERSION_00 0x58561059 #define DISK_VERSION_01 0x5856105a Modified: head/sys/geom/geom_event.c ============================================================================== --- head/sys/geom/geom_event.c Tue Jun 14 17:09:30 2011 (r223088) +++ head/sys/geom/geom_event.c Tue Jun 14 17:10:32 2011 (r223089) @@ -110,6 +110,53 @@ g_waitidlelock(void) } #endif +struct g_attrchanged_args { + struct g_provider *pp; + const char *attr; +}; + +static void +g_attr_changed_event(void *arg, int flag) +{ + struct g_attrchanged_args *args; + struct g_provider *pp; + struct g_consumer *cp; + struct g_consumer *next_cp; + + args = arg; + pp = args->pp; + + g_topology_assert(); + if (flag != EV_CANCEL && g_shutdown == 0) { + + /* + * Tell all consumers of the change. + */ + LIST_FOREACH_SAFE(cp, &pp->consumers, consumers, next_cp) { + if (cp->geom->attrchanged != NULL) + cp->geom->attrchanged(cp, args->attr); + } + } + g_free(args); +} + +int +g_attr_changed(struct g_provider *pp, const char *attr, int flag) +{ + struct g_attrchanged_args *args; + int error; + + args = g_malloc(sizeof *args, flag); + if (args == NULL) + return (ENOMEM); + args->pp = pp; + args->attr = attr; + error = g_post_event(g_attr_changed_event, args, flag, pp, NULL); + if (error != 0) + g_free(args); + return (error); +} + void g_orphan_provider(struct g_provider *pp, int error) { Modified: head/sys/geom/geom_subr.c ============================================================================== --- head/sys/geom/geom_subr.c Tue Jun 14 17:09:30 2011 (r223088) +++ head/sys/geom/geom_subr.c Tue Jun 14 17:10:32 2011 (r223089) @@ -350,6 +350,7 @@ g_new_geomf(struct g_class *mp, const ch /* Fill in defaults from class */ gp->start = mp->start; gp->spoiled = mp->spoiled; + gp->attrchanged = mp->attrchanged; gp->dumpconf = mp->dumpconf; gp->access = mp->access; gp->orphan = mp->orphan; Modified: head/sys/sys/disk.h ============================================================================== --- head/sys/sys/disk.h Tue Jun 14 17:09:30 2011 (r223088) +++ head/sys/sys/disk.h Tue Jun 14 17:10:32 2011 (r223089) @@ -116,4 +116,12 @@ void disk_err(struct bio *bp, const char * This should be a multiple of the sector size. */ +#define DIOCGPHYSPATH _IOR('d', 141, char[MAXPATHLEN]) + /* + * Get a string defining the physical path for a given provider. + * This has similar rules to ident, but is intended to uniquely + * identify the physical location of the device, not the current + * occupant of that location. + */ + #endif /* _SYS_DISK_H_ */ Modified: head/usr.sbin/diskinfo/diskinfo.c ============================================================================== --- head/usr.sbin/diskinfo/diskinfo.c Tue Jun 14 17:09:30 2011 (r223088) +++ head/usr.sbin/diskinfo/diskinfo.c Tue Jun 14 17:10:32 2011 (r223089) @@ -39,6 +39,7 @@ #include #include #include +#include #include static void @@ -57,7 +58,7 @@ int main(int argc, char **argv) { int i, ch, fd, error, exitval = 0; - char buf[BUFSIZ], ident[DISK_IDENT_SIZE]; + char buf[BUFSIZ], ident[DISK_IDENT_SIZE], physpath[MAXPATHLEN]; off_t mediasize, stripesize, stripeoffset; u_int sectorsize, fwsectors, fwheads; @@ -151,6 +152,8 @@ main(int argc, char **argv) } if (ioctl(fd, DIOCGIDENT, ident) == 0) printf("\t%-12s\t# Disk ident.\n", ident); + if (ioctl(fd, DIOCGPHYSPATH, physpath) == 0) + printf("\t%-12s\t# Physical path\n", physpath); } printf("\n"); if (opt_c) From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 17:51:46 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C5A281065670; Tue, 14 Jun 2011 17:51:46 +0000 (UTC) (envelope-from stephen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B5B4E8FC12; Tue, 14 Jun 2011 17:51:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EHpkQo045428; Tue, 14 Jun 2011 17:51:46 GMT (envelope-from stephen@svn.freebsd.org) Received: (from stephen@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EHpkWS045426; Tue, 14 Jun 2011 17:51:46 GMT (envelope-from stephen@svn.freebsd.org) Message-Id: <201106141751.p5EHpkWS045426@svn.freebsd.org> From: Stephen Montgomery-Smith Date: Tue, 14 Jun 2011 17:51:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223090 - head/share/misc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 17:51:46 -0000 Author: stephen (ports committer) Date: Tue Jun 14 17:51:46 2011 New Revision: 223090 URL: http://svn.freebsd.org/changeset/base/223090 Log: Reviewed by: gabor (mentor) Approved by: gabor (mentor) Modified: head/share/misc/committers-ports.dot Modified: head/share/misc/committers-ports.dot ============================================================================== --- head/share/misc/committers-ports.dot Tue Jun 14 17:10:32 2011 (r223089) +++ head/share/misc/committers-ports.dot Tue Jun 14 17:51:46 2011 (r223090) @@ -166,6 +166,7 @@ skreuzer [label="Steven Kreuzer\nskreuze sobomax[label="Maxim Sobolev\nsobomax@FreeBSD.org\n2000/05/17"] stas [label="Stanislav Sedov\nstas@FreeBSD.org\n2006/09/18"] stefan [label="Stefan Walter\nstefan@FreeBSD.org\n2006/05/07"] +stephen [label="Stephen Montgomery-Smith\nstephen@FreeBSD.org\n2011/06/13"] sunpoet [label="Po-Chuan Hsieh\nsunpoet@FreeBSD.org\n2010/09/21"] sylvio [label="Sylvio Cesar Teixeira\nsylvio@FreeBSD.org\n2009/10/29"] swills [label="Steve Wills\nswills@FreeBSD.org\n2010/09/03"] @@ -259,6 +260,7 @@ flz -> romain gabor -> lippe gabor -> pgj +gabor -> stephen garga -> acm garga -> alepulver @@ -311,6 +313,7 @@ lioux -> pat lwhsu -> yzlin +maho -> stephen maho -> tota marcus -> ahze From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 18:19:48 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93167106566B; Tue, 14 Jun 2011 18:19:48 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 79B728FC18; Tue, 14 Jun 2011 18:19:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EIJmD2046265; Tue, 14 Jun 2011 18:19:48 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EIJmlU046260; Tue, 14 Jun 2011 18:19:48 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201106141819.p5EIJmlU046260@svn.freebsd.org> From: John Baldwin Date: Tue, 14 Jun 2011 18:19:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223091 - head/sys/dev/puc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 18:19:48 -0000 Author: jhb Date: Tue Jun 14 18:19:48 2011 New Revision: 223091 URL: http://svn.freebsd.org/changeset/base/223091 Log: Add location and pnpinfo strings for puc device ports. The location is announced during boot and contains the port number. The pnpinfo string lists the port type (PUC_TYPE_* constants). Tested by: Boris Samorodov bsam ipt ru MFC after: 1 week Modified: head/sys/dev/puc/puc.c head/sys/dev/puc/puc_bfe.h head/sys/dev/puc/puc_pccard.c head/sys/dev/puc/puc_pci.c Modified: head/sys/dev/puc/puc.c ============================================================================== --- head/sys/dev/puc/puc.c Tue Jun 14 17:51:46 2011 (r223090) +++ head/sys/dev/puc/puc.c Tue Jun 14 18:19:48 2011 (r223091) @@ -726,3 +726,41 @@ puc_bus_read_ivar(device_t dev, device_t } return (0); } + +int +puc_bus_print_child(device_t dev, device_t child) +{ + struct puc_port *port; + int retval; + + port = device_get_ivars(child); + retval = 0; + + retval += bus_print_child_header(dev, child); + retval += printf(" at port %d", port->p_nr); + retval += bus_print_child_footer(dev, child); + + return (retval); +} + +int +puc_bus_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + struct puc_port *port; + + port = device_get_ivars(child); + snprintf(buf, buflen, "port=%d", port->p_nr); + return (0); +} + +int +puc_bus_child_pnpinfo_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + struct puc_port *port; + + port = device_get_ivars(child); + snprintf(buf, buflen, "type=%d", port->p_type); + return (0); +} Modified: head/sys/dev/puc/puc_bfe.h ============================================================================== --- head/sys/dev/puc/puc_bfe.h Tue Jun 14 17:51:46 2011 (r223090) +++ head/sys/dev/puc/puc_bfe.h Tue Jun 14 18:19:48 2011 (r223091) @@ -82,9 +82,12 @@ int puc_bfe_attach(device_t); int puc_bfe_detach(device_t); int puc_bfe_probe(device_t, const struct puc_cfg *); +int puc_bus_child_location_str(device_t, device_t, char *, size_t); +int puc_bus_child_pnpinfo_str(device_t, device_t, char *, size_t); struct resource *puc_bus_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); int puc_bus_get_resource(device_t, device_t, int, int, u_long *, u_long *); +int puc_bus_print_child(device_t, device_t); int puc_bus_read_ivar(device_t, device_t, int, uintptr_t *); int puc_bus_release_resource(device_t, device_t, int, int, struct resource *); int puc_bus_setup_intr(device_t, device_t, struct resource *, int, Modified: head/sys/dev/puc/puc_pccard.c ============================================================================== --- head/sys/dev/puc/puc_pccard.c Tue Jun 14 17:51:46 2011 (r223090) +++ head/sys/dev/puc/puc_pccard.c Tue Jun 14 18:19:48 2011 (r223091) @@ -82,7 +82,9 @@ static device_method_t puc_pccard_method DEVMETHOD(bus_read_ivar, puc_bus_read_ivar), DEVMETHOD(bus_setup_intr, puc_bus_setup_intr), DEVMETHOD(bus_teardown_intr, puc_bus_teardown_intr), - DEVMETHOD(bus_print_child, bus_generic_print_child), + DEVMETHOD(bus_print_child, puc_bus_print_child), + DEVMETHOD(bus_child_pnpinfo_str, puc_bus_child_pnpinfo_str), + DEVMETHOD(bus_child_location_str, puc_bus_child_location_str), DEVMETHOD(bus_driver_added, bus_generic_driver_added), { 0, 0 } }; Modified: head/sys/dev/puc/puc_pci.c ============================================================================== --- head/sys/dev/puc/puc_pci.c Tue Jun 14 17:51:46 2011 (r223090) +++ head/sys/dev/puc/puc_pci.c Tue Jun 14 18:19:48 2011 (r223091) @@ -132,7 +132,9 @@ static device_method_t puc_pci_methods[] DEVMETHOD(bus_read_ivar, puc_bus_read_ivar), DEVMETHOD(bus_setup_intr, puc_bus_setup_intr), DEVMETHOD(bus_teardown_intr, puc_bus_teardown_intr), - DEVMETHOD(bus_print_child, bus_generic_print_child), + DEVMETHOD(bus_print_child, puc_bus_print_child), + DEVMETHOD(bus_child_pnpinfo_str, puc_bus_child_pnpinfo_str), + DEVMETHOD(bus_child_location_str, puc_bus_child_location_str), DEVMETHOD(bus_driver_added, bus_generic_driver_added), { 0, 0 } }; From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 18:54:31 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F03691065670; Tue, 14 Jun 2011 18:54:31 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E031C8FC13; Tue, 14 Jun 2011 18:54:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EIsVEE047361; Tue, 14 Jun 2011 18:54:31 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EIsVBo047359; Tue, 14 Jun 2011 18:54:31 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201106141854.p5EIsVBo047359@svn.freebsd.org> From: John Baldwin Date: Tue, 14 Jun 2011 18:54:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223092 - stable/8/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 18:54:32 -0000 Author: jhb Date: Tue Jun 14 18:54:31 2011 New Revision: 223092 URL: http://svn.freebsd.org/changeset/base/223092 Log: MFC 222750: Clear the device_t pointer in 'struct resource' when releasing a device as otherwise the sysctl to export rman info can dereference a stale pointer. Modified: stable/8/sys/kern/subr_rman.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/kern/subr_rman.c ============================================================================== --- stable/8/sys/kern/subr_rman.c Tue Jun 14 18:19:48 2011 (r223091) +++ stable/8/sys/kern/subr_rman.c Tue Jun 14 18:54:31 2011 (r223092) @@ -677,6 +677,7 @@ int_rman_release_resource(struct rman *r * without freeing anything. */ r->r_flags &= ~RF_ALLOCATED; + r->r_dev = NULL; return 0; } From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 18:54:42 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CDBE310657D2; Tue, 14 Jun 2011 18:54:42 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BDF368FC17; Tue, 14 Jun 2011 18:54:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EIsgKZ047402; Tue, 14 Jun 2011 18:54:42 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EIsgPK047400; Tue, 14 Jun 2011 18:54:42 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201106141854.p5EIsgPK047400@svn.freebsd.org> From: John Baldwin Date: Tue, 14 Jun 2011 18:54:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223093 - stable/7/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 18:54:42 -0000 Author: jhb Date: Tue Jun 14 18:54:42 2011 New Revision: 223093 URL: http://svn.freebsd.org/changeset/base/223093 Log: MFC 222750: Clear the device_t pointer in 'struct resource' when releasing a device as otherwise the sysctl to export rman info can dereference a stale pointer. Modified: stable/7/sys/kern/subr_rman.c Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/kern/subr_rman.c ============================================================================== --- stable/7/sys/kern/subr_rman.c Tue Jun 14 18:54:31 2011 (r223092) +++ stable/7/sys/kern/subr_rman.c Tue Jun 14 18:54:42 2011 (r223093) @@ -677,6 +677,7 @@ int_rman_release_resource(struct rman *r * without freeing anything. */ r->r_flags &= ~RF_ALLOCATED; + r->r_dev = NULL; return 0; } From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 18:56:45 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E6C401065675; Tue, 14 Jun 2011 18:56:45 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D6CA18FC1A; Tue, 14 Jun 2011 18:56:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EIujYf047535; Tue, 14 Jun 2011 18:56:45 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EIujqf047533; Tue, 14 Jun 2011 18:56:45 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201106141856.p5EIujqf047533@svn.freebsd.org> From: John Baldwin Date: Tue, 14 Jun 2011 18:56:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223094 - stable/8/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 18:56:46 -0000 Author: jhb Date: Tue Jun 14 18:56:45 2011 New Revision: 223094 URL: http://svn.freebsd.org/changeset/base/223094 Log: MFC 222829: Log the socket address passed as the destination to sendto() and sendmsg() via ktrace. Modified: stable/8/sys/kern/uipc_syscalls.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/kern/uipc_syscalls.c ============================================================================== --- stable/8/sys/kern/uipc_syscalls.c Tue Jun 14 18:54:42 2011 (r223093) +++ stable/8/sys/kern/uipc_syscalls.c Tue Jun 14 18:56:45 2011 (r223094) @@ -747,6 +747,10 @@ kern_sendit(td, s, mp, flags, control, s return (error); so = (struct socket *)fp->f_data; +#ifdef KTRACE + if (mp->msg_name != NULL && KTRPOINT(td, KTR_STRUCT)) + ktrsockaddr(mp->msg_name); +#endif #ifdef MAC if (mp->msg_name != NULL) { error = mac_socket_check_connect(td->td_ucred, so, From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 18:58:57 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DE833106564A; Tue, 14 Jun 2011 18:58:57 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CDE2E8FC21; Tue, 14 Jun 2011 18:58:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EIwvDu047641; Tue, 14 Jun 2011 18:58:57 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EIwvvw047635; Tue, 14 Jun 2011 18:58:57 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201106141858.p5EIwvvw047635@svn.freebsd.org> From: John Baldwin Date: Tue, 14 Jun 2011 18:58:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223095 - in stable/8: contrib/top usr.bin/top X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 18:58:58 -0000 Author: jhb Date: Tue Jun 14 18:58:57 2011 New Revision: 223095 URL: http://svn.freebsd.org/changeset/base/223095 Log: MFC 222530: Add a new option to toggle the display of the system idle process (per-CPU idle threads). The process is displayed by default (subject to whether or not system processes are displayed) to preserve existing behavior. The system idle process can be hidden via the '-z' command line argument or the 'z' key while top is running. When it is hidden, top more closely matches the behavior of FreeBSD <= 4.x where idle time was not accounted to any process. Modified: stable/8/contrib/top/commands.c stable/8/contrib/top/machine.h stable/8/contrib/top/top.X stable/8/contrib/top/top.c stable/8/usr.bin/top/machine.c Directory Properties: stable/8/contrib/top/ (props changed) stable/8/contrib/top/install-sh (props changed) stable/8/usr.bin/top/ (props changed) Modified: stable/8/contrib/top/commands.c ============================================================================== --- stable/8/contrib/top/commands.c Tue Jun 14 18:56:45 2011 (r223094) +++ stable/8/contrib/top/commands.c Tue Jun 14 18:58:57 2011 (r223095) @@ -94,6 +94,7 @@ S - toggle the displaying of syste a - toggle the displaying of process titles\n\ t - toggle the display of this process\n\ u - display processes for only one user (+ selects all users)\n\ +z - toggle the displaying of the system idle process\n\ \n\ \n", stdout); } Modified: stable/8/contrib/top/machine.h ============================================================================== --- stable/8/contrib/top/machine.h Tue Jun 14 18:56:45 2011 (r223094) +++ stable/8/contrib/top/machine.h Tue Jun 14 18:58:57 2011 (r223095) @@ -65,6 +65,7 @@ struct process_select int uid; /* only this uid (unless uid == -1) */ int wcpu; /* show weighted cpu */ int jail; /* show jail ID */ + int kidle; /* show per-CPU idle threads */ char *command; /* only this command (unless == NULL) */ }; Modified: stable/8/contrib/top/top.X ============================================================================== --- stable/8/contrib/top/top.X Tue Jun 14 18:56:45 2011 (r223094) +++ stable/8/contrib/top/top.X Tue Jun 14 18:58:57 2011 (r223095) @@ -10,7 +10,7 @@ top \- display and update information ab .SH SYNOPSIS .B top [ -.B \-abCHIijnPqStuv +.B \-abCHIijnPqStuvz ] [ .BI \-d count ] [ @@ -146,6 +146,9 @@ Write version number information to stde No other processing takes place when this option is used. To see current revision information while top is running, use the help command \*(lq?\*(rq. .TP +.B \-z +Do not display the system idle process. +.TP .BI \-d count Show only .I count @@ -310,6 +313,9 @@ ID. Toggle the display of the .I top process. +.TP +.B z +Toggle the display of the system idle process. .SH "THE DISPLAY" The actual display varies depending on the specific variant of Unix that the machine is running. This description may not exactly match Modified: stable/8/contrib/top/top.c ============================================================================== --- stable/8/contrib/top/top.c Tue Jun 14 18:56:45 2011 (r223094) +++ stable/8/contrib/top/top.c Tue Jun 14 18:58:57 2011 (r223095) @@ -196,9 +196,9 @@ char *argv[]; fd_set readfds; #ifdef ORDER - static char command_chars[] = "\f qh?en#sdkriIutHmSCajo"; + static char command_chars[] = "\f qh?en#sdkriIutHmSCajzo"; #else - static char command_chars[] = "\f qh?en#sdkriIutHmSCaj"; + static char command_chars[] = "\f qh?en#sdkriIutHmSCajz"; #endif /* these defines enumerate the "strchr"s of the commands in command_chars */ #define CMD_redraw 0 @@ -224,8 +224,9 @@ char *argv[]; #define CMD_wcputog 19 #define CMD_showargs 20 #define CMD_jidtog 21 +#define CMD_kidletog 22 #ifdef ORDER -#define CMD_order 22 +#define CMD_order 23 #endif /* set the buffer for stdout */ @@ -258,6 +259,7 @@ char *argv[]; ps.thread = No; ps.wcpu = 1; ps.jail = No; + ps.kidle = Yes; ps.command = NULL; /* get preset options from the environment */ @@ -283,7 +285,7 @@ char *argv[]; optind = 1; } - while ((i = getopt(ac, av, "CSIHPabijnquvs:d:U:m:o:t")) != EOF) + while ((i = getopt(ac, av, "CSIHPabijnquvzs:d:U:m:o:t")) != EOF) { switch(i) { @@ -412,10 +414,14 @@ char *argv[]; pcpu_stats = Yes; break; + case 'z': + ps.kidle = !ps.kidle; + break; + default: fprintf(stderr, "Top version %s\n" -"Usage: %s [-abCHIijnPqStuv] [-d count] [-m io | cpu] [-o field] [-s time]\n" +"Usage: %s [-abCHIijnPqStuvz] [-d count] [-m io | cpu] [-o field] [-s time]\n" " [-U username] [number]\n", version_string(), myname); exit(1); @@ -1075,7 +1081,13 @@ restart: reset_display(); putchar('\r'); break; - + case CMD_kidletog: + ps.kidle = !ps.kidle; + new_message(MT_standout | MT_delayed, + " %sisplaying system idle process.", + ps.kidle ? "D" : "Not d"); + putchar('\r'); + break; default: new_message(MT_standout, " BAD CASE IN SWITCH!"); putchar('\r'); Modified: stable/8/usr.bin/top/machine.c ============================================================================== --- stable/8/usr.bin/top/machine.c Tue Jun 14 18:56:45 2011 (r223094) +++ stable/8/usr.bin/top/machine.c Tue Jun 14 18:58:57 2011 (r223095) @@ -624,6 +624,7 @@ get_process_info(struct system_info *si, int show_system; int show_uid; int show_command; + int show_kidle; /* * Save the previous process info. @@ -664,6 +665,7 @@ get_process_info(struct system_info *si, show_system = sel->system; show_uid = sel->uid != -1; show_command = sel->command != NULL; + show_kidle = sel->kidle; /* count up process states and get pointers to interesting procs */ total_procs = 0; @@ -705,6 +707,11 @@ get_process_info(struct system_info *si, /* skip idle or non-running processes */ continue; + if (displaymode == DISP_CPU && !show_kidle && + pp->ki_tdflags & TDF_IDLETD) + /* skip kernel idle process */ + continue; + if (displaymode == DISP_IO && !show_idle && p_io == 0) /* skip processes that aren't doing I/O */ continue; From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 20:04:23 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 970E7106566B; Tue, 14 Jun 2011 20:04:23 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 83F5B8FC08; Tue, 14 Jun 2011 20:04:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EK4NDk049677; Tue, 14 Jun 2011 20:04:23 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EK4N6G049664; Tue, 14 Jun 2011 20:04:23 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106142004.p5EK4N6G049664@svn.freebsd.org> From: Jilles Tjoelker Date: Tue, 14 Jun 2011 20:04:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223096 - in stable/8/tools/regression/bin/sh: builtins execution expansion parameters parser X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 20:04:23 -0000 Author: jilles Date: Tue Jun 14 20:04:23 2011 New Revision: 223096 URL: http://svn.freebsd.org/changeset/base/223096 Log: MFC r221887,r222158,r222379,r222451,r222512,r222661,r222715,r222882: sh: New testcases that already work in stable/8. Added: stable/8/tools/regression/bin/sh/builtins/cd5.0 - copied unchanged from r222379, head/tools/regression/bin/sh/builtins/cd5.0 stable/8/tools/regression/bin/sh/builtins/set1.0 - copied unchanged from r222451, head/tools/regression/bin/sh/builtins/set1.0 stable/8/tools/regression/bin/sh/execution/set-n1.0 - copied unchanged from r222661, head/tools/regression/bin/sh/execution/set-n1.0 stable/8/tools/regression/bin/sh/execution/set-n2.0 - copied unchanged from r222661, head/tools/regression/bin/sh/execution/set-n2.0 stable/8/tools/regression/bin/sh/execution/set-n3.0 - copied unchanged from r222661, head/tools/regression/bin/sh/execution/set-n3.0 stable/8/tools/regression/bin/sh/execution/set-x1.0 - copied unchanged from r222882, head/tools/regression/bin/sh/execution/set-x1.0 stable/8/tools/regression/bin/sh/execution/set-x2.0 - copied unchanged from r222882, head/tools/regression/bin/sh/execution/set-x2.0 stable/8/tools/regression/bin/sh/expansion/heredoc1.0 - copied unchanged from r222715, head/tools/regression/bin/sh/expansion/heredoc1.0 stable/8/tools/regression/bin/sh/parameters/positional1.0 - copied unchanged from r222158, head/tools/regression/bin/sh/parameters/positional1.0 stable/8/tools/regression/bin/sh/parser/func2.0 - copied unchanged from r222512, head/tools/regression/bin/sh/parser/func2.0 stable/8/tools/regression/bin/sh/parser/func3.0 - copied unchanged from r222512, head/tools/regression/bin/sh/parser/func3.0 stable/8/tools/regression/bin/sh/parser/heredoc10.0 - copied unchanged from r221887, head/tools/regression/bin/sh/parser/heredoc10.0 stable/8/tools/regression/bin/sh/parser/heredoc9.0 - copied unchanged from r221887, head/tools/regression/bin/sh/parser/heredoc9.0 Modified: Directory Properties: stable/8/tools/regression/bin/sh/ (props changed) Copied: stable/8/tools/regression/bin/sh/builtins/cd5.0 (from r222379, head/tools/regression/bin/sh/builtins/cd5.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/regression/bin/sh/builtins/cd5.0 Tue Jun 14 20:04:23 2011 (r223096, copy of r222379, head/tools/regression/bin/sh/builtins/cd5.0) @@ -0,0 +1,23 @@ +# $FreeBSD$ + +set -e +T=$(mktemp -d "${TMPDIR:-/tmp}/sh-test.XXXXXX") +trap 'rm -rf "$T"' 0 + +cd -P "$T" +D=$(pwd) + +mkdir a a/1 b b/1 b/2 + +CDPATH=$D/a: +# Basic test. +cd 1 >/dev/null +[ "$(pwd)" = "$D/a/1" ] +# Test that the current directory is not checked before CDPATH. +cd "$D/b" +cd 1 >/dev/null +[ "$(pwd)" = "$D/a/1" ] +# Test not using a CDPATH entry. +cd "$D/b" +cd 2 +[ "$(pwd)" = "$D/b/2" ] Copied: stable/8/tools/regression/bin/sh/builtins/set1.0 (from r222451, head/tools/regression/bin/sh/builtins/set1.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/regression/bin/sh/builtins/set1.0 Tue Jun 14 20:04:23 2011 (r223096, copy of r222451, head/tools/regression/bin/sh/builtins/set1.0) @@ -0,0 +1,32 @@ +# $FreeBSD$ + +set +C +set +f +set -e + +settings=$(set +o) +set -C +set -f +set +e +case $- in +*C*) ;; +*) echo missing C ;; +esac +case $- in +*f*) ;; +*) echo missing C ;; +esac +case $- in +*e*) echo bad e ;; +esac +eval "$settings" +case $- in +*C*) echo bad C ;; +esac +case $- in +*f*) echo bad f ;; +esac +case $- in +*e*) ;; +*) echo missing e ;; +esac Copied: stable/8/tools/regression/bin/sh/execution/set-n1.0 (from r222661, head/tools/regression/bin/sh/execution/set-n1.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/regression/bin/sh/execution/set-n1.0 Tue Jun 14 20:04:23 2011 (r223096, copy of r222661, head/tools/regression/bin/sh/execution/set-n1.0) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +v=$( ($SH -n <<'EOF' +for +EOF +) 2>&1 >/dev/null) +[ $? -ne 0 ] && [ -n "$v" ] Copied: stable/8/tools/regression/bin/sh/execution/set-n2.0 (from r222661, head/tools/regression/bin/sh/execution/set-n2.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/regression/bin/sh/execution/set-n2.0 Tue Jun 14 20:04:23 2011 (r223096, copy of r222661, head/tools/regression/bin/sh/execution/set-n2.0) @@ -0,0 +1,5 @@ +# $FreeBSD$ + +$SH -n <<'EOF' +echo bad +EOF Copied: stable/8/tools/regression/bin/sh/execution/set-n3.0 (from r222661, head/tools/regression/bin/sh/execution/set-n3.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/regression/bin/sh/execution/set-n3.0 Tue Jun 14 20:04:23 2011 (r223096, copy of r222661, head/tools/regression/bin/sh/execution/set-n3.0) @@ -0,0 +1,4 @@ +# $FreeBSD$ + +v=$( ($SH -nc 'for') 2>&1 >/dev/null) +[ $? -ne 0 ] && [ -n "$v" ] Copied: stable/8/tools/regression/bin/sh/execution/set-x1.0 (from r222882, head/tools/regression/bin/sh/execution/set-x1.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/regression/bin/sh/execution/set-x1.0 Tue Jun 14 20:04:23 2011 (r223096, copy of r222882, head/tools/regression/bin/sh/execution/set-x1.0) @@ -0,0 +1,8 @@ +# $FreeBSD$ + +key='must_contain_this' +{ r=`set -x; { : "$key"; } 2>&1 >/dev/null`; } 2>/dev/null +case $r in +*"$key"*) true ;; +*) false ;; +esac Copied: stable/8/tools/regression/bin/sh/execution/set-x2.0 (from r222882, head/tools/regression/bin/sh/execution/set-x2.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/regression/bin/sh/execution/set-x2.0 Tue Jun 14 20:04:23 2011 (r223096, copy of r222882, head/tools/regression/bin/sh/execution/set-x2.0) @@ -0,0 +1,9 @@ +# $FreeBSD$ + +key='must contain this' +PS4="$key+ " +{ r=`set -x; { :; } 2>&1 >/dev/null`; } 2>/dev/null +case $r in +*"$key"*) true ;; +*) false ;; +esac Copied: stable/8/tools/regression/bin/sh/expansion/heredoc1.0 (from r222715, head/tools/regression/bin/sh/expansion/heredoc1.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/regression/bin/sh/expansion/heredoc1.0 Tue Jun 14 20:04:23 2011 (r223096, copy of r222715, head/tools/regression/bin/sh/expansion/heredoc1.0) @@ -0,0 +1,25 @@ +# $FreeBSD$ + +f() { return $1; } + +[ `f 42; { cat; } < Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A7591065676; Tue, 14 Jun 2011 20:30:16 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4B5EE8FC08; Tue, 14 Jun 2011 20:30:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EKUG2f050439; Tue, 14 Jun 2011 20:30:16 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EKUGuI050437; Tue, 14 Jun 2011 20:30:16 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201106142030.p5EKUGuI050437@svn.freebsd.org> From: Alexander Motin Date: Tue, 14 Jun 2011 20:30:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223097 - head/sys/dev/ata/chipsets X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 20:30:16 -0000 Author: mav Date: Tue Jun 14 20:30:15 2011 New Revision: 223097 URL: http://svn.freebsd.org/changeset/base/223097 Log: Skip BAR(5) usage for SATA registers access on ICH8M Apples, because for some reason it causes system lock up. Linux does the same. MFC after: 1 week Modified: head/sys/dev/ata/chipsets/ata-intel.c Modified: head/sys/dev/ata/chipsets/ata-intel.c ============================================================================== --- head/sys/dev/ata/chipsets/ata-intel.c Tue Jun 14 20:04:23 2011 (r223096) +++ head/sys/dev/ata/chipsets/ata-intel.c Tue Jun 14 20:30:15 2011 (r223097) @@ -288,7 +288,9 @@ ata_intel_chipinit(device_t dev) ATA_OUTL(ctlr->r_res2, 0x0C, ATA_INL(ctlr->r_res2, 0x0C) | 0xf); } - } else { + /* Skip BAR(5) on ICH8M Apples, system locks up on access. */ + } else if (ctlr->chip->chipid != ATA_I82801HBM_S1 || + pci_get_subvendor(dev) != 0x106b) { ctlr->r_type2 = SYS_RES_IOPORT; ctlr->r_rid2 = PCIR_BAR(5); ctlr->r_res2 = bus_alloc_resource_any(dev, ctlr->r_type2, From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 20:30:49 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA8721065678; Tue, 14 Jun 2011 20:30:49 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9B1698FC1B; Tue, 14 Jun 2011 20:30:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EKUnQ3050490; Tue, 14 Jun 2011 20:30:49 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EKUn6Y050487; Tue, 14 Jun 2011 20:30:49 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201106142030.p5EKUn6Y050487@svn.freebsd.org> From: Hans Petter Selasky Date: Tue, 14 Jun 2011 20:30:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223098 - in head/sys: amd64/conf i386/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 20:30:49 -0000 Author: hselasky Date: Tue Jun 14 20:30:49 2011 New Revision: 223098 URL: http://svn.freebsd.org/changeset/base/223098 Log: Enable USB 3.0 support by default in i386 and amd64 GENERIC kernels. Discussed with: joel @ and thompsa @ MFC after: 7 days Modified: head/sys/amd64/conf/GENERIC head/sys/i386/conf/GENERIC Modified: head/sys/amd64/conf/GENERIC ============================================================================== --- head/sys/amd64/conf/GENERIC Tue Jun 14 20:30:15 2011 (r223097) +++ head/sys/amd64/conf/GENERIC Tue Jun 14 20:30:49 2011 (r223098) @@ -295,6 +295,7 @@ options USB_DEBUG # enable debug msgs device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) +device xhci # XHCI PCI->USB interface (USB 3.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices (needs netgraph) device uhid # "Human Interface Devices" Modified: head/sys/i386/conf/GENERIC ============================================================================== --- head/sys/i386/conf/GENERIC Tue Jun 14 20:30:15 2011 (r223097) +++ head/sys/i386/conf/GENERIC Tue Jun 14 20:30:49 2011 (r223098) @@ -308,6 +308,7 @@ options USB_DEBUG # enable debug msgs device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) +device xhci # XHCI PCI->USB interface (USB 3.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices (needs netgraph) device uhid # "Human Interface Devices" From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 21:37:25 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9987D106564A; Tue, 14 Jun 2011 21:37:25 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8A4208FC12; Tue, 14 Jun 2011 21:37:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ELbPCZ052562; Tue, 14 Jun 2011 21:37:25 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ELbPpN052560; Tue, 14 Jun 2011 21:37:25 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201106142137.p5ELbPpN052560@svn.freebsd.org> From: "Justin T. Gibbs" Date: Tue, 14 Jun 2011 21:37:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223099 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 21:37:25 -0000 Author: gibbs Date: Tue Jun 14 21:37:25 2011 New Revision: 223099 URL: http://svn.freebsd.org/changeset/base/223099 Log: sys/kern/subr_kdb.c: Modify the "alternate break sequence" detecting state machine so that only a contiguous invocation of the break sequence is accepted. The old implementation did not reset the state machine when detecting an unexpected character. While here, use an enum for the states of the machine instead of magic numbers.bmitted by: Sponsored by: Spectra Logic Corporation Modified: head/sys/kern/subr_kdb.c Modified: head/sys/kern/subr_kdb.c ============================================================================== --- head/sys/kern/subr_kdb.c Tue Jun 14 20:30:49 2011 (r223098) +++ head/sys/kern/subr_kdb.c Tue Jun 14 21:37:25 2011 (r223099) @@ -244,29 +244,44 @@ kdb_reboot(void) #define KEY_CRTLP 16 /* ^P */ #define KEY_CRTLR 18 /* ^R */ +/* States of th KDB "alternate break sequence" detecting state machine. */ +enum { + KDB_ALT_BREAK_SEEN_NONE, + KDB_ALT_BREAK_SEEN_CR, + KDB_ALT_BREAK_SEEN_CR_TILDE, +}; + int kdb_alt_break(int key, int *state) { int brk; + /* All states transition to KDB_ALT_BREAK_SEEN_CR on a CR. */ + if (key == KEY_CR) { + *state = KDB_ALT_BREAK_SEEN_CR; + return (0); + } + brk = 0; switch (*state) { - case 0: - if (key == KEY_CR) - *state = 1; - break; - case 1: + case KDB_ALT_BREAK_SEEN_CR: + *state = KDB_ALT_BREAK_SEEN_NONE; if (key == KEY_TILDE) - *state = 2; + *state = KDB_ALT_BREAK_SEEN_CR_TILDE; break; - case 2: + case KDB_ALT_BREAK_SEEN_CR_TILDE: + *state = KDB_ALT_BREAK_SEEN_NONE; if (key == KEY_CRTLB) brk = KDB_REQ_DEBUGGER; else if (key == KEY_CRTLP) brk = KDB_REQ_PANIC; else if (key == KEY_CRTLR) brk = KDB_REQ_REBOOT; - *state = 0; + break; + case KDB_ALT_BREAK_SEEN_NONE: + default: + *state = KDB_ALT_BREAK_SEEN_NONE; + break; } return (brk); } From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 22:37:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 385E8106564A; Tue, 14 Jun 2011 22:37:10 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 289BD8FC1F; Tue, 14 Jun 2011 22:37:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EMbAF3054388; Tue, 14 Jun 2011 22:37:10 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EMbAKu054386; Tue, 14 Jun 2011 22:37:10 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201106142237.p5EMbAKu054386@svn.freebsd.org> From: Glen Barber Date: Tue, 14 Jun 2011 22:37:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223100 - stable/7/share/man/man4 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 22:37:10 -0000 Author: gjb (doc committer) Date: Tue Jun 14 22:37:09 2011 New Revision: 223100 URL: http://svn.freebsd.org/changeset/base/223100 Log: MFC 187066 by trhodes: Quote the "u" as it's the name of the union, this may prevent some confusion when reading the manual page. PR: 117798 Modified: stable/7/share/man/man4/sysmouse.4 Directory Properties: stable/7/share/man/man4/ (props changed) Modified: stable/7/share/man/man4/sysmouse.4 ============================================================================== --- stable/7/share/man/man4/sysmouse.4 Tue Jun 14 21:37:25 2011 (r223099) +++ stable/7/share/man/man4/sysmouse.4 Tue Jun 14 22:37:09 2011 (r223100) @@ -385,7 +385,7 @@ They are intended to replace functions p .Dv MOUSE_ACTION alone. .Pp -.It Dv u +.It Dv Sq u This union is one of .Pp .Bl -tag -width data -compact From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 22:40:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B08BF106567A; Tue, 14 Jun 2011 22:40:13 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A103D8FC14; Tue, 14 Jun 2011 22:40:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EMeDX2054502; Tue, 14 Jun 2011 22:40:13 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EMeDGm054500; Tue, 14 Jun 2011 22:40:13 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201106142240.p5EMeDGm054500@svn.freebsd.org> From: Glen Barber Date: Tue, 14 Jun 2011 22:40:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223101 - stable/7/usr.bin/split X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 22:40:13 -0000 Author: gjb (doc committer) Date: Tue Jun 14 22:40:13 2011 New Revision: 223101 URL: http://svn.freebsd.org/changeset/base/223101 Log: MFC 187663 by trhodes: When "-b" is specified, one could easily create "smaller" files that are much larger than expected (given the default size). Change "smaller files" to "split files" which is more in line with what "-b" actually does. PR: 119329 Modified: stable/7/usr.bin/split/split.1 Directory Properties: stable/7/usr.bin/split/ (props changed) Modified: stable/7/usr.bin/split/split.1 ============================================================================== --- stable/7/usr.bin/split/split.1 Tue Jun 14 22:37:09 2011 (r223100) +++ stable/7/usr.bin/split/split.1 Tue Jun 14 22:40:13 2011 (r223101) @@ -32,7 +32,7 @@ .\" @(#)split.1 8.3 (Berkeley) 4/16/94 .\" $FreeBSD$ .\" -.Dd August 10, 2006 +.Dd January 23, 2009 .Dt SPLIT 1 .Os .Sh NAME @@ -84,7 +84,7 @@ letters to form the suffix of the file n .Cm K | k | M | m | G | g .Sm on .Oc -Create smaller files +Create split files .Ar byte_count bytes in length. If @@ -109,7 +109,7 @@ is appended to the number, the file is s .Ar byte_count gigabyte pieces. .It Fl l Ar line_count -Create smaller files +Create split files .Ar line_count lines in length. .It Fl p Ar pattern From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 22:52:25 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0DAE11065678; Tue, 14 Jun 2011 22:52:25 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F20548FC2B; Tue, 14 Jun 2011 22:52:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5EMqOBt054942; Tue, 14 Jun 2011 22:52:24 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5EMqO91054940; Tue, 14 Jun 2011 22:52:24 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201106142252.p5EMqO91054940@svn.freebsd.org> From: Glen Barber Date: Tue, 14 Jun 2011 22:52:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223102 - stable/7/bin/chmod X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 22:52:25 -0000 Author: gjb (doc committer) Date: Tue Jun 14 22:52:24 2011 New Revision: 223102 URL: http://svn.freebsd.org/changeset/base/223102 Log: MFC 187627 by trhodes: Note the implication of setting the 'w' permission on directories, while here, expand the 'naughty bits' comment in BUGS. PR: 84268 Modified: stable/7/bin/chmod/chmod.1 Directory Properties: stable/7/bin/chmod/ (props changed) Modified: stable/7/bin/chmod/chmod.1 ============================================================================== --- stable/7/bin/chmod/chmod.1 Tue Jun 14 22:40:13 2011 (r223101) +++ stable/7/bin/chmod/chmod.1 Tue Jun 14 22:52:24 2011 (r223102) @@ -32,7 +32,7 @@ .\" @(#)chmod.1 8.4 (Berkeley) 3/31/94 .\" $FreeBSD$ .\" -.Dd December 22, 2006 +.Dd January 23, 2009 .Dt CHMOD 1 .Os .Sh NAME @@ -281,6 +281,10 @@ Operations upon the other permissions on ``o'' by itself), in combination with the .Ar perm symbols ``s'' or ``t'', are ignored. +.Pp +The ``w'' permission on directories will permit file creation, relocation, +and copy into that directory. +Files created within the directory itself will inherit its group ID. .Sh EXAMPLES .Bl -tag -width "u=rwx,go=u-w" -compact .It Li 644 @@ -343,4 +347,5 @@ command appeared in .Sh BUGS There is no .Ar perm -option for the naughty bits. +option for the naughty bits which are ``S'' and +``T'' respectively. From owner-svn-src-all@FreeBSD.ORG Tue Jun 14 23:30:48 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 877F61065672; Tue, 14 Jun 2011 23:30:48 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 777918FC0C; Tue, 14 Jun 2011 23:30:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ENUmO7056177; Tue, 14 Jun 2011 23:30:48 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ENUm3l056175; Tue, 14 Jun 2011 23:30:48 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201106142330.p5ENUm3l056175@svn.freebsd.org> From: Glen Barber Date: Tue, 14 Jun 2011 23:30:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223103 - stable/7/share/man/man5 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jun 2011 23:30:48 -0000 Author: gjb (doc committer) Date: Tue Jun 14 23:30:48 2011 New Revision: 223103 URL: http://svn.freebsd.org/changeset/base/223103 Log: MFC 186445 by trhodes: Netgroup database can be centralized via NIS, list it. Add a missing comma and bump doc date. PR: 127602 Modified: stable/7/share/man/man5/nsswitch.conf.5 Directory Properties: stable/7/share/man/man5/ (props changed) Modified: stable/7/share/man/man5/nsswitch.conf.5 ============================================================================== --- stable/7/share/man/man5/nsswitch.conf.5 Tue Jun 14 22:52:24 2011 (r223102) +++ stable/7/share/man/man5/nsswitch.conf.5 Tue Jun 14 23:30:48 2011 (r223103) @@ -33,7 +33,7 @@ .\" .\" $FreeBSD$ .\" -.Dd January 22, 2007 +.Dd December 23, 2008 .Dt NSSWITCH.CONF 5 .Os .Sh NAME @@ -141,9 +141,13 @@ The following databases are used by the .Xr getrpcbynumber 3 , .Xr getrpcent 3 .It proto -.Xr getprotobyname 3 +.Xr getprotobyname 3 , .Xr getprotobynumber 3 , .Xr getprotoent 3 +.It netgroup +.Xr getnetgrent 3 , +.Xr setnetgrent 3 , +.Xr innetgr 3 .El .Ss Status codes The following status codes are available: From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 01:08:48 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43455106566B; Wed, 15 Jun 2011 01:08:48 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 331358FC0A; Wed, 15 Jun 2011 01:08:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5F18mg5059122; Wed, 15 Jun 2011 01:08:48 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5F18mFE059120; Wed, 15 Jun 2011 01:08:48 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201106150108.p5F18mFE059120@svn.freebsd.org> From: Glen Barber Date: Wed, 15 Jun 2011 01:08:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223104 - stable/7/usr.bin/gprof X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 01:08:48 -0000 Author: gjb (doc committer) Date: Wed Jun 15 01:08:47 2011 New Revision: 223104 URL: http://svn.freebsd.org/changeset/base/223104 Log: MFC 186487 by trhodes: Remove reference to unimplemented "-c" option. PR: 119338 Modified: stable/7/usr.bin/gprof/gprof.1 Directory Properties: stable/7/usr.bin/gprof/ (props changed) Modified: stable/7/usr.bin/gprof/gprof.1 ============================================================================== --- stable/7/usr.bin/gprof/gprof.1 Tue Jun 14 23:30:48 2011 (r223103) +++ stable/7/usr.bin/gprof/gprof.1 Wed Jun 15 01:08:47 2011 (r223104) @@ -32,7 +32,7 @@ .\" @(#)gprof.1 8.1 (Berkeley) 6/6/93 .\" $FreeBSD$ .\" -.Dd October 7, 2005 +.Dd December 25, 2008 .Dt GPROF 1 .Os .Sh NAME @@ -263,9 +263,6 @@ inside other functions. .It Fl z Display routines that have zero usage (as shown by call counts and accumulated time). -This is useful with the -.Fl c -option for discovering which routines were never called. .El .Sh FILES .Bl -tag -width a.out.gmon -compact From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 06:13:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B25D1106566B; Wed, 15 Jun 2011 06:13:08 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A322A8FC15; Wed, 15 Jun 2011 06:13:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5F6D8F9068240; Wed, 15 Jun 2011 06:13:08 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5F6D8mb068238; Wed, 15 Jun 2011 06:13:08 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201106150613.p5F6D8mb068238@svn.freebsd.org> From: Kirk McKusick Date: Wed, 15 Jun 2011 06:13:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223105 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 06:13:08 -0000 Author: mckusick Date: Wed Jun 15 06:13:08 2011 New Revision: 223105 URL: http://svn.freebsd.org/changeset/base/223105 Log: Missing cleanup case after completion of a snapshot vnode write claiming a released block. Submitted by: Jeff Roberson Tested by: Peter Holm Modified: head/sys/ufs/ffs/ffs_softdep.c Modified: head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- head/sys/ufs/ffs/ffs_softdep.c Wed Jun 15 01:08:47 2011 (r223104) +++ head/sys/ufs/ffs/ffs_softdep.c Wed Jun 15 06:13:08 2011 (r223105) @@ -10417,6 +10417,10 @@ softdep_disk_write_complete(bp) WORKLIST_INSERT(&reattach, wk); continue; + case D_FREEDEP: + free_freedep(WK_FREEDEP(wk)); + continue; + default: panic("handle_disk_write_complete: Unknown type %s", TYPENAME(wk->wk_type)); From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 09:42:38 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 82846106564A; Wed, 15 Jun 2011 09:42:38 +0000 (UTC) (envelope-from pawel@dawidek.net) Received: from mail.garage.freebsd.pl (60.wheelsystems.com [83.12.187.60]) by mx1.freebsd.org (Postfix) with ESMTP id C8F0C8FC0A; Wed, 15 Jun 2011 09:42:36 +0000 (UTC) Received: by mail.garage.freebsd.pl (Postfix, from userid 65534) id 232F745C8C; Wed, 15 Jun 2011 11:42:21 +0200 (CEST) Received: from localhost (58.wheelsystems.com [83.12.187.58]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.garage.freebsd.pl (Postfix) with ESMTP id F147B45684; Wed, 15 Jun 2011 11:42:05 +0200 (CEST) Date: Wed, 15 Jun 2011 11:42:02 +0200 From: Pawel Jakub Dawidek To: "Justin T. Gibbs" Message-ID: <20110615094202.GB1975@garage.freebsd.pl> References: <201106141710.p5EHAXYS044119@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="+pHx0qQiF2pBVqBT" Content-Disposition: inline In-Reply-To: <201106141710.p5EHAXYS044119@svn.freebsd.org> X-OS: FreeBSD 9.0-CURRENT amd64 User-Agent: Mutt/1.5.21 (2010-09-15) X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on mail.garage.freebsd.pl X-Spam-Level: X-Spam-Status: No, score=-3.9 required=4.5 tests=ALL_TRUSTED,BAYES_00, RCVD_IN_SORBS_DUL autolearn=ham version=3.0.4 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223089 - in head: sys/cam/ata sys/cam/scsi sys/geom sys/sys usr.sbin/diskinfo X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 09:42:38 -0000 --+pHx0qQiF2pBVqBT Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Jun 14, 2011 at 05:10:33PM +0000, Justin T. Gibbs wrote: > Author: gibbs > Date: Tue Jun 14 17:10:32 2011 > New Revision: 223089 > URL: http://svn.freebsd.org/changeset/base/223089 >=20 > Log: [...] > sys/sys/geom/geom.h: > sys/geom/geom_event.c: > - Provide the g_attr_changed() function that providers > can use to advertise attribute changes. > - Perform delivery of attribute change notifications > from a thread context via the standard GEOM event > mechanism. Would be nice to discuss it before the commit (or did I miss the dicussion?). I was working on something that could be easly merged with your changes. I had a patch to implement provider's properties change notification to consumers and devd: http://people.freebsd.org/~pjd/patches/geom_property_change.patch Currently it implements only mediasize changes, so the upper layers can act accordingly. The patch also implements ZFS bits to detect vdev size changes and eventually autoexpand the pool. Could you look at the patch and see how we could add property changes to your API? --=20 Pawel Jakub Dawidek http://www.wheelsystems.com FreeBSD committer http://www.FreeBSD.org Am I Evil? Yes, I Am! http://yomoli.com --+pHx0qQiF2pBVqBT Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iEYEARECAAYFAk34fmoACgkQForvXbEpPzQPxgCfQmhD3bNYwd09tgrcFu6JqHYo SN0AoIc8fICCR1uArljvsqVWP9/S7uFS =PFrh -----END PGP SIGNATURE----- --+pHx0qQiF2pBVqBT-- From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 14:07:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C2B8106572A; Wed, 15 Jun 2011 14:07:16 +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 7CB098FC17; Wed, 15 Jun 2011 14:07:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FE7GHv084941; Wed, 15 Jun 2011 14:07:16 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FE7G8r084939; Wed, 15 Jun 2011 14:07:16 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201106151407.p5FE7G8r084939@svn.freebsd.org> From: Nathan Whitehorn Date: Wed, 15 Jun 2011 14:07:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223109 - head/sys/boot/forth X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 14:07:16 -0000 Author: nwhitehorn Date: Wed Jun 15 14:07:16 2011 New Revision: 223109 URL: http://svn.freebsd.org/changeset/base/223109 Log: Revert changes to this file in r222417. This unconditionally enabled the boot menu on all platforms, which breaks loader completely on at least powerpc for reasons that are not understood yet. Reviewed by: Devin Teske Modified: head/sys/boot/forth/loader.rc Modified: head/sys/boot/forth/loader.rc ============================================================================== --- head/sys/boot/forth/loader.rc Wed Jun 15 13:10:37 2011 (r223108) +++ head/sys/boot/forth/loader.rc Wed Jun 15 14:07:16 2011 (r223109) @@ -10,8 +10,5 @@ start \ Tests for password -- executes autoboot first if a password was defined check-password -\ Load in the boot menu -include /boot/beastie.4th +\ Unless set otherwise, autoboot is automatic at this point -\ Start the boot menu -beastie-start From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 18:05:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 97176106564A; Wed, 15 Jun 2011 18:05:08 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7CB1A8FC14; Wed, 15 Jun 2011 18:05:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FI58ql092270; Wed, 15 Jun 2011 18:05:08 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FI58Hs092266; Wed, 15 Jun 2011 18:05:08 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201106151805.p5FI58Hs092266@svn.freebsd.org> From: Kirk McKusick Date: Wed, 15 Jun 2011 18:05:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223114 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 18:05:08 -0000 Author: mckusick Date: Wed Jun 15 18:05:08 2011 New Revision: 223114 URL: http://svn.freebsd.org/changeset/base/223114 Log: With the restructuring of the block reclaimation code, the notification messages for a filesystem being out of space need to be moved so that they do not print out until after a failed cleanup attempt. Suggested by: Jeff Roberson Modified: head/sys/ufs/ffs/ffs_alloc.c head/sys/ufs/ffs/ffs_balloc.c head/sys/ufs/ffs/ffs_extern.h Modified: head/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- head/sys/ufs/ffs/ffs_alloc.c Wed Jun 15 15:24:21 2011 (r223113) +++ head/sys/ufs/ffs/ffs_alloc.c Wed Jun 15 18:05:08 2011 (r223114) @@ -116,7 +116,6 @@ static ufs2_daddr_t ffs_clusteralloc(str static ino_t ffs_dirpref(struct inode *); static ufs2_daddr_t ffs_fragextend(struct inode *, u_int, ufs2_daddr_t, int, int); -static void ffs_fserr(struct fs *, ino_t, char *); static ufs2_daddr_t ffs_hashalloc (struct inode *, u_int, ufs2_daddr_t, int, int, allocfcn_t *); static ufs2_daddr_t ffs_nodealloccg(struct inode *, u_int, ufs2_daddr_t, int, @@ -223,7 +222,7 @@ nospace: goto retry; } UFS_UNLOCK(ump); - if (ppsratecheck(&lastfail, &curfail, 1)) { + if (reclaimed > 0 && ppsratecheck(&lastfail, &curfail, 1)) { ffs_fserr(fs, ip->i_number, "filesystem full"); uprintf("\n%s: write failed, filesystem is full\n", fs->fs_fsmnt); @@ -432,7 +431,7 @@ nospace: UFS_UNLOCK(ump); if (bp) brelse(bp); - if (ppsratecheck(&lastfail, &curfail, 1)) { + if (reclaimed > 0 && ppsratecheck(&lastfail, &curfail, 1)) { ffs_fserr(fs, ip->i_number, "filesystem full"); uprintf("\n%s: write failed, filesystem is full\n", fs->fs_fsmnt); @@ -2335,7 +2334,7 @@ ffs_mapsearch(fs, cgp, bpref, allocsiz) * The form of the error message is: * fs: error message */ -static void +void ffs_fserr(fs, inum, cp) struct fs *fs; ino_t inum; Modified: head/sys/ufs/ffs/ffs_balloc.c ============================================================================== --- head/sys/ufs/ffs/ffs_balloc.c Wed Jun 15 15:24:21 2011 (r223113) +++ head/sys/ufs/ffs/ffs_balloc.c Wed Jun 15 18:05:08 2011 (r223114) @@ -105,6 +105,8 @@ ffs_balloc_ufs1(struct vnode *vp, off_t ufs2_daddr_t *lbns_remfree, lbns[NIADDR + 1]; int unwindidx = -1; int saved_inbdflush; + static struct timeval lastfail; + static int curfail; int reclaimed; ip = VTOI(vp); @@ -308,6 +310,11 @@ retry: UFS_UNLOCK(ump); goto retry; } + if (ppsratecheck(&lastfail, &curfail, 1)) { + ffs_fserr(fs, ip->i_number, "filesystem full"); + uprintf("\n%s: write failed, filesystem " + "is full\n", fs->fs_fsmnt); + } goto fail; } nb = newb; @@ -370,6 +377,11 @@ retry: UFS_UNLOCK(ump); goto retry; } + if (ppsratecheck(&lastfail, &curfail, 1)) { + ffs_fserr(fs, ip->i_number, "filesystem full"); + uprintf("\n%s: write failed, filesystem " + "is full\n", fs->fs_fsmnt); + } goto fail; } nb = newb; @@ -523,6 +535,8 @@ ffs_balloc_ufs2(struct vnode *vp, off_t int deallocated, osize, nsize, num, i, error; int unwindidx = -1; int saved_inbdflush; + static struct timeval lastfail; + static int curfail; int reclaimed; ip = VTOI(vp); @@ -836,6 +850,11 @@ retry: UFS_UNLOCK(ump); goto retry; } + if (ppsratecheck(&lastfail, &curfail, 1)) { + ffs_fserr(fs, ip->i_number, "filesystem full"); + uprintf("\n%s: write failed, filesystem " + "is full\n", fs->fs_fsmnt); + } goto fail; } nb = newb; @@ -898,6 +917,11 @@ retry: UFS_UNLOCK(ump); goto retry; } + if (ppsratecheck(&lastfail, &curfail, 1)) { + ffs_fserr(fs, ip->i_number, "filesystem full"); + uprintf("\n%s: write failed, filesystem " + "is full\n", fs->fs_fsmnt); + } goto fail; } nb = newb; Modified: head/sys/ufs/ffs/ffs_extern.h ============================================================================== --- head/sys/ufs/ffs/ffs_extern.h Wed Jun 15 15:24:21 2011 (r223113) +++ head/sys/ufs/ffs/ffs_extern.h Wed Jun 15 18:05:08 2011 (r223114) @@ -69,6 +69,7 @@ int ffs_flushfiles(struct mount *, int, void ffs_fragacct(struct fs *, int, int32_t [], int); int ffs_freefile(struct ufsmount *, struct fs *, struct vnode *, ino_t, int, struct workhead *); +void ffs_fserr(struct fs *, ino_t, char *); int ffs_isblock(struct fs *, u_char *, ufs1_daddr_t); int ffs_isfreeblock(struct fs *, u_char *, ufs1_daddr_t); void ffs_load_inode(struct buf *, struct inode *, struct fs *, ino_t); From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 19:09:58 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 601AA106566C; Wed, 15 Jun 2011 19:09:58 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4FFC08FC08; Wed, 15 Jun 2011 19:09:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FJ9w5D094516; Wed, 15 Jun 2011 19:09:58 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FJ9wR8094514; Wed, 15 Jun 2011 19:09:58 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201106151909.p5FJ9wR8094514@svn.freebsd.org> From: Xin LI Date: Wed, 15 Jun 2011 19:09:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223115 - head/usr.sbin/pw X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 19:09:58 -0000 Author: delphij Date: Wed Jun 15 19:09:58 2011 New Revision: 223115 URL: http://svn.freebsd.org/changeset/base/223115 Log: Don't attempt to create the base directory when -d is specified. MFC after: 1 month Modified: head/usr.sbin/pw/pw_user.c Modified: head/usr.sbin/pw/pw_user.c ============================================================================== --- head/usr.sbin/pw/pw_user.c Wed Jun 15 18:05:08 2011 (r223114) +++ head/usr.sbin/pw/pw_user.c Wed Jun 15 19:09:58 2011 (r223115) @@ -163,7 +163,7 @@ pw_user(struct userconf * cnf, int mode, * If we'll need to use it or we're updating it, * then create the base home directory if necessary */ - if (arg != NULL || getarg(args, 'm') != NULL) { + if ((arg != NULL || getarg(args, 'm') != NULL) && (getarg(args, 'd') == NULL)) { int l = strlen(cnf->home); if (l > 1 && cnf->home[l-1] == '/') /* Shave off any trailing path delimiter */ From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 19:15:51 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 47E1B106567C; Wed, 15 Jun 2011 19:15:51 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 37ADB8FC0C; Wed, 15 Jun 2011 19:15:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FJFpIQ094751; Wed, 15 Jun 2011 19:15:51 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FJFpUe094749; Wed, 15 Jun 2011 19:15:51 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201106151915.p5FJFpUe094749@svn.freebsd.org> From: Olivier Houchard Date: Wed, 15 Jun 2011 19:15:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223116 - head/sys/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 19:15:51 -0000 Author: cognet Date: Wed Jun 15 19:15:50 2011 New Revision: 223116 URL: http://svn.freebsd.org/changeset/base/223116 Log: Add -ffreestanding to the command line, so taht inflate.c compiles and link properly with llvm. PR: arm/156771 Submitted by: Damjan Marion Modified: head/sys/conf/Makefile.arm Modified: head/sys/conf/Makefile.arm ============================================================================== --- head/sys/conf/Makefile.arm Wed Jun 15 19:09:58 2011 (r223115) +++ head/sys/conf/Makefile.arm Wed Jun 15 19:15:50 2011 (r223116) @@ -108,7 +108,8 @@ ${KERNEL_KO}.tramp: ${KERNEL_KO} $S/$M/$ gzip -9 ${KERNEL_KO}.tmp eval $$(stat -s ${KERNEL_KO}.tmp.gz) && \ echo "#define KERNCOMPSIZE $$st_size" >>opt_kernname.h - ${CC} -O2 -DKZIP -I. -I$S -c $S/kern/inflate.c -o inflate-tramp.o + ${CC} -O2 -ffreestanding -DKZIP -I. -I$S -c $S/kern/inflate.c -o \ + inflate-tramp.o ${CC} -O -nostdlib -I. -I$S -Xlinker -T -Xlinker ldscript.$M.tramp \ -DKZIP tmphack.S $S/$M/$M/elf_trampoline.c inflate-tramp.o \ $S/$M/$M/inckern.S ${FILES_CPU_FUNC} -o ${KERNEL_KO}.gz.tramp From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 19:33:03 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4D28F106564A; Wed, 15 Jun 2011 19:33:03 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3C79D8FC17; Wed, 15 Jun 2011 19:33:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FJX3Yo095309; Wed, 15 Jun 2011 19:33:03 GMT (envelope-from jpaetzel@svn.freebsd.org) Received: (from jpaetzel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FJX3bw095307; Wed, 15 Jun 2011 19:33:03 GMT (envelope-from jpaetzel@svn.freebsd.org) Message-Id: <201106151933.p5FJX3bw095307@svn.freebsd.org> From: Josh Paetzel Date: Wed, 15 Jun 2011 19:33:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223117 - head/etc/periodic/daily X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 19:33:03 -0000 Author: jpaetzel Date: Wed Jun 15 19:33:02 2011 New Revision: 223117 URL: http://svn.freebsd.org/changeset/base/223117 Log: Eliminate extraneous pipelines and tr calls. Approved by: kib (mentor) MFC after: 3 days Modified: head/etc/periodic/daily/800.scrub-zfs Modified: head/etc/periodic/daily/800.scrub-zfs ============================================================================== --- head/etc/periodic/daily/800.scrub-zfs Wed Jun 15 19:15:50 2011 (r223116) +++ head/etc/periodic/daily/800.scrub-zfs Wed Jun 15 19:33:02 2011 (r223117) @@ -46,7 +46,7 @@ case "$daily_scrub_zfs_enable" in esac # determine how many days shall be between scrubs - eval _pool_threshold=\${daily_scrub_zfs_$(echo "${pool}"|tr -s "-" "_"|tr -s "." "_"|tr -s ":" "_")_threshold} + eval _pool_threshold=\${daily_scrub_zfs_$(echo "${pool}"|tr ".:-" "_")_threshold} if [ -z "${_pool_threshold}" ];then _pool_threshold=${daily_scrub_zfs_default_threshold} fi From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 19:53:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A9ABB106574C; Wed, 15 Jun 2011 19:53:08 +0000 (UTC) (envelope-from joel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 993EF8FC21; Wed, 15 Jun 2011 19:53:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FJr8Ht095963; Wed, 15 Jun 2011 19:53:08 GMT (envelope-from joel@svn.freebsd.org) Received: (from joel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FJr8Ne095961; Wed, 15 Jun 2011 19:53:08 GMT (envelope-from joel@svn.freebsd.org) Message-Id: <201106151953.p5FJr8Ne095961@svn.freebsd.org> From: Joel Dahl Date: Wed, 15 Jun 2011 19:53:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223118 - head/sys/dev/sound/pci/hda X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 19:53:08 -0000 Author: joel (doc committer) Date: Wed Jun 15 19:53:08 2011 New Revision: 223118 URL: http://svn.freebsd.org/changeset/base/223118 Log: Hide driver revision behind bootverbose. Approved by: mav Modified: head/sys/dev/sound/pci/hda/hdac.c Modified: head/sys/dev/sound/pci/hda/hdac.c ============================================================================== --- head/sys/dev/sound/pci/hda/hdac.c Wed Jun 15 19:33:02 2011 (r223117) +++ head/sys/dev/sound/pci/hda/hdac.c Wed Jun 15 19:53:08 2011 (r223118) @@ -4146,7 +4146,10 @@ hdac_attach(device_t dev) uint16_t vendor; uint8_t v; - device_printf(dev, "HDA Driver Revision: %s\n", HDA_DRV_TEST_REV); + HDA_BOOTVERBOSE( + device_printf(dev, "HDA Driver Revision: %s\n", + HDA_DRV_TEST_REV); + ); model = (uint32_t)pci_get_device(dev) << 16; model |= (uint32_t)pci_get_vendor(dev) & 0x0000ffff; From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 20:34:41 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7BCD2106564A; Wed, 15 Jun 2011 20:34:41 +0000 (UTC) (envelope-from trociny@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 317B48FC08; Wed, 15 Jun 2011 20:34:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FKYfVS097297; Wed, 15 Jun 2011 20:34:41 GMT (envelope-from trociny@svn.freebsd.org) Received: (from trociny@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FKYfFR097295; Wed, 15 Jun 2011 20:34:41 GMT (envelope-from trociny@svn.freebsd.org) Message-Id: <201106152034.p5FKYfFR097295@svn.freebsd.org> From: Mikolaj Golub Date: Wed, 15 Jun 2011 20:34:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223119 - stable/8/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 20:34:41 -0000 Author: trociny Date: Wed Jun 15 20:34:40 2011 New Revision: 223119 URL: http://svn.freebsd.org/changeset/base/223119 Log: MFC r222454: In soreceive_generic(), if MSG_WAITALL is set but the request is larger than the receive buffer, we have to receive in sections. When notifying the protocol that some data has been drained the lock is released for a moment. Returning we block waiting for the rest of data. There is a race, when data could arrive while the lock was released and then the connection stalls in sbwait. Fix this by checking for data before blocking and skip blocking if there are some. PR: kern/154504 Reported by: Andrey Simonenko Tested by: Andrey Simonenko Reviewed by: rwatson Approved by: pjd (mentor) Modified: stable/8/sys/kern/uipc_socket.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/kern/uipc_socket.c ============================================================================== --- stable/8/sys/kern/uipc_socket.c Wed Jun 15 19:53:08 2011 (r223118) +++ stable/8/sys/kern/uipc_socket.c Wed Jun 15 20:34:40 2011 (r223119) @@ -1836,10 +1836,16 @@ dontblock: } SBLASTRECORDCHK(&so->so_rcv); SBLASTMBUFCHK(&so->so_rcv); - error = sbwait(&so->so_rcv); - if (error) { - SOCKBUF_UNLOCK(&so->so_rcv); - goto release; + /* + * We could receive some data while was notifying + * the protocol. Skip blocking in this case. + */ + if (so->so_rcv.sb_mb == NULL) { + error = sbwait(&so->so_rcv); + if (error) { + SOCKBUF_UNLOCK(&so->so_rcv); + goto release; + } } m = so->so_rcv.sb_mb; if (m != NULL) From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 21:48:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A4A22106566B; Wed, 15 Jun 2011 21:48:10 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8A6CE8FC17; Wed, 15 Jun 2011 21:48:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FLmAn4099443; Wed, 15 Jun 2011 21:48:10 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FLmAxr099439; Wed, 15 Jun 2011 21:48:10 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106152148.p5FLmAxr099439@svn.freebsd.org> From: Jilles Tjoelker Date: Wed, 15 Jun 2011 21:48:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223120 - in head: bin/sh tools/regression/bin/sh/builtins X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 21:48:10 -0000 Author: jilles Date: Wed Jun 15 21:48:10 2011 New Revision: 223120 URL: http://svn.freebsd.org/changeset/base/223120 Log: sh: Add support for named character classes in bracket expressions. Example: case x in [[:alpha:]]) echo yes ;; esac Added: head/tools/regression/bin/sh/builtins/case8.0 (contents, props changed) Modified: head/bin/sh/expand.c head/bin/sh/sh.1 Modified: head/bin/sh/expand.c ============================================================================== --- head/bin/sh/expand.c Wed Jun 15 20:34:40 2011 (r223119) +++ head/bin/sh/expand.c Wed Jun 15 21:48:10 2011 (r223120) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include /* * Routines to expand arguments to commands. We have to deal with @@ -1401,13 +1402,43 @@ get_wc(const char **p) /* + * See if a character matches a character class, starting at the first colon + * of "[:class:]". + * If a valid character class is recognized, a pointer to the next character + * after the final closing bracket is stored into *end, otherwise a null + * pointer is stored into *end. + */ +static int +match_charclass(const char *p, wchar_t chr, const char **end) +{ + char name[20]; + const char *nameend; + wctype_t cclass; + + *end = NULL; + p++; + nameend = strstr(p, ":]"); + if (nameend == NULL || nameend - p >= sizeof(name) || nameend == p) + return 0; + memcpy(name, p, nameend - p); + name[nameend - p] = '\0'; + *end = nameend + 2; + cclass = wctype(name); + /* An unknown class matches nothing but is valid nevertheless. */ + if (cclass == 0) + return 0; + return iswctype(chr, cclass); +} + + +/* * Returns true if the pattern matches the string. */ int patmatch(const char *pattern, const char *string, int squoted) { - const char *p, *q; + const char *p, *q, *end; char c; wchar_t wc, wc2; @@ -1495,6 +1526,11 @@ patmatch(const char *pattern, const char do { if (c == CTLQUOTEMARK) continue; + if (c == '[' && *p == ':') { + found |= match_charclass(p, chr, &end); + if (end != NULL) + p = end; + } if (c == CTLESC) c = *p++; if (localeisutf8 && c & 0x80) { Modified: head/bin/sh/sh.1 ============================================================================== --- head/bin/sh/sh.1 Wed Jun 15 20:34:40 2011 (r223119) +++ head/bin/sh/sh.1 Wed Jun 15 21:48:10 2011 (r223120) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd June 12, 2011 +.Dd June 15, 2011 .Dt SH 1 .Os .Sh NAME @@ -1648,6 +1648,15 @@ matches a rather than introducing a character class. A character class matches any of the characters between the square brackets. A range of characters may be specified using a minus sign. +A named class of characters (see +.Xr wctype 3 ) +may be specified by surrounding the name with +.Ql \&[: +and +.Ql :\&] . +For example, +.Ql \&[\&[:alpha:\&]\&] +is a shell pattern that matches a single letter. The character class may be complemented by making an exclamation point .Pq Ql !\& the first character of the character class. @@ -2572,6 +2581,7 @@ will return the argument. .Xr execve 2 , .Xr getrlimit 2 , .Xr umask 2 , +.Xr wctype 3 , .Xr editrc 5 .Sh HISTORY A Added: head/tools/regression/bin/sh/builtins/case8.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/case8.0 Wed Jun 15 21:48:10 2011 (r223120) @@ -0,0 +1,32 @@ +# $FreeBSD$ + +case aZ_ in +[[:alpha:]_][[:upper:]_][[:alpha:]_]) ;; +*) echo Failed at $LINENO ;; +esac + +case ' ' in +[[:alpha:][:digit:]]) echo Failed at $LINENO ;; +[![:alpha:][:digit:]]) ;; +*) echo Failed at $LINENO ;; +esac + +case '.X.' in +*[[:lower:]]*) echo Failed at $LINENO ;; +*[[:upper:]]*) ;; +*) echo Failed at $LINENO ;; +esac + +case ' ' in +[![:print:]]) echo Failed at $LINENO ;; +[![:alnum:][:punct:]]) ;; +*) echo Failed at $LINENO ;; +esac + +case ' +' in +[[:print:]]) echo Failed at $LINENO ;; +[' +'[:digit:]]) ;; +*) echo Failed at $LINENO ;; +esac From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 21:58:01 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 81747106566B; Wed, 15 Jun 2011 21:58:01 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 712588FC08; Wed, 15 Jun 2011 21:58:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FLw1cV099769; Wed, 15 Jun 2011 21:58:01 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FLw1oU099767; Wed, 15 Jun 2011 21:58:01 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201106152158.p5FLw1oU099767@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 15 Jun 2011 21:58:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223121 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 21:58:01 -0000 Author: rodrigc Date: Wed Jun 15 21:58:01 2011 New Revision: 223121 URL: http://svn.freebsd.org/changeset/base/223121 Log: In sendrecv function, change the receive timeout value between retries to increase in steps of MINTMO, instead of doubling the timeout for every retry. Obtained from: Juniper Networks Fixed by: Santhanakrishnan Balraj Modified: head/lib/libstand/net.c Modified: head/lib/libstand/net.c ============================================================================== --- head/lib/libstand/net.c Wed Jun 15 21:48:10 2011 (r223120) +++ head/lib/libstand/net.c Wed Jun 15 21:58:01 2011 (r223121) @@ -100,7 +100,7 @@ sendrecv(struct iodesc *d, cc, ssize); tleft = tmo; - tmo <<= 1; + tmo += MINTMO; if (tmo > MAXTMO) tmo = MAXTMO; From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 22:04:15 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 402741065672; Wed, 15 Jun 2011 22:04:15 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 265DB8FC15; Wed, 15 Jun 2011 22:04:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FM4F69000158; Wed, 15 Jun 2011 22:04:15 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FM4F4F000156; Wed, 15 Jun 2011 22:04:15 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201106152204.p5FM4F4F000156@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 15 Jun 2011 22:04:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223122 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 22:04:15 -0000 Author: rodrigc Date: Wed Jun 15 22:04:14 2011 New Revision: 223122 URL: http://svn.freebsd.org/changeset/base/223122 Log: Added sendrecv_tftp function instead of sendrecv for use by tftp. In sendrecv_tftp: * Upon receving an unexpected block of data or error, resend the ACK immediately instead of waiting till the expiry of receive data timeout to resend the ACK. * change the receive timeout value between retries to be 2xMINTMO. Obtained from: Juniper Networks Fixed by: Santhanakrishnan Balraj Modified: head/lib/libstand/tftp.c Modified: head/lib/libstand/tftp.c ============================================================================== --- head/lib/libstand/tftp.c Wed Jun 15 21:58:01 2011 (r223121) +++ head/lib/libstand/tftp.c Wed Jun 15 22:04:14 2011 (r223122) @@ -66,6 +66,7 @@ static int tftp_read(struct open_file *f static int tftp_write(struct open_file *f, void *buf, size_t size, size_t *resid); static off_t tftp_seek(struct open_file *f, off_t offset, int where); static int tftp_stat(struct open_file *f, struct stat *sb); +static ssize_t sendrecv_tftp(d, sproc, sbuf, ssize, rproc, rbuf, rsize); struct fs_ops tftp_fsops = { "tftp", @@ -191,7 +192,7 @@ tftp_makereq(struct tftp_handle *h) h->iodesc->destport = htons(IPPORT_TFTP); h->iodesc->xid = 1; /* expected block */ - res = sendrecv(h->iodesc, sendudp, &wbuf.t, wtail - (char *) &wbuf.t, + res = sendrecv_tftp(h->iodesc, sendudp, &wbuf.t, wtail - (char *) &wbuf.t, recvtftp, t, sizeof(*t) + RSPACE); if (res == -1) @@ -226,7 +227,7 @@ tftp_getnextblock(struct tftp_handle *h) h->iodesc->xid = h->currblock + 1; /* expected block */ - res = sendrecv(h->iodesc, sendudp, &wbuf.t, wtail - (char *) &wbuf.t, + res = sendrecv_tftp(h->iodesc, sendudp, &wbuf.t, wtail - (char *) &wbuf.t, recvtftp, t, sizeof(*t) + RSPACE); if (res == -1) /* 0 is OK! */ @@ -404,3 +405,55 @@ tftp_seek(struct open_file *f, off_t off } return (tftpfile->off); } + +static ssize_t +sendrecv_tftp(d, sproc, sbuf, ssize, rproc, rbuf, rsize) + struct iodesc *d; + ssize_t (*sproc)(struct iodesc *, void *, size_t); + void *sbuf; + size_t ssize; + ssize_t (*rproc)(struct iodesc *, void *, size_t, time_t); + void *rbuf; + size_t rsize; +{ + ssize_t cc; + time_t t, t1, tleft; + +#ifdef TFTP_DEBUG + if (debug) + printf("sendrecv: called\n"); +#endif + + tleft = MINTMO; + t = t1 = getsecs(); + for (;;) { + if ((getsecs() - t) > MAXTMO) { + errno = ETIMEDOUT; + return -1; + } + + cc = (*sproc)(d, sbuf, ssize); + if (cc != -1 && cc < ssize) + panic("sendrecv: short write! (%zd < %zu)", + cc, ssize); + + if (cc == -1) { + /* Error on transmit; wait before retrying */ + while ((getsecs() - t1) < tleft); + continue; + } + + /* Try to get a packet and process it. */ + cc = (*rproc)(d, rbuf, rsize, tleft); + /* Return on data, EOF or real error. */ + if (cc != -1 || errno != 0) + return (cc); + + /* Timed out or didn't get the packet we're waiting for */ + tleft += MINTMO; + if (tleft > (2 * MINTMO)) { + tleft = (2 * MINTMO); + } + t1 = getsecs(); + } +} From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 22:08:19 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 08706106566B; Wed, 15 Jun 2011 22:08:19 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EC7DF8FC27; Wed, 15 Jun 2011 22:08:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FM8Imq000304; Wed, 15 Jun 2011 22:08:18 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FM8IcR000302; Wed, 15 Jun 2011 22:08:18 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201106152208.p5FM8IcR000302@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 15 Jun 2011 22:08:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223123 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 22:08:19 -0000 Author: rodrigc Date: Wed Jun 15 22:08:18 2011 New Revision: 223123 URL: http://svn.freebsd.org/changeset/base/223123 Log: Currently tftp code in the loader retransmits the previous packet if it receives any unwanted packet(non-tftp). Change this to retransmit the packet(request or ack) only after a timeout. Obtained from: Juniper Networks Fixed by: Santhanakrishnan Balraj Modified: head/lib/libstand/tftp.c Modified: head/lib/libstand/tftp.c ============================================================================== --- head/lib/libstand/tftp.c Wed Jun 15 22:04:14 2011 (r223122) +++ head/lib/libstand/tftp.c Wed Jun 15 22:08:18 2011 (r223123) @@ -443,11 +443,15 @@ sendrecv_tftp(d, sproc, sbuf, ssize, rpr continue; } +recvnext: /* Try to get a packet and process it. */ cc = (*rproc)(d, rbuf, rsize, tleft); /* Return on data, EOF or real error. */ if (cc != -1 || errno != 0) return (cc); + if ((getsecs() - t1) < tleft) { + goto recvnext; + } /* Timed out or didn't get the packet we're waiting for */ tleft += MINTMO; From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 22:13:22 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 72C84106564A; Wed, 15 Jun 2011 22:13:22 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 616F28FC15; Wed, 15 Jun 2011 22:13:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FMDMc9000493; Wed, 15 Jun 2011 22:13:22 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FMDMWP000491; Wed, 15 Jun 2011 22:13:22 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201106152213.p5FMDMWP000491@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 15 Jun 2011 22:13:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223124 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 22:13:22 -0000 Author: rodrigc Date: Wed Jun 15 22:13:22 2011 New Revision: 223124 URL: http://svn.freebsd.org/changeset/base/223124 Log: (1) When sending the TFTP RRQ packet to read a file, send along the "blksize" option specified in RFC2348, and the "tsize" option specified in RFC2349. Add code to parse the TFTP Option Acknowledgement (OACK) packet as specified in RFC2347. For TFTP servers which support the "blksize" option, we can specify a TFTP Data block size larger than the default 512 bytes specified in RFC1350. This offers greater read performance when downloading files. We request an initial size of 1428 bytes, which is less than the Ethernet MTU of 1500 bytes. If the TFTP server sends back an OACK packet, then use the block size specified in the OACK packet. Most times it is usually the same value as what we request. If the TFTP server supports RFC2348, we will see performance improvements by transferring files over TFTP with larger block sizes. If we do not get back an OACK packet, then we most likely we are interoperating with a legacy TFTP server that does not support TFTP extension options, so default to the block size of 512 bytes. (2) If the "tftp.blksize" environment variable is set, then take that value and use it when sending the TFTP RRQ packet, instead of 1428. This allows us to set different values of "tftp.blksize" in the loader, so that we can test out different TFTP block sizes at run time. Obtained from: Juniper Networks Fixed by: rodrigc Modified: head/lib/libstand/tftp.c Modified: head/lib/libstand/tftp.c ============================================================================== --- head/lib/libstand/tftp.c Wed Jun 15 22:08:18 2011 (r223123) +++ head/lib/libstand/tftp.c Wed Jun 15 22:13:22 2011 (r223124) @@ -60,13 +60,21 @@ __FBSDID("$FreeBSD$"); #include "tftp.h" +struct tftp_handle; + static int tftp_open(const char *path, struct open_file *f); static int tftp_close(struct open_file *f); +static void tftp_parse_oack(struct tftp_handle *h, char *buf, size_t len); static int tftp_read(struct open_file *f, void *buf, size_t size, size_t *resid); static int tftp_write(struct open_file *f, void *buf, size_t size, size_t *resid); static off_t tftp_seek(struct open_file *f, off_t offset, int where); +static int tftp_set_blksize(struct tftp_handle *h, const char *str); static int tftp_stat(struct open_file *f, struct stat *sb); -static ssize_t sendrecv_tftp(d, sproc, sbuf, ssize, rproc, rbuf, rsize); +static ssize_t sendrecv_tftp(struct tftp_handle *h, + ssize_t (*sproc)(struct iodesc *, void *, size_t), + void *sbuf, size_t ssize, + ssize_t (*rproc)(struct tftp_handle *h, void *, ssize_t, time_t, unsigned short *), + void *rbuf, size_t rsize, unsigned short *rtype); struct fs_ops tftp_fsops = { "tftp", @@ -82,8 +90,20 @@ struct fs_ops tftp_fsops = { extern struct in_addr servip; static int tftpport = 2000; +static int is_open = 0; -#define RSPACE 520 /* max data packet, rounded up */ +/* + * The legacy TFTP_BLKSIZE value was 512. + * TFTP_REQUESTED_BLKSIZE of 1428 is (Ethernet MTU, less the TFTP, UDP and + * IP header lengths). + */ +#define TFTP_REQUESTED_BLKSIZE 1428 + +/* + * Choose a blksize big enough so we can test with Ethernet + * Jumbo frames in the future. + */ +#define TFTP_MAX_BLKSIZE 9008 struct tftp_handle { struct iodesc *iodesc; @@ -92,14 +112,16 @@ struct tftp_handle { int validsize; int off; char *path; /* saved for re-requests */ + unsigned int tftp_blksize; + unsigned long tftp_tsize; struct { u_char header[HEADER_SIZE]; struct tftphdr t; - u_char space[RSPACE]; - } __packed __aligned(4) lastdata; + u_char space[TFTP_MAX_BLKSIZE]; + } lastdata; }; -static const int tftperrors[8] = { +static int tftperrors[8] = { 0, /* ??? */ ENOENT, EPERM, @@ -111,8 +133,10 @@ static const int tftperrors[8] = { }; static ssize_t -recvtftp(struct iodesc *d, void *pkt, ssize_t len, time_t tleft) +recvtftp(struct tftp_handle *h, void *pkt, ssize_t len, time_t tleft, + unsigned short *rtype) { + struct iodesc *d = h->iodesc; struct tftphdr *t; errno = 0; @@ -123,6 +147,7 @@ recvtftp(struct iodesc *d, void *pkt, ss return (-1); t = (struct tftphdr *) pkt; + *rtype = ntohs(t->th_opcode); switch (ntohs(t->th_opcode)) { case DATA: { int got; @@ -155,6 +180,18 @@ recvtftp(struct iodesc *d, void *pkt, ss errno = tftperrors[ntohs(t->th_code)]; } return (-1); + case OACK: { + struct udphdr *uh; + int tftp_oack_len = len - sizeof(t->th_opcode); + tftp_parse_oack(h, t->th_u.tu_stuff, tftp_oack_len); + /* + * Remember which port this OACK came from, + * because we need to send the ACK back to it. + */ + uh = (struct udphdr *) pkt - 1; + d->destport = uh->uh_sport; + return (0); + } default: #ifdef TFTP_DEBUG printf("tftp type %d not handled\n", ntohs(t->th_opcode)); @@ -171,19 +208,40 @@ tftp_makereq(struct tftp_handle *h) u_char header[HEADER_SIZE]; struct tftphdr t; u_char space[FNAME_SIZE + 6]; - } __packed __aligned(4) wbuf; + } wbuf; char *wtail; int l; ssize_t res; struct tftphdr *t; + char *tftp_blksize = NULL; + int blksize_l; + unsigned short rtype = 0; + + /* + * Allow overriding default TFTP block size by setting + * a tftp.blksize environment variable. + */ + if ((tftp_blksize = getenv("tftp.blksize")) != NULL) { + tftp_set_blksize(h, tftp_blksize); + } wbuf.t.th_opcode = htons((u_short) RRQ); wtail = wbuf.t.th_stuff; l = strlen(h->path); + if (l > FNAME_SIZE) + return (ENAMETOOLONG); bcopy(h->path, wtail, l + 1); wtail += l + 1; bcopy("octet", wtail, 6); wtail += 6; + bcopy("blksize", wtail, 8); + wtail += 8; + blksize_l = sprintf(wtail, "%d", h->tftp_blksize); + wtail += blksize_l + 1; + bcopy("tsize", wtail, 6); + wtail += 6; + bcopy("0", wtail, 2); + wtail += 2; t = &h->lastdata.t; @@ -192,18 +250,33 @@ tftp_makereq(struct tftp_handle *h) h->iodesc->destport = htons(IPPORT_TFTP); h->iodesc->xid = 1; /* expected block */ - res = sendrecv_tftp(h->iodesc, sendudp, &wbuf.t, wtail - (char *) &wbuf.t, - recvtftp, t, sizeof(*t) + RSPACE); + res = sendrecv_tftp(h, &sendudp, &wbuf.t, wtail - (char *) &wbuf.t, + &recvtftp, t, sizeof(*t) + h->tftp_blksize, &rtype); - if (res == -1) - return (errno); + if (rtype == OACK) { + wbuf.t.th_opcode = htons((u_short)ACK); + wtail = (char *) &wbuf.t.th_block; + wbuf.t.th_block = htons(0); + wtail += 2; + rtype = 0; + res = sendrecv_tftp(h, &sendudp, &wbuf.t, wtail - (char *) &wbuf.t, + &recvtftp, t, sizeof(*t) + h->tftp_blksize, &rtype); + } + + switch (rtype) { + case DATA: { + h->currblock = 1; + h->validsize = res; + h->islastblock = 0; + if (res < h->tftp_blksize) + h->islastblock = 1; /* very short file */ + return (0); + } + case ERROR: + default: + return (errno); + } - h->currblock = 1; - h->validsize = res; - h->islastblock = 0; - if (res < SEGSIZE) - h->islastblock = 1; /* very short file */ - return (0); } /* ack block, expect next */ @@ -213,11 +286,11 @@ tftp_getnextblock(struct tftp_handle *h) struct { u_char header[HEADER_SIZE]; struct tftphdr t; - } __packed __aligned(4) wbuf; + } wbuf; char *wtail; int res; struct tftphdr *t; - + unsigned short rtype = 0; wbuf.t.th_opcode = htons((u_short) ACK); wtail = (char *) &wbuf.t.th_block; wbuf.t.th_block = htons((u_short) h->currblock); @@ -227,16 +300,23 @@ tftp_getnextblock(struct tftp_handle *h) h->iodesc->xid = h->currblock + 1; /* expected block */ - res = sendrecv_tftp(h->iodesc, sendudp, &wbuf.t, wtail - (char *) &wbuf.t, - recvtftp, t, sizeof(*t) + RSPACE); + res = sendrecv_tftp(h, &sendudp, &wbuf.t, wtail - (char *) &wbuf.t, + &recvtftp, t, sizeof(*t) + h->tftp_blksize, &rtype); if (res == -1) /* 0 is OK! */ return (errno); h->currblock++; h->validsize = res; - if (res < SEGSIZE) + if (res < h->tftp_blksize) h->islastblock = 1; /* EOF */ + + if (h->islastblock == 1) { + /* Send an ACK for the last block */ + wbuf.t.th_block = htons((u_short) h->currblock); + sendudp(h->iodesc, &wbuf.t, wtail - (char *)&wbuf.t); + } + return (0); } @@ -252,10 +332,15 @@ tftp_open(const char *path, struct open_ return (EINVAL); #endif + if (is_open) + return (EBUSY); + tftpfile = (struct tftp_handle *) malloc(sizeof(*tftpfile)); if (!tftpfile) return (ENOMEM); + memset(tftpfile, 0, sizeof(*tftpfile)); + tftpfile->tftp_blksize = TFTP_REQUESTED_BLKSIZE; tftpfile->iodesc = io = socktodesc(*(int *) (f->f_devdata)); if (io == NULL) return (EINVAL); @@ -276,6 +361,7 @@ tftp_open(const char *path, struct open_ return (res); } f->f_fsdata = (void *) tftpfile; + is_open = 1; return (0); } @@ -293,7 +379,7 @@ tftp_read(struct open_file *f, void *add if (!(tc++ % 16)) twiddle(); - needblock = tftpfile->off / SEGSIZE + 1; + needblock = tftpfile->off / tftpfile->tftp_blksize + 1; if (tftpfile->currblock > needblock) /* seek backwards */ tftp_makereq(tftpfile); /* no error check, it worked @@ -316,7 +402,7 @@ tftp_read(struct open_file *f, void *add if (tftpfile->currblock == needblock) { int offinblock, inbuffer; - offinblock = tftpfile->off % SEGSIZE; + offinblock = tftpfile->off % tftpfile->tftp_blksize; inbuffer = tftpfile->validsize - offinblock; if (inbuffer < 0) { @@ -362,18 +448,19 @@ tftp_close(struct open_file *f) free(tftpfile->path); free(tftpfile); } + is_open = 0; return (0); } static int tftp_write(struct open_file *f __unused, void *start __unused, size_t size __unused, - size_t *resid /* out */ __unused) + size_t *resid __unused /* out */) { return (EROFS); } static int -tftp_stat(struct open_file *f, struct stat *sb) +tftp_stat(struct open_file *f, struct stat *sb) { struct tftp_handle *tftpfile; tftpfile = (struct tftp_handle *) f->f_fsdata; @@ -407,15 +494,13 @@ tftp_seek(struct open_file *f, off_t off } static ssize_t -sendrecv_tftp(d, sproc, sbuf, ssize, rproc, rbuf, rsize) - struct iodesc *d; - ssize_t (*sproc)(struct iodesc *, void *, size_t); - void *sbuf; - size_t ssize; - ssize_t (*rproc)(struct iodesc *, void *, size_t, time_t); - void *rbuf; - size_t rsize; +sendrecv_tftp(struct tftp_handle *h, + ssize_t (*sproc)(struct iodesc *, void *, size_t), + void *sbuf, size_t ssize, + ssize_t (*rproc)(struct tftp_handle *, void *, ssize_t, time_t, unsigned short *), + void *rbuf, size_t rsize, unsigned short *rtype) { + struct iodesc *d = h->iodesc; ssize_t cc; time_t t, t1, tleft; @@ -445,7 +530,7 @@ sendrecv_tftp(d, sproc, sbuf, ssize, rpr recvnext: /* Try to get a packet and process it. */ - cc = (*rproc)(d, rbuf, rsize, tleft); + cc = (*rproc)(h, rbuf, rsize, tleft, rtype); /* Return on data, EOF or real error. */ if (cc != -1 || errno != 0) return (cc); @@ -461,3 +546,112 @@ recvnext: t1 = getsecs(); } } + +static int +tftp_set_blksize(struct tftp_handle *h, const char *str) +{ + char *endptr; + int new_blksize; + int ret = 0; + + if (h == NULL || str == NULL) + return (ret); + + new_blksize = + (unsigned int)strtol(str, &endptr, 0); + + /* + * Only accept blksize value if it is numeric. + * RFC2348 specifies that acceptable valuesare 8-65464 + * 8-65464 . Let's choose a limit less than MAXRSPACE + */ + if (*endptr == '\0' && new_blksize >= 8 + && new_blksize <= TFTP_MAX_BLKSIZE) { + h->tftp_blksize = new_blksize; + ret = 1; + } + + return (ret); +} + +/* + * In RFC2347, the TFTP Option Acknowledgement package (OACK) + * is used to acknowledge a client's option negotiation request. + * The format of an OACK packet is: + * +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+ + * | opc | opt1 | 0 | value1 | 0 | optN | 0 | valueN | 0 | + * +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+ + * + * opc + * The opcode field contains a 6, for Option Acknowledgment. + * + * opt1 + * The first option acknowledgment, copied from the original + * request. + * + * value1 + * The acknowledged value associated with the first option. If + * and how this value may differ from the original request is + * detailed in the specification for the option. + * + * optN, valueN + * The final option/value acknowledgment pair. + */ +static void +tftp_parse_oack(struct tftp_handle *h, char *buf, size_t len) +{ + /* + * We parse the OACK strings into an array + * of name-value pairs. + * + */ + char *tftp_options[128] = { 0 }; + char *val = buf; + int i = 0; + int option_idx = 0; + int blksize_is_set = 0; + int tsize = 0; + + + while ( option_idx < 128 && i < len ) { + if (buf[i] == '\0') { + if (&buf[i] > val) { + tftp_options[option_idx] = val; + val = &buf[i] + 1; + ++option_idx; + } + } + ++i; + } + + /* + * Parse individual TFTP options. + * * "blksize" is specified in RFC2348. + * * "tsize" is specified in RFC2349. + */ + for (i = 0; i < option_idx; i += 2) { + if (strcasecmp(tftp_options[i], "blksize") == 0) { + if (i + 1 < option_idx) { + blksize_is_set = + tftp_set_blksize(h, tftp_options[i + 1]); + } + } else if (strcasecmp(tftp_options[i], "tsize") == 0) { + if (i + 1 < option_idx) { + tsize = strtol(tftp_options[i + 1], (char **)NULL, 10); + } + } + } + + if (!blksize_is_set) { + /* + * If TFTP blksize was not set, try defaulting + * to the legacy TFTP blksize of 512 + */ + h->tftp_blksize = 512; + } + +#ifdef TFTP_DEBUG + printf("tftp_blksize: %u\n", h->tftp_blksize); + printf("tftp_tsize: %lu\n", h->tftp_tsize); +#endif +} From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 22:15:28 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ECA2E1065679; Wed, 15 Jun 2011 22:15:28 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C3A258FC14; Wed, 15 Jun 2011 22:15:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FMFS8o000590; Wed, 15 Jun 2011 22:15:28 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FMFSLI000588; Wed, 15 Jun 2011 22:15:28 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201106152215.p5FMFSLI000588@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 15 Jun 2011 22:15:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223125 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 22:15:29 -0000 Author: rodrigc Date: Wed Jun 15 22:15:28 2011 New Revision: 223125 URL: http://svn.freebsd.org/changeset/base/223125 Log: Increase WARNS level to 2. Modified: head/lib/libstand/Makefile Modified: head/lib/libstand/Makefile ============================================================================== --- head/lib/libstand/Makefile Wed Jun 15 22:13:22 2011 (r223124) +++ head/lib/libstand/Makefile Wed Jun 15 22:15:28 2011 (r223125) @@ -15,7 +15,7 @@ NO_PIC= INCS= stand.h MAN= libstand.3 -WARNS?= 0 +WARNS?= 2 CFLAGS+= -ffreestanding -Wformat CFLAGS+= -I${.CURDIR} From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 22:41:55 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7F693106564A; Wed, 15 Jun 2011 22:41:55 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 65CBB8FC13; Wed, 15 Jun 2011 22:41:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FMft0l001390; Wed, 15 Jun 2011 22:41:55 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FMft8D001388; Wed, 15 Jun 2011 22:41:55 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201106152241.p5FMft8D001388@svn.freebsd.org> From: Marius Strobl Date: Wed, 15 Jun 2011 22:41:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223126 - head/sys/sparc64/include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 22:41:55 -0000 Author: marius Date: Wed Jun 15 22:41:55 2011 New Revision: 223126 URL: http://svn.freebsd.org/changeset/base/223126 Log: Don't include curcpu in the mask which is used as the IPI cookie as we have to ignore it when sending the IPI anyway. Actually I can't think of a good reason why this ever was done that way in the first place as it's not even usefull for debugging. While at it replace the use of pc_other_cpus as it's slated for deorbit. Modified: head/sys/sparc64/include/smp.h Modified: head/sys/sparc64/include/smp.h ============================================================================== --- head/sys/sparc64/include/smp.h Wed Jun 15 22:15:28 2011 (r223125) +++ head/sys/sparc64/include/smp.h Wed Jun 15 22:41:55 2011 (r223126) @@ -1,5 +1,6 @@ /*- * Copyright (c) 2001 Jake Burkholder. + * Copyright (c) 2007 - 2011 Marius Strobl * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -136,8 +137,11 @@ extern char tl_ipi_tlb_range_demap[]; static __inline void ipi_all_but_self(u_int ipi) { + cpuset_t cpus; - cpu_ipi_selected(PCPU_GET(other_cpus), 0, (u_long)tl_ipi_level, ipi); + cpus = all_cpus; + CPU_CLR(PCPU_GET(cpuid), &cpus); + cpu_ipi_selected(cpus, 0, (u_long)tl_ipi_level, ipi); } static __inline void @@ -167,8 +171,9 @@ ipi_dcache_page_inval(void *func, vm_pad ica = &ipi_cache_args; mtx_lock_spin(&ipi_mtx); ica->ica_mask = all_cpus; + CPU_CLR(PCPU_GET(cpuid), &ica->ica_mask); ica->ica_pa = pa; - cpu_ipi_selected(PCPU_GET(other_cpus), 0, (u_long)func, (u_long)ica); + cpu_ipi_selected(ica->ica_mask, 0, (u_long)func, (u_long)ica); return (&ica->ica_mask); } @@ -183,8 +188,9 @@ ipi_icache_page_inval(void *func, vm_pad ica = &ipi_cache_args; mtx_lock_spin(&ipi_mtx); ica->ica_mask = all_cpus; + CPU_CLR(PCPU_GET(cpuid), &ica->ica_mask); ica->ica_pa = pa; - cpu_ipi_selected(PCPU_GET(other_cpus), 0, (u_long)func, (u_long)ica); + cpu_ipi_selected(ica->ica_mask, 0, (u_long)func, (u_long)ica); return (&ica->ica_mask); } @@ -198,8 +204,7 @@ ipi_rd(u_int cpu, void *func, u_long *va sched_pin(); ira = &ipi_rd_args; mtx_lock_spin(&ipi_mtx); - ira->ira_mask = PCPU_GET(cpumask); - CPU_SET(cpu, &ira->ira_mask); + CPU_SETOF(cpu, &ira->ira_mask); ira->ira_val = val; cpu_ipi_single(cpu, 0, (u_long)func, (u_long)ira); return (&ira->ira_mask); @@ -215,7 +220,8 @@ ipi_tlb_context_demap(struct pmap *pm) return (NULL); sched_pin(); cpus = pm->pm_active; - CPU_AND(&cpus, PCPU_PTR(other_cpus)); + CPU_AND(&cpus, &all_cpus); + CPU_CLR(PCPU_GET(cpuid), &cpus); if (CPU_EMPTY(&cpus)) { sched_unpin(); return (NULL); @@ -223,7 +229,6 @@ ipi_tlb_context_demap(struct pmap *pm) ita = &ipi_tlb_args; mtx_lock_spin(&ipi_mtx); ita->ita_mask = cpus; - CPU_OR(&ita->ita_mask, PCPU_PTR(cpumask)); ita->ita_pmap = pm; cpu_ipi_selected(cpus, 0, (u_long)tl_ipi_tlb_context_demap, (u_long)ita); @@ -240,7 +245,8 @@ ipi_tlb_page_demap(struct pmap *pm, vm_o return (NULL); sched_pin(); cpus = pm->pm_active; - CPU_AND(&cpus, PCPU_PTR(other_cpus)); + CPU_AND(&cpus, &all_cpus); + CPU_CLR(PCPU_GET(cpuid), &cpus); if (CPU_EMPTY(&cpus)) { sched_unpin(); return (NULL); @@ -248,7 +254,6 @@ ipi_tlb_page_demap(struct pmap *pm, vm_o ita = &ipi_tlb_args; mtx_lock_spin(&ipi_mtx); ita->ita_mask = cpus; - CPU_OR(&ita->ita_mask, PCPU_PTR(cpumask)); ita->ita_pmap = pm; ita->ita_va = va; cpu_ipi_selected(cpus, 0, (u_long)tl_ipi_tlb_page_demap, (u_long)ita); @@ -265,7 +270,8 @@ ipi_tlb_range_demap(struct pmap *pm, vm_ return (NULL); sched_pin(); cpus = pm->pm_active; - CPU_AND(&cpus, PCPU_PTR(other_cpus)); + CPU_AND(&cpus, &all_cpus); + CPU_CLR(PCPU_GET(cpuid), &cpus); if (CPU_EMPTY(&cpus)) { sched_unpin(); return (NULL); @@ -273,7 +279,6 @@ ipi_tlb_range_demap(struct pmap *pm, vm_ ita = &ipi_tlb_args; mtx_lock_spin(&ipi_mtx); ita->ita_mask = cpus; - CPU_OR(&ita->ita_mask, PCPU_PTR(cpumask)); ita->ita_pmap = pm; ita->ita_start = start; ita->ita_end = end; @@ -288,7 +293,6 @@ ipi_wait(void *cookie) volatile cpuset_t *mask; if ((mask = cookie) != NULL) { - CPU_NAND_ATOMIC(mask, PCPU_PTR(cpumask)); while (!CPU_EMPTY(mask)) ; mtx_unlock_spin(&ipi_mtx); From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 23:19:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0ACA31065670; Wed, 15 Jun 2011 23:19:10 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ED4878FC16; Wed, 15 Jun 2011 23:19:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FNJ9oi002533; Wed, 15 Jun 2011 23:19:09 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FNJ9Yf002525; Wed, 15 Jun 2011 23:19:09 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201106152319.p5FNJ9Yf002525@svn.freebsd.org> From: Kirk McKusick Date: Wed, 15 Jun 2011 23:19:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223127 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 23:19:10 -0000 Author: mckusick Date: Wed Jun 15 23:19:09 2011 New Revision: 223127 URL: http://svn.freebsd.org/changeset/base/223127 Log: Ensure that filesystem metadata contained within persistent snapshots is always kept consistent. Suggested by: Jeff Roberson Modified: head/sys/ufs/ffs/ffs_alloc.c head/sys/ufs/ffs/ffs_balloc.c head/sys/ufs/ffs/ffs_extern.h head/sys/ufs/ffs/ffs_inode.c head/sys/ufs/ffs/ffs_snapshot.c head/sys/ufs/ffs/ffs_softdep.c head/sys/ufs/ffs/softdep.h Modified: head/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- head/sys/ufs/ffs/ffs_alloc.c Wed Jun 15 22:41:55 2011 (r223126) +++ head/sys/ufs/ffs/ffs_alloc.c Wed Jun 15 23:19:09 2011 (r223127) @@ -390,7 +390,7 @@ retry: bp->b_blkno = fsbtodb(fs, bno); if (!DOINGSOFTDEP(vp)) ffs_blkfree(ump, fs, ip->i_devvp, bprev, (long)osize, - ip->i_number, NULL); + ip->i_number, vp->v_type, NULL); delta = btodb(nsize - osize); DIP_SET(ip, i_blocks, DIP(ip, i_blocks) + delta); if (flags & IO_EXT) @@ -670,7 +670,7 @@ ffs_reallocblks_ufs1(ap) if (!DOINGSOFTDEP(vp)) ffs_blkfree(ump, fs, ip->i_devvp, dbtofsb(fs, buflist->bs_children[i]->b_blkno), - fs->fs_bsize, ip->i_number, NULL); + fs->fs_bsize, ip->i_number, vp->v_type, NULL); buflist->bs_children[i]->b_blkno = fsbtodb(fs, blkno); #ifdef INVARIANTS if (!ffs_checkblk(ip, @@ -878,7 +878,7 @@ ffs_reallocblks_ufs2(ap) if (!DOINGSOFTDEP(vp)) ffs_blkfree(ump, fs, ip->i_devvp, dbtofsb(fs, buflist->bs_children[i]->b_blkno), - fs->fs_bsize, ip->i_number, NULL); + fs->fs_bsize, ip->i_number, vp->v_type, NULL); buflist->bs_children[i]->b_blkno = fsbtodb(fs, blkno); #ifdef INVARIANTS if (!ffs_checkblk(ip, @@ -1880,7 +1880,7 @@ ffs_blkfree_cg(ump, fs, devvp, bno, size printf("dev=%s, bno = %jd, bsize = %ld, size = %ld, fs = %s\n", devtoname(dev), (intmax_t)bno, (long)fs->fs_bsize, size, fs->fs_fsmnt); - panic("ffs_blkfree: bad size"); + panic("ffs_blkfree_cg: bad size"); } #endif if ((u_int)bno >= fs->fs_size) { @@ -1914,7 +1914,7 @@ ffs_blkfree_cg(ump, fs, devvp, bno, size } printf("dev = %s, block = %jd, fs = %s\n", devtoname(dev), (intmax_t)bno, fs->fs_fsmnt); - panic("ffs_blkfree: freeing free block"); + panic("ffs_blkfree_cg: freeing free block"); } ffs_setblock(fs, blksfree, fragno); ffs_clusteracct(fs, cgp, fragno, 1); @@ -1937,7 +1937,7 @@ ffs_blkfree_cg(ump, fs, devvp, bno, size printf("dev = %s, block = %jd, fs = %s\n", devtoname(dev), (intmax_t)(bno + i), fs->fs_fsmnt); - panic("ffs_blkfree: freeing free frag"); + panic("ffs_blkfree_cg: freeing free frag"); } setbit(blksfree, cgbno + i); } @@ -2013,13 +2013,14 @@ ffs_blkfree_trim_completed(bip) } void -ffs_blkfree(ump, fs, devvp, bno, size, inum, dephd) +ffs_blkfree(ump, fs, devvp, bno, size, inum, vtype, dephd) struct ufsmount *ump; struct fs *fs; struct vnode *devvp; ufs2_daddr_t bno; long size; ino_t inum; + enum vtype vtype; struct workhead *dephd; { struct mount *mp; @@ -2034,7 +2035,7 @@ ffs_blkfree(ump, fs, devvp, bno, size, i */ if (devvp->v_type != VREG && (devvp->v_vflag & VV_COPYONWRITE) && - ffs_snapblkfree(fs, devvp, bno, size, inum, dephd)) { + ffs_snapblkfree(fs, devvp, bno, size, inum, vtype, dephd)) { return; } if (!ump->um_candelete) { @@ -2571,7 +2572,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) if (blksize > blkcnt) blksize = blkcnt; ffs_blkfree(ump, fs, ump->um_devvp, blkno, - blksize * fs->fs_fsize, ROOTINO, NULL); + blksize * fs->fs_fsize, ROOTINO, VDIR, NULL); blkno += blksize; blkcnt -= blksize; blksize = fs->fs_frag; Modified: head/sys/ufs/ffs/ffs_balloc.c ============================================================================== --- head/sys/ufs/ffs/ffs_balloc.c Wed Jun 15 22:41:55 2011 (r223126) +++ head/sys/ufs/ffs/ffs_balloc.c Wed Jun 15 23:19:09 2011 (r223127) @@ -506,7 +506,7 @@ fail: */ for (blkp = allociblk; blkp < allocblk; blkp++) { ffs_blkfree(ump, fs, ip->i_devvp, *blkp, fs->fs_bsize, - ip->i_number, NULL); + ip->i_number, vp->v_type, NULL); } return (error); } @@ -1052,7 +1052,7 @@ fail: */ for (blkp = allociblk; blkp < allocblk; blkp++) { ffs_blkfree(ump, fs, ip->i_devvp, *blkp, fs->fs_bsize, - ip->i_number, NULL); + ip->i_number, vp->v_type, NULL); } return (error); } Modified: head/sys/ufs/ffs/ffs_extern.h ============================================================================== --- head/sys/ufs/ffs/ffs_extern.h Wed Jun 15 22:41:55 2011 (r223126) +++ head/sys/ufs/ffs/ffs_extern.h Wed Jun 15 23:19:09 2011 (r223127) @@ -57,7 +57,7 @@ int ffs_balloc_ufs2(struct vnode *a_vp, struct ucred *a_cred, int a_flags, struct buf **a_bpp); int ffs_blkatoff(struct vnode *, off_t, char **, struct buf **); void ffs_blkfree(struct ufsmount *, struct fs *, struct vnode *, - ufs2_daddr_t, long, ino_t, struct workhead *); + ufs2_daddr_t, long, ino_t, enum vtype, struct workhead *); ufs2_daddr_t ffs_blkpref_ufs1(struct inode *, ufs_lbn_t, int, ufs1_daddr_t *); ufs2_daddr_t ffs_blkpref_ufs2(struct inode *, ufs_lbn_t, int, ufs2_daddr_t *); int ffs_checkfreefile(struct fs *, struct vnode *, ino_t); @@ -82,7 +82,7 @@ int ffs_realloccg(struct inode *, ufs2_d int ffs_sbupdate(struct ufsmount *, int, int); void ffs_setblock(struct fs *, u_char *, ufs1_daddr_t); int ffs_snapblkfree(struct fs *, struct vnode *, ufs2_daddr_t, long, ino_t, - struct workhead *); + enum vtype, struct workhead *); void ffs_snapremove(struct vnode *vp); int ffs_snapshot(struct mount *mp, char *snapfile); void ffs_snapshot_mount(struct mount *mp); Modified: head/sys/ufs/ffs/ffs_inode.c ============================================================================== --- head/sys/ufs/ffs/ffs_inode.c Wed Jun 15 22:41:55 2011 (r223126) +++ head/sys/ufs/ffs/ffs_inode.c Wed Jun 15 23:19:09 2011 (r223127) @@ -235,7 +235,8 @@ ffs_truncate(vp, length, flags, cred, td if (oldblks[i] == 0) continue; ffs_blkfree(ump, fs, ip->i_devvp, oldblks[i], - sblksize(fs, osize, i), ip->i_number, NULL); + sblksize(fs, osize, i), ip->i_number, + vp->v_type, NULL); } } } @@ -435,7 +436,8 @@ ffs_truncate(vp, length, flags, cred, td if (lastiblock[level] < 0) { DIP_SET(ip, i_ib[level], 0); ffs_blkfree(ump, fs, ip->i_devvp, bn, - fs->fs_bsize, ip->i_number, NULL); + fs->fs_bsize, ip->i_number, + vp->v_type, NULL); blocksreleased += nblocks; } } @@ -455,7 +457,7 @@ ffs_truncate(vp, length, flags, cred, td DIP_SET(ip, i_db[i], 0); bsize = blksize(fs, ip, i); ffs_blkfree(ump, fs, ip->i_devvp, bn, bsize, ip->i_number, - NULL); + vp->v_type, NULL); blocksreleased += btodb(bsize); } if (lastblock < 0) @@ -487,7 +489,7 @@ ffs_truncate(vp, length, flags, cred, td */ bn += numfrags(fs, newspace); ffs_blkfree(ump, fs, ip->i_devvp, bn, - oldspace - newspace, ip->i_number, NULL); + oldspace - newspace, ip->i_number, vp->v_type, NULL); blocksreleased += btodb(oldspace - newspace); } } @@ -634,7 +636,7 @@ ffs_indirtrunc(ip, lbn, dbn, lastbn, lev blocksreleased += blkcount; } ffs_blkfree(ip->i_ump, fs, ip->i_devvp, nb, fs->fs_bsize, - ip->i_number, NULL); + ip->i_number, vp->v_type, NULL); blocksreleased += nblocks; } Modified: head/sys/ufs/ffs/ffs_snapshot.c ============================================================================== --- head/sys/ufs/ffs/ffs_snapshot.c Wed Jun 15 22:41:55 2011 (r223126) +++ head/sys/ufs/ffs/ffs_snapshot.c Wed Jun 15 23:19:09 2011 (r223127) @@ -81,12 +81,13 @@ ffs_snapshot(mp, snapfile) } int -ffs_snapblkfree(fs, devvp, bno, size, inum, wkhd) +ffs_snapblkfree(fs, devvp, bno, size, inum, vtype, wkhd) struct fs *fs; struct vnode *devvp; ufs2_daddr_t bno; long size; ino_t inum; + enum vtype vtype; struct workhead *wkhd; { return (EINVAL); @@ -174,8 +175,10 @@ static int ffs_bp_snapblk(struct vnode * * To ensure the consistency of snapshots across crashes, we must * synchronously write out copied blocks before allowing the * originals to be modified. Because of the rather severe speed - * penalty that this imposes, the following flag allows this - * crash persistence to be disabled. + * penalty that this imposes, the code normally only ensures + * persistence for the filesystem metadata contained within a + * snapshot. Setting the following flag allows this crash + * persistence to be enabled for file contents. */ int dopersistence = 0; @@ -582,7 +585,7 @@ loop: if (len != 0 && len < fs->fs_bsize) { ffs_blkfree(ump, copy_fs, vp, DIP(xp, i_db[loc]), len, xp->i_number, - NULL); + xvp->v_type, NULL); blkno = DIP(xp, i_db[loc]); DIP_SET(xp, i_db[loc], 0); } @@ -1245,7 +1248,8 @@ mapacct_ufs1(vp, oldblkp, lastblkp, fs, *ip->i_snapblklist++ = lblkno; if (blkno == BLK_SNAP) blkno = blkstofrags(fs, lblkno); - ffs_blkfree(ip->i_ump, fs, vp, blkno, fs->fs_bsize, inum, NULL); + ffs_blkfree(ip->i_ump, fs, vp, blkno, fs->fs_bsize, inum, + vp->v_type, NULL); } return (0); } @@ -1528,7 +1532,8 @@ mapacct_ufs2(vp, oldblkp, lastblkp, fs, *ip->i_snapblklist++ = lblkno; if (blkno == BLK_SNAP) blkno = blkstofrags(fs, lblkno); - ffs_blkfree(ip->i_ump, fs, vp, blkno, fs->fs_bsize, inum, NULL); + ffs_blkfree(ip->i_ump, fs, vp, blkno, fs->fs_bsize, inum, + vp->v_type, NULL); } return (0); } @@ -1633,7 +1638,7 @@ ffs_snapremove(vp) DIP_SET(ip, i_db[blkno], 0); else if ((dblk == blkstofrags(fs, blkno) && ffs_snapblkfree(fs, ip->i_devvp, dblk, fs->fs_bsize, - ip->i_number, NULL))) { + ip->i_number, vp->v_type, NULL))) { DIP_SET(ip, i_blocks, DIP(ip, i_blocks) - btodb(fs->fs_bsize)); DIP_SET(ip, i_db[blkno], 0); @@ -1658,7 +1663,8 @@ ffs_snapremove(vp) ((ufs1_daddr_t *)(ibp->b_data))[loc]= 0; else if ((dblk == blkstofrags(fs, blkno) && ffs_snapblkfree(fs, ip->i_devvp, dblk, - fs->fs_bsize, ip->i_number, NULL))) { + fs->fs_bsize, ip->i_number, vp->v_type, + NULL))) { ip->i_din1->di_blocks -= btodb(fs->fs_bsize); ((ufs1_daddr_t *)(ibp->b_data))[loc]= 0; @@ -1672,7 +1678,7 @@ ffs_snapremove(vp) ((ufs2_daddr_t *)(ibp->b_data))[loc] = 0; else if ((dblk == blkstofrags(fs, blkno) && ffs_snapblkfree(fs, ip->i_devvp, dblk, - fs->fs_bsize, ip->i_number, NULL))) { + fs->fs_bsize, ip->i_number, vp->v_type, NULL))) { ip->i_din2->di_blocks -= btodb(fs->fs_bsize); ((ufs2_daddr_t *)(ibp->b_data))[loc] = 0; } @@ -1720,12 +1726,13 @@ ffs_snapremove(vp) * must always have been allocated from a BLK_NOCOPY location. */ int -ffs_snapblkfree(fs, devvp, bno, size, inum, wkhd) +ffs_snapblkfree(fs, devvp, bno, size, inum, vtype, wkhd) struct fs *fs; struct vnode *devvp; ufs2_daddr_t bno; long size; ino_t inum; + enum vtype vtype; struct workhead *wkhd; { struct buf *ibp, *cbp, *savedcbp = 0; @@ -1874,12 +1881,16 @@ retry: * simply copy them to the new block. Note that we need * to synchronously write snapshots that have not been * unlinked, and hence will be visible after a crash, - * to ensure their integrity. + * to ensure their integrity. At a minimum we ensure the + * integrity of the filesystem metadata, but use the + * dopersistence sysctl-setable flag to decide on the + * persistence needed for file content data. */ if (savedcbp != 0) { bcopy(savedcbp->b_data, cbp->b_data, fs->fs_bsize); bawrite(cbp); - if (dopersistence && ip->i_effnlink > 0) + if ((vtype == VDIR || dopersistence) && + ip->i_effnlink > 0) (void) ffs_syncvnode(vp, MNT_WAIT); continue; } @@ -1889,7 +1900,8 @@ retry: if ((error = readblock(vp, cbp, lbn)) != 0) { bzero(cbp->b_data, fs->fs_bsize); bawrite(cbp); - if (dopersistence && ip->i_effnlink > 0) + if ((vtype == VDIR || dopersistence) && + ip->i_effnlink > 0) (void) ffs_syncvnode(vp, MNT_WAIT); break; } @@ -1898,12 +1910,15 @@ retry: /* * Note that we need to synchronously write snapshots that * have not been unlinked, and hence will be visible after - * a crash, to ensure their integrity. + * a crash, to ensure their integrity. At a minimum we + * ensure the integrity of the filesystem metadata, but + * use the dopersistence sysctl-setable flag to decide on + * the persistence needed for file content data. */ if (savedcbp) { vp = savedcbp->b_vp; bawrite(savedcbp); - if (dopersistence && VTOI(vp)->i_effnlink > 0) + if ((vtype == VDIR || dopersistence) && ip->i_effnlink > 0) (void) ffs_syncvnode(vp, MNT_WAIT); } /* @@ -2358,12 +2373,16 @@ ffs_copyonwrite(devvp, bp) * simply copy them to the new block. Note that we need * to synchronously write snapshots that have not been * unlinked, and hence will be visible after a crash, - * to ensure their integrity. + * to ensure their integrity. At a minimum we ensure the + * integrity of the filesystem metadata, but use the + * dopersistence sysctl-setable flag to decide on the + * persistence needed for file content data. */ if (savedcbp != 0) { bcopy(savedcbp->b_data, cbp->b_data, fs->fs_bsize); bawrite(cbp); - if (dopersistence && ip->i_effnlink > 0) + if ((devvp == bp->b_vp || bp->b_vp->v_type == VDIR || + dopersistence) && ip->i_effnlink > 0) (void) ffs_syncvnode(vp, MNT_WAIT); else launched_async_io = 1; @@ -2375,7 +2394,8 @@ ffs_copyonwrite(devvp, bp) if ((error = readblock(vp, cbp, lbn)) != 0) { bzero(cbp->b_data, fs->fs_bsize); bawrite(cbp); - if (dopersistence && ip->i_effnlink > 0) + if ((devvp == bp->b_vp || bp->b_vp->v_type == VDIR || + dopersistence) && ip->i_effnlink > 0) (void) ffs_syncvnode(vp, MNT_WAIT); else launched_async_io = 1; @@ -2386,12 +2406,16 @@ ffs_copyonwrite(devvp, bp) /* * Note that we need to synchronously write snapshots that * have not been unlinked, and hence will be visible after - * a crash, to ensure their integrity. + * a crash, to ensure their integrity. At a minimum we + * ensure the integrity of the filesystem metadata, but + * use the dopersistence sysctl-setable flag to decide on + * the persistence needed for file content data. */ if (savedcbp) { vp = savedcbp->b_vp; bawrite(savedcbp); - if (dopersistence && VTOI(vp)->i_effnlink > 0) + if ((devvp == bp->b_vp || bp->b_vp->v_type == VDIR || + dopersistence) && VTOI(vp)->i_effnlink > 0) (void) ffs_syncvnode(vp, MNT_WAIT); else launched_async_io = 1; Modified: head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- head/sys/ufs/ffs/ffs_softdep.c Wed Jun 15 22:41:55 2011 (r223126) +++ head/sys/ufs/ffs/ffs_softdep.c Wed Jun 15 23:19:09 2011 (r223127) @@ -5172,6 +5172,7 @@ newfreefrag(ip, blkno, size, lbn) freefrag->ff_state = ATTACHED; LIST_INIT(&freefrag->ff_jwork); freefrag->ff_inum = ip->i_number; + freefrag->ff_vtype = ITOV(ip)->v_type; freefrag->ff_blkno = blkno; freefrag->ff_fragsize = size; @@ -5216,7 +5217,7 @@ handle_workitem_freefrag(freefrag) } FREE_LOCK(&lk); ffs_blkfree(ump, ump->um_fs, ump->um_devvp, freefrag->ff_blkno, - freefrag->ff_fragsize, freefrag->ff_inum, &wkhd); + freefrag->ff_fragsize, freefrag->ff_inum, freefrag->ff_vtype, &wkhd); ACQUIRE_LOCK(&lk); WORKITEM_FREE(freefrag, D_FREEFRAG); FREE_LOCK(&lk); @@ -5724,6 +5725,7 @@ newfreeblks(mp, ip) freeblks->fb_state = ATTACHED; freeblks->fb_uid = ip->i_uid; freeblks->fb_inum = ip->i_number; + freeblks->fb_vtype = ITOV(ip)->v_type; freeblks->fb_modrev = DIP(ip, i_modrev); freeblks->fb_devvp = ip->i_devvp; freeblks->fb_chkcnt = 0; @@ -7263,7 +7265,7 @@ freework_freeblock(freework) freeblks->fb_freecnt += btodb(bsize); FREE_LOCK(&lk); ffs_blkfree(ump, fs, freeblks->fb_devvp, freework->fw_blkno, bsize, - freeblks->fb_inum, &wkhd); + freeblks->fb_inum, freeblks->fb_vtype, &wkhd); ACQUIRE_LOCK(&lk); /* * The jnewblk will be discarded and the bits in the map never @@ -7669,7 +7671,8 @@ indir_trunc(freework, dbn, lbn) freedeps++; } ffs_blkfree(ump, fs, freeblks->fb_devvp, nb, - fs->fs_bsize, freeblks->fb_inum, &wkhd); + fs->fs_bsize, freeblks->fb_inum, + freeblks->fb_vtype, &wkhd); } } if (goingaway) { @@ -7702,7 +7705,7 @@ indir_trunc(freework, dbn, lbn) fs_pendingblocks += nblocks; dbn = dbtofsb(fs, dbn); ffs_blkfree(ump, fs, freeblks->fb_devvp, dbn, fs->fs_bsize, - freeblks->fb_inum, NULL); + freeblks->fb_inum, freeblks->fb_vtype, NULL); /* Non SUJ softdep does single-threaded truncations. */ freeblks->fb_freecnt += fs_pendingblocks; if (freework->fw_blkno == dbn) { Modified: head/sys/ufs/ffs/softdep.h ============================================================================== --- head/sys/ufs/ffs/softdep.h Wed Jun 15 22:41:55 2011 (r223126) +++ head/sys/ufs/ffs/softdep.h Wed Jun 15 23:19:09 2011 (r223127) @@ -511,6 +511,7 @@ struct freefrag { ufs2_daddr_t ff_blkno; /* fragment physical block number */ long ff_fragsize; /* size of fragment being deleted */ ino_t ff_inum; /* owning inode number */ + enum vtype ff_vtype; /* owning inode's file type */ }; /* @@ -538,6 +539,7 @@ struct freeblks { ufs2_daddr_t fb_chkcnt; /* Expected blks released. */ ufs2_daddr_t fb_freecnt; /* Actual blocks released. */ ino_t fb_inum; /* inode owner of blocks */ + enum vtype fb_vtype; /* inode owner's file type */ uid_t fb_uid; /* uid of previous owner of blocks */ int fb_ref; /* Children outstanding. */ int fb_cgwait; /* cg writes outstanding. */ From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 23:22:36 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A20E106564A; Wed, 15 Jun 2011 23:22:36 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 30D768FC13; Wed, 15 Jun 2011 23:22:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FNMa9j002690; Wed, 15 Jun 2011 23:22:36 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FNMafx002688; Wed, 15 Jun 2011 23:22:36 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201106152322.p5FNMafx002688@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 15 Jun 2011 23:22:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223128 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 23:22:36 -0000 Author: rodrigc Date: Wed Jun 15 23:22:35 2011 New Revision: 223128 URL: http://svn.freebsd.org/changeset/base/223128 Log: Bring back following change which was undone in previous commit: ------------------------------------------------------------------------ r172854 | marius | 2007-10-21 10:03:18 -0700 (Sun, 21 Oct 2007) | 16 lines Changed paths: M /head/lib/libstand/tftp.c - Given that we tell the compiler that struct ip is packed and 32-bit aligned, GCC 4.2.1 also generates code for sendudp() that assumes this alignment. GCC 4.2.1 however doesn't 32-bit align wbuf, causing the loader to crash due to an unaligned access of wbuf in sendudp() when netbooting sparc64. Solve this by specifying wbuf as packed and 32-bit aligned, too. As for lastdata and readudp() this currently is no issue when compiled with GCC 4.2.1, though give lastdata the same treatment as wbuf for consistency and possibility of being affected in the future. [1] - Sprinkle const on a lookup table. ------------------------------------------------------------------------ Modified: head/lib/libstand/tftp.c Modified: head/lib/libstand/tftp.c ============================================================================== --- head/lib/libstand/tftp.c Wed Jun 15 23:19:09 2011 (r223127) +++ head/lib/libstand/tftp.c Wed Jun 15 23:22:35 2011 (r223128) @@ -118,10 +118,10 @@ struct tftp_handle { u_char header[HEADER_SIZE]; struct tftphdr t; u_char space[TFTP_MAX_BLKSIZE]; - } lastdata; + } __packed __aligned(4) lastdata; }; -static int tftperrors[8] = { +static const int tftperrors[8] = { 0, /* ??? */ ENOENT, EPERM, @@ -208,7 +208,7 @@ tftp_makereq(struct tftp_handle *h) u_char header[HEADER_SIZE]; struct tftphdr t; u_char space[FNAME_SIZE + 6]; - } wbuf; + } __packed __aligned(4) wbuf; char *wtail; int l; ssize_t res; @@ -286,7 +286,7 @@ tftp_getnextblock(struct tftp_handle *h) struct { u_char header[HEADER_SIZE]; struct tftphdr t; - } wbuf; + } __packed __aligned(4) wbuf; char *wtail; int res; struct tftphdr *t; From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 23:38:15 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE96D106564A; Wed, 15 Jun 2011 23:38:15 +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 AEDE58FC14; Wed, 15 Jun 2011 23:38:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FNcFJf003177; Wed, 15 Jun 2011 23:38:15 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FNcFlN003175; Wed, 15 Jun 2011 23:38:15 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201106152338.p5FNcFlN003175@svn.freebsd.org> From: Nathan Whitehorn Date: Wed, 15 Jun 2011 23:38:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223129 - head/release X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 23:38:15 -0000 Author: nwhitehorn Date: Wed Jun 15 23:38:15 2011 New Revision: 223129 URL: http://svn.freebsd.org/changeset/base/223129 Log: Do not install the rescue tools onto the install CD. Since it is read only, they are very unlikely to be needed and take up a great deal of space. Modified: head/release/Makefile Modified: head/release/Makefile ============================================================================== --- head/release/Makefile Wed Jun 15 23:22:35 2011 (r223128) +++ head/release/Makefile Wed Jun 15 23:38:15 2011 (r223129) @@ -110,7 +110,8 @@ reldoc: system: packagesystem # Install system -mkdir ${.OBJDIR}/release - cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution DESTDIR=${.OBJDIR}/release + cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \ + DESTDIR=${.OBJDIR}/release WITHOUT_RESCUE=1 -rm ${.OBJDIR}/release/boot/kernel/*.symbols # Copy distfiles mkdir ${.OBJDIR}/release/usr/freebsd-dist From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 23:50:27 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D68F0106564A; Wed, 15 Jun 2011 23:50:27 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C58C18FC18; Wed, 15 Jun 2011 23:50:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FNoR1k003659; Wed, 15 Jun 2011 23:50:27 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FNoR4f003652; Wed, 15 Jun 2011 23:50:27 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201106152350.p5FNoR4f003652@svn.freebsd.org> From: Michael Tuexen Date: Wed, 15 Jun 2011 23:50:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223132 - in head: lib/libc/net sys/netinet X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 23:50:27 -0000 Author: tuexen Date: Wed Jun 15 23:50:27 2011 New Revision: 223132 URL: http://svn.freebsd.org/changeset/base/223132 Log: Add support for the newly added SCTP API. In particular add support for: * SCTP_SNDINFO, SCTP_PRINFO, SCTP_AUTHINFO, SCTP_DSTADDRV4, and SCTP_DSTADDRV6 cmsgs. * SCTP_NXTINFO and SCTP_RCVINFO cmgs. * SCTP_EVENT, SCTP_RECVRCVINFO, SCTP_RECVNXTINFO and SCTP_DEFAULT_SNDINFO socket option. * Special association ids (SCTP_FUTURE_ASSOC, ...) * sctp_recvv() and sctp_sendv() functions. MFC after: 1 month. Modified: head/lib/libc/net/sctp_sys_calls.c head/sys/netinet/sctp.h head/sys/netinet/sctp_auth.c head/sys/netinet/sctp_indata.c head/sys/netinet/sctp_output.c head/sys/netinet/sctp_pcb.c head/sys/netinet/sctp_structs.h head/sys/netinet/sctp_uio.h head/sys/netinet/sctp_usrreq.c head/sys/netinet/sctp_var.h head/sys/netinet/sctputil.c Modified: head/lib/libc/net/sctp_sys_calls.c ============================================================================== --- head/lib/libc/net/sctp_sys_calls.c Wed Jun 15 23:45:35 2011 (r223131) +++ head/lib/libc/net/sctp_sys_calls.c Wed Jun 15 23:50:27 2011 (r223132) @@ -141,7 +141,7 @@ in6_sin6_2_sin(struct sockaddr_in *sin, int sctp_getaddrlen(sa_family_t family) { - int error, sd; + int ret, sd; socklen_t siz; struct sctp_assoc_value av; @@ -151,13 +151,15 @@ sctp_getaddrlen(sa_family_t family) sd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP); #elif defined(AF_INET6) sd = socket(AF_INET6, SOCK_SEQPACKET, IPPROTO_SCTP); +#else + sd = -1; #endif if (sd == -1) { return (-1); } - error = getsockopt(sd, IPPROTO_SCTP, SCTP_GET_ADDR_LEN, &av, &siz); + ret = getsockopt(sd, IPPROTO_SCTP, SCTP_GET_ADDR_LEN, &av, &siz); close(sd); - if (error == 0) { + if (ret == 0) { return ((int)av.assoc_value); } else { return (-1); @@ -402,6 +404,9 @@ sctp_opt_info(int sd, sctp_assoc_t id, i case SCTP_TIMEOUTS: ((struct sctp_timeouts *)arg)->stimo_assoc_id = id; break; + case SCTP_EVENT: + ((struct sctp_event *)arg)->se_assoc_id = id; + break; default: break; } @@ -919,32 +924,259 @@ sctp_recvmsg(int s, #endif } +ssize_t +sctp_recvv(int sd, + const struct iovec *iov, + int iovlen, + struct sockaddr *from, + socklen_t * fromlen, + void *info, + socklen_t * infolen, + unsigned int *infotype, + int *flags) +{ + char ctlbuf[SCTP_CONTROL_VEC_SIZE_RCV]; + struct msghdr msg; + struct cmsghdr *cmsg; + ssize_t n; + struct sctp_rcvinfo *rcvinfo; + struct sctp_nxtinfo *nxtinfo; -#if defined(HAVE_SCTP_PEELOFF_SOCKOPT) -#include + if (infotype) { + *infotype = SCTP_RECVV_NOINFO; + } + msg.msg_name = from; + if (fromlen == NULL) { + msg.msg_namelen = 0; + } else { + msg.msg_namelen = *fromlen; + } + msg.msg_iov = (struct iovec *)iov; + msg.msg_iovlen = iovlen; + msg.msg_control = ctlbuf; + msg.msg_controllen = sizeof(ctlbuf); + errno = 0; + n = recvmsg(sd, &msg, *flags); + *flags = msg.msg_flags; + if ((n > 0) && + (msg.msg_controllen > 0) && + (infotype != NULL) && + (infolen != NULL) && + (*infolen > 0)) { + rcvinfo = NULL; + nxtinfo = NULL; + for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) { + if (cmsg->cmsg_level != IPPROTO_SCTP) { + continue; + } + if (cmsg->cmsg_type == SCTP_RCVINFO) { + rcvinfo = (struct sctp_rcvinfo *)CMSG_DATA(cmsg); + } + if (cmsg->cmsg_type == SCTP_NXTINFO) { + nxtinfo = (struct sctp_nxtinfo *)CMSG_DATA(cmsg); + } + if (rcvinfo && nxtinfo) { + break; + } + } + if (rcvinfo) { + if (nxtinfo) { + if (*infolen >= sizeof(struct sctp_recvv_rn)) { + struct sctp_recvv_rn *rn_info; + + rn_info = (struct sctp_recvv_rn *)info; + rn_info->recvv_rcvinfo = *rcvinfo; + rn_info->recvv_nxtinfo = *nxtinfo; + *infolen = (socklen_t) sizeof(struct sctp_recvv_rn); + *infotype = SCTP_RECVV_RN; + } + } else { + if (*infolen >= sizeof(struct sctp_rcvinfo)) { + memcpy(info, rcvinfo, sizeof(struct sctp_rcvinfo)); + *infolen = (socklen_t) sizeof(struct sctp_rcvinfo); + *infotype = SCTP_RECVV_RCVINFO; + } + } + } else if (nxtinfo) { + if (*infolen >= sizeof(struct sctp_rcvinfo)) { + memcpy(info, nxtinfo, sizeof(struct sctp_nxtinfo)); + *infolen = (socklen_t) sizeof(struct sctp_nxtinfo); + *infotype = SCTP_RECVV_NXTINFO; + } + } + } + return (n); +} -int -sctp_peeloff(int sd, sctp_assoc_t assoc_id) +ssize_t +sctp_sendv(int sd, + const struct iovec *iov, int iovcnt, + struct sockaddr *addrs, int addrcnt, + void *info, socklen_t infolen, unsigned int infotype, + int flags) { - struct sctp_peeloff_opt peeloff; - int result; - socklen_t optlen; - - /* set in the socket option params */ - memset(&peeloff, 0, sizeof(peeloff)); - peeloff.s = sd; - peeloff.assoc_id = assoc_id; - optlen = sizeof(peeloff); - result = getsockopt(sd, IPPROTO_SCTP, SCTP_PEELOFF, (void *)&peeloff, &optlen); + ssize_t ret; + int i; + size_t addr_len; + struct sctp_sendv_spa *spa_info; + struct msghdr msg; + struct cmsghdr *cmsg; + char *cmsgbuf; + struct sockaddr *addr; + struct sockaddr_in *addr_in; + struct sockaddr_in6 *addr_in6; - if (result < 0) { + if ((addrcnt < 0) || (iovcnt < 0)) { + errno = EINVAL; + return (-1); + } + cmsgbuf = malloc(CMSG_SPACE(sizeof(struct sctp_sndinfo)) + + CMSG_SPACE(sizeof(struct sctp_prinfo)) + + CMSG_SPACE(sizeof(struct sctp_authinfo)) + + addrcnt * CMSG_SPACE(sizeof(struct in6_addr))); + if (cmsgbuf == NULL) { + errno = ENOBUFS; return (-1); + } + msg.msg_control = cmsgbuf; + msg.msg_controllen = 0; + cmsg = (struct cmsghdr *)cmsgbuf; + switch (infotype) { + case SCTP_SENDV_SNDINFO: + if (infolen < sizeof(struct sctp_sndinfo)) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_SNDINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_sndinfo)); + memcpy(CMSG_DATA(cmsg), info, sizeof(struct sctp_sndinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_sndinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_sndinfo))); + break; + case SCTP_SENDV_PRINFO: + if (infolen < sizeof(struct sctp_prinfo)) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_PRINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_prinfo)); + memcpy(CMSG_DATA(cmsg), info, sizeof(struct sctp_prinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_prinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_prinfo))); + break; + case SCTP_SENDV_AUTHINFO: + if (infolen < sizeof(struct sctp_authinfo)) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_AUTHINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_authinfo)); + memcpy(CMSG_DATA(cmsg), info, sizeof(struct sctp_authinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_authinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_authinfo))); + break; + case SCTP_SENDV_SPA: + if (infolen < sizeof(struct sctp_sendv_spa)) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + spa_info = (struct sctp_sendv_spa *)info; + if (spa_info->sendv_flags & SCTP_SEND_SNDINFO_VALID) { + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_SNDINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_sndinfo)); + memcpy(CMSG_DATA(cmsg), &spa_info->sendv_sndinfo, sizeof(struct sctp_sndinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_sndinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_sndinfo))); + } + if (spa_info->sendv_flags & SCTP_SEND_PRINFO_VALID) { + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_PRINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_prinfo)); + memcpy(CMSG_DATA(cmsg), &spa_info->sendv_prinfo, sizeof(struct sctp_prinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_prinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_prinfo))); + } + if (spa_info->sendv_flags & SCTP_SEND_AUTHINFO_VALID) { + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_AUTHINFO; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct sctp_authinfo)); + memcpy(CMSG_DATA(cmsg), &spa_info->sendv_authinfo, sizeof(struct sctp_authinfo)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_authinfo)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_authinfo))); + } + break; + default: + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + addr = addrs; + if (addrcnt == 1) { + msg.msg_name = addr; + switch (addr->sa_family) { + case AF_INET: + msg.msg_namelen = sizeof(struct sockaddr_in); + break; + case AF_INET6: + msg.msg_namelen = sizeof(struct sockaddr_in6); + break; + default: + free(cmsgbuf); + errno = EINVAL; + return (-1); + } } else { - return (peeloff.new_sd); + msg.msg_name = NULL; + msg.msg_namelen = 0; + for (i = 0; i < addrcnt; i++) { + switch (addr->sa_family) { + case AF_INET: + addr_len = sizeof(struct sockaddr_in); + addr_in = (struct sockaddr_in *)addr; + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_DSTADDRV4; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_addr)); + memcpy(CMSG_DATA(cmsg), &addr_in->sin_addr, sizeof(struct in_addr)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct in_addr)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct in_addr))); + break; + case AF_INET6: + addr_len = sizeof(struct sockaddr_in6); + addr_in6 = (struct sockaddr_in6 *)addr; + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_DSTADDRV6; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_addr)); + memcpy(CMSG_DATA(cmsg), &addr_in6->sin6_addr, sizeof(struct in6_addr)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct in6_addr)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct in6_addr))); + break; + default: + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + addr = (struct sockaddr *)((caddr_t)addr + addr_len); + } } + if (msg.msg_controllen == 0) { + msg.msg_control = NULL; + } + msg.msg_iov = (struct iovec *)iov; + msg.msg_iovlen = iovcnt; + msg.msg_flags = 0; + ret = sendmsg(sd, &msg, flags); + free(cmsgbuf); + return (ret); } -#endif #if !defined(SYS_sctp_peeloff) && !defined(HAVE_SCTP_PEELOFF_SOCKOPT) Modified: head/sys/netinet/sctp.h ============================================================================== --- head/sys/netinet/sctp.h Wed Jun 15 23:45:35 2011 (r223131) +++ head/sys/netinet/sctp.h Wed Jun 15 23:50:27 2011 (r223132) @@ -91,7 +91,7 @@ struct sctp_paramhdr { #define SCTP_PEER_ADDR_PARAMS 0x0000000a #define SCTP_DEFAULT_SEND_PARAM 0x0000000b /* ancillary data/notification interest options */ -#define SCTP_EVENTS 0x0000000c +#define SCTP_EVENTS 0x0000000c /* deprecated */ /* Without this applied we will give V4 and V6 addresses on a V6 socket */ #define SCTP_I_WANT_MAPPED_V4_ADDR 0x0000000d #define SCTP_MAXSEG 0x0000000e @@ -114,6 +114,10 @@ struct sctp_paramhdr { #define SCTP_EXPLICIT_EOR 0x0000001b #define SCTP_REUSE_PORT 0x0000001c /* rw */ #define SCTP_AUTH_DEACTIVATE_KEY 0x0000001d +#define SCTP_EVENT 0x0000001e +#define SCTP_RECVRCVINFO 0x0000001f +#define SCTP_RECVNXTINFO 0x00000020 +#define SCTP_DEFAULT_SNDINFO 0x00000021 /* * read-only options @@ -490,7 +494,7 @@ struct sctp_error_unrecognized_chunk { /* * PCB Features (in sctp_features bitmask) */ -#define SCTP_PCB_FLAGS_EXT_RCVINFO 0x00000002 +#define SCTP_PCB_FLAGS_EXT_RCVINFO 0x00000002 /* deprecated */ #define SCTP_PCB_FLAGS_DONOT_HEARTBEAT 0x00000004 #define SCTP_PCB_FLAGS_FRAG_INTERLEAVE 0x00000008 #define SCTP_PCB_FLAGS_INTERLEAVE_STRMS 0x00000010 @@ -500,7 +504,7 @@ struct sctp_error_unrecognized_chunk { /* socket options */ #define SCTP_PCB_FLAGS_NODELAY 0x00000100 #define SCTP_PCB_FLAGS_AUTOCLOSE 0x00000200 -#define SCTP_PCB_FLAGS_RECVDATAIOEVNT 0x00000400 +#define SCTP_PCB_FLAGS_RECVDATAIOEVNT 0x00000400 /* deprecated */ #define SCTP_PCB_FLAGS_RECVASSOCEVNT 0x00000800 #define SCTP_PCB_FLAGS_RECVPADDREVNT 0x00001000 #define SCTP_PCB_FLAGS_RECVPEERERR 0x00002000 @@ -516,6 +520,9 @@ struct sctp_error_unrecognized_chunk { #define SCTP_PCB_FLAGS_MULTIPLE_ASCONFS 0x01000000 #define SCTP_PCB_FLAGS_PORTREUSE 0x02000000 #define SCTP_PCB_FLAGS_DRYEVNT 0x04000000 +#define SCTP_PCB_FLAGS_RECVRCVINFO 0x08000000 +#define SCTP_PCB_FLAGS_RECVNXTINFO 0x10000000 + /*- * mobility_features parameters (by micchie).Note * these features are applied against the Modified: head/sys/netinet/sctp_auth.c ============================================================================== --- head/sys/netinet/sctp_auth.c Wed Jun 15 23:45:35 2011 (r223131) +++ head/sys/netinet/sctp_auth.c Wed Jun 15 23:50:27 2011 (r223132) @@ -1866,7 +1866,7 @@ sctp_notify_authentication(struct sctp_t /* If the socket is gone we are out of here */ return; } - if (sctp_is_feature_off(stcb->sctp_ep, SCTP_PCB_FLAGS_AUTHEVNT)) + if (sctp_stcb_is_feature_off(stcb->sctp_ep, stcb, SCTP_PCB_FLAGS_AUTHEVNT)) /* event not enabled */ return; Modified: head/sys/netinet/sctp_indata.c ============================================================================== --- head/sys/netinet/sctp_indata.c Wed Jun 15 23:45:35 2011 (r223131) +++ head/sys/netinet/sctp_indata.c Wed Jun 15 23:50:27 2011 (r223132) @@ -201,48 +201,110 @@ failed_build: struct mbuf * -sctp_build_ctl_nchunk(struct sctp_inpcb *inp, - struct sctp_sndrcvinfo *sinfo) +sctp_build_ctl_nchunk(struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) { + struct sctp_extrcvinfo *seinfo; struct sctp_sndrcvinfo *outinfo; + struct sctp_rcvinfo *rcvinfo; + struct sctp_nxtinfo *nxtinfo; struct cmsghdr *cmh; struct mbuf *ret; int len; - int use_extended = 0; + int use_extended; + int provide_nxt; - if (sctp_is_feature_off(inp, SCTP_PCB_FLAGS_RECVDATAIOEVNT)) { - /* user does not want the sndrcv ctl */ + if (sctp_is_feature_off(inp, SCTP_PCB_FLAGS_RECVDATAIOEVNT) && + sctp_is_feature_off(inp, SCTP_PCB_FLAGS_RECVRCVINFO) && + sctp_is_feature_off(inp, SCTP_PCB_FLAGS_RECVNXTINFO)) { + /* user does not want any ancillary data */ return (NULL); } - if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXT_RCVINFO)) { - use_extended = 1; - len = CMSG_LEN(sizeof(struct sctp_extrcvinfo)); + len = 0; + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVRCVINFO)) { + len += CMSG_SPACE(sizeof(struct sctp_rcvinfo)); + } + seinfo = (struct sctp_extrcvinfo *)sinfo; + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVNXTINFO) && + (seinfo->sreinfo_next_flags & SCTP_NEXT_MSG_AVAIL)) { + provide_nxt = 1; + len += CMSG_SPACE(sizeof(struct sctp_rcvinfo)); } else { - len = CMSG_LEN(sizeof(struct sctp_sndrcvinfo)); + provide_nxt = 0; + } + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVDATAIOEVNT)) { + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_EXT_RCVINFO)) { + use_extended = 1; + len += CMSG_SPACE(sizeof(struct sctp_extrcvinfo)); + } else { + use_extended = 0; + len += CMSG_SPACE(sizeof(struct sctp_sndrcvinfo)); + } + } else { + use_extended = 0; } - - ret = sctp_get_mbuf_for_msg(len, - 0, M_DONTWAIT, 1, MT_DATA); - + ret = sctp_get_mbuf_for_msg(len, 0, M_DONTWAIT, 1, MT_DATA); if (ret == NULL) { /* No space */ return (ret); } - /* We need a CMSG header followed by the struct */ + SCTP_BUF_LEN(ret) = 0; + + /* We need a CMSG header followed by the struct */ cmh = mtod(ret, struct cmsghdr *); - outinfo = (struct sctp_sndrcvinfo *)CMSG_DATA(cmh); - cmh->cmsg_level = IPPROTO_SCTP; - if (use_extended) { - cmh->cmsg_type = SCTP_EXTRCV; - cmh->cmsg_len = len; - memcpy(outinfo, sinfo, len); - } else { - cmh->cmsg_type = SCTP_SNDRCV; - cmh->cmsg_len = len; - *outinfo = *sinfo; + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVRCVINFO)) { + cmh->cmsg_level = IPPROTO_SCTP; + cmh->cmsg_len = CMSG_LEN(sizeof(struct sctp_rcvinfo)); + cmh->cmsg_type = SCTP_RCVINFO; + rcvinfo = (struct sctp_rcvinfo *)CMSG_DATA(cmh); + rcvinfo->rcv_sid = sinfo->sinfo_stream; + rcvinfo->rcv_ssn = sinfo->sinfo_ssn; + rcvinfo->rcv_flags = sinfo->sinfo_flags; + rcvinfo->rcv_ppid = sinfo->sinfo_ppid; + rcvinfo->rcv_tsn = sinfo->sinfo_tsn; + rcvinfo->rcv_cumtsn = sinfo->sinfo_cumtsn; + rcvinfo->rcv_context = sinfo->sinfo_context; + rcvinfo->rcv_assoc_id = sinfo->sinfo_assoc_id; + cmh = (struct cmsghdr *)((caddr_t)cmh + CMSG_SPACE(sizeof(struct sctp_rcvinfo))); + SCTP_BUF_LEN(ret) += CMSG_SPACE(sizeof(struct sctp_rcvinfo)); + } + if (provide_nxt) { + cmh->cmsg_level = IPPROTO_SCTP; + cmh->cmsg_len = CMSG_LEN(sizeof(struct sctp_nxtinfo)); + cmh->cmsg_type = SCTP_NXTINFO; + nxtinfo = (struct sctp_nxtinfo *)CMSG_DATA(cmh); + nxtinfo->nxt_sid = seinfo->sreinfo_next_stream; + nxtinfo->nxt_flags = 0; + if (seinfo->sreinfo_next_flags & SCTP_NEXT_MSG_IS_UNORDERED) { + nxtinfo->nxt_flags |= SCTP_UNORDERED; + } + if (seinfo->sreinfo_next_flags & SCTP_NEXT_MSG_IS_NOTIFICATION) { + nxtinfo->nxt_flags |= SCTP_NOTIFICATION; + } + if (seinfo->sreinfo_next_flags & SCTP_NEXT_MSG_ISCOMPLETE) { + nxtinfo->nxt_flags |= SCTP_COMPLETE; + } + nxtinfo->nxt_ppid = seinfo->sreinfo_next_ppid; + nxtinfo->nxt_length = seinfo->sreinfo_next_length; + nxtinfo->nxt_assoc_id = seinfo->sreinfo_next_aid; + cmh = (struct cmsghdr *)((caddr_t)cmh + CMSG_SPACE(sizeof(struct sctp_nxtinfo))); + SCTP_BUF_LEN(ret) += CMSG_SPACE(sizeof(struct sctp_nxtinfo)); + } + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_RECVDATAIOEVNT)) { + cmh->cmsg_level = IPPROTO_SCTP; + outinfo = (struct sctp_sndrcvinfo *)CMSG_DATA(cmh); + if (use_extended) { + cmh->cmsg_len = CMSG_LEN(sizeof(struct sctp_extrcvinfo)); + cmh->cmsg_type = SCTP_EXTRCV; + memcpy(outinfo, sinfo, sizeof(struct sctp_extrcvinfo)); + SCTP_BUF_LEN(ret) += CMSG_SPACE(sizeof(struct sctp_extrcvinfo)); + } else { + cmh->cmsg_len = CMSG_LEN(sizeof(struct sctp_sndrcvinfo)); + cmh->cmsg_type = SCTP_SNDRCV; + *outinfo = *sinfo; + SCTP_BUF_LEN(ret) += CMSG_SPACE(sizeof(struct sctp_sndrcvinfo)); + } } - SCTP_BUF_LEN(ret) = cmh->cmsg_len; return (ret); } Modified: head/sys/netinet/sctp_output.c ============================================================================== --- head/sys/netinet/sctp_output.c Wed Jun 15 23:45:35 2011 (r223131) +++ head/sys/netinet/sctp_output.c Wed Jun 15 23:50:27 2011 (r223132) @@ -3355,54 +3355,338 @@ sctp_source_address_selection(struct sct } static int -sctp_find_cmsg(int c_type, void *data, struct mbuf *control, int cpsize) +sctp_find_cmsg(int c_type, void *data, struct mbuf *control, size_t cpsize) { struct cmsghdr cmh; - int tlen, at; + int tlen, at, found; + struct sctp_sndinfo sndinfo; + struct sctp_prinfo prinfo; + struct sctp_authinfo authinfo; tlen = SCTP_BUF_LEN(control); at = 0; + found = 0; /* * Independent of how many mbufs, find the c_type inside the control * structure and copy out the data. */ while (at < tlen) { if ((tlen - at) < (int)CMSG_ALIGN(sizeof(cmh))) { - /* not enough room for one more we are done. */ - return (0); + /* There is not enough room for one more. */ + return (found); } m_copydata(control, at, sizeof(cmh), (caddr_t)&cmh); + if (cmh.cmsg_len < CMSG_ALIGN(sizeof(struct cmsghdr))) { + /* We dont't have a complete CMSG header. */ + return (found); + } if (((int)cmh.cmsg_len + at) > tlen) { - /* - * this is real messed up since there is not enough - * data here to cover the cmsg header. We are done. - */ - return (0); + /* We don't have the complete CMSG. */ + return (found); } if ((cmh.cmsg_level == IPPROTO_SCTP) && - (c_type == cmh.cmsg_type)) { - /* found the one we want, copy it out */ - at += CMSG_ALIGN(sizeof(struct cmsghdr)); - if ((int)(cmh.cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) < cpsize) { - /* - * space of cmsg_len after header not big - * enough - */ - return (0); + ((c_type == cmh.cmsg_type) || + ((c_type == SCTP_SNDRCV) && + ((cmh.cmsg_type == SCTP_SNDINFO) || + (cmh.cmsg_type == SCTP_PRINFO) || + (cmh.cmsg_type == SCTP_AUTHINFO))))) { + if (c_type == cmh.cmsg_type) { + if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) < cpsize) { + return (found); + } + /* It is exactly what we want. Copy it out. */ + m_copydata(control, at + CMSG_ALIGN(sizeof(struct cmsghdr)), cpsize, (caddr_t)data); + return (1); + } else { + struct sctp_sndrcvinfo *sndrcvinfo; + + sndrcvinfo = (struct sctp_sndrcvinfo *)data; + if (found == 0) { + if (cpsize < sizeof(struct sctp_sndrcvinfo)) { + return (found); + } + memset(sndrcvinfo, 0, sizeof(struct sctp_sndrcvinfo)); + } + switch (cmh.cmsg_type) { + case SCTP_SNDINFO: + if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) < sizeof(struct sctp_sndinfo)) { + return (found); + } + m_copydata(control, at + CMSG_ALIGN(sizeof(struct cmsghdr)), sizeof(struct sctp_sndinfo), (caddr_t)&sndinfo); + sndrcvinfo->sinfo_stream = sndinfo.snd_sid; + sndrcvinfo->sinfo_flags = sndinfo.snd_flags; + sndrcvinfo->sinfo_ppid = sndinfo.snd_ppid; + sndrcvinfo->sinfo_context = sndinfo.snd_context; + sndrcvinfo->sinfo_assoc_id = sndinfo.snd_assoc_id; + break; + case SCTP_PRINFO: + if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) < sizeof(struct sctp_prinfo)) { + return (found); + } + m_copydata(control, at + CMSG_ALIGN(sizeof(struct cmsghdr)), sizeof(struct sctp_prinfo), (caddr_t)&prinfo); + sndrcvinfo->sinfo_timetolive = prinfo.pr_value; + sndrcvinfo->sinfo_flags |= prinfo.pr_policy; + break; + case SCTP_AUTHINFO: + if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) < sizeof(struct sctp_authinfo)) { + return (found); + } + m_copydata(control, at + CMSG_ALIGN(sizeof(struct cmsghdr)), sizeof(struct sctp_authinfo), (caddr_t)&authinfo); + sndrcvinfo->sinfo_keynumber_valid = 1; + sndrcvinfo->sinfo_keynumber = authinfo.auth_keyid; + break; + default: + return (found); + } + found = 1; } - m_copydata(control, at, cpsize, data); + } + at += CMSG_ALIGN(cmh.cmsg_len); + } + return (found); +} + +static int +sctp_process_cmsgs_for_init(struct sctp_tcb *stcb, struct mbuf *control, int *error) +{ + struct cmsghdr cmh; + int tlen, at; + struct sctp_initmsg initmsg; + +#ifdef INET + struct sockaddr_in sin; + +#endif +#ifdef INET6 + struct sockaddr_in6 sin6; + +#endif + + tlen = SCTP_BUF_LEN(control); + at = 0; + while (at < tlen) { + if ((tlen - at) < (int)CMSG_ALIGN(sizeof(cmh))) { + /* There is not enough room for one more. */ + *error = EINVAL; return (1); - } else { - at += CMSG_ALIGN(cmh.cmsg_len); - if (cmh.cmsg_len == 0) { + } + m_copydata(control, at, sizeof(cmh), (caddr_t)&cmh); + if (cmh.cmsg_len < CMSG_ALIGN(sizeof(struct cmsghdr))) { + /* We dont't have a complete CMSG header. */ + *error = EINVAL; + return (1); + } + if (((int)cmh.cmsg_len + at) > tlen) { + /* We don't have the complete CMSG. */ + *error = EINVAL; + return (1); + } + if (cmh.cmsg_level == IPPROTO_SCTP) { + switch (cmh.cmsg_type) { + case SCTP_INIT: + if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) < sizeof(struct sctp_initmsg)) { + *error = EINVAL; + return (1); + } + m_copydata(control, at + CMSG_ALIGN(sizeof(struct cmsghdr)), sizeof(struct sctp_initmsg), (caddr_t)&initmsg); + if (initmsg.sinit_max_attempts) + stcb->asoc.max_init_times = initmsg.sinit_max_attempts; + if (initmsg.sinit_num_ostreams) + stcb->asoc.pre_open_streams = initmsg.sinit_num_ostreams; + if (initmsg.sinit_max_instreams) + stcb->asoc.max_inbound_streams = initmsg.sinit_max_instreams; + if (initmsg.sinit_max_init_timeo) + stcb->asoc.initial_init_rto_max = initmsg.sinit_max_init_timeo; + if (stcb->asoc.streamoutcnt < stcb->asoc.pre_open_streams) { + struct sctp_stream_out *tmp_str; + unsigned int i; + + /* Default is NOT correct */ + SCTPDBG(SCTP_DEBUG_OUTPUT1, "Ok, default:%d pre_open:%d\n", + stcb->asoc.streamoutcnt, stcb->asoc.pre_open_streams); + SCTP_TCB_UNLOCK(stcb); + SCTP_MALLOC(tmp_str, + struct sctp_stream_out *, + (stcb->asoc.pre_open_streams * sizeof(struct sctp_stream_out)), + SCTP_M_STRMO); + SCTP_TCB_LOCK(stcb); + if (tmp_str != NULL) { + SCTP_FREE(stcb->asoc.strmout, SCTP_M_STRMO); + stcb->asoc.strmout = tmp_str; + stcb->asoc.strm_realoutsize = stcb->asoc.streamoutcnt = stcb->asoc.pre_open_streams; + } else { + stcb->asoc.pre_open_streams = stcb->asoc.streamoutcnt; + } + for (i = 0; i < stcb->asoc.streamoutcnt; i++) { + stcb->asoc.strmout[i].next_sequence_sent = 0; + TAILQ_INIT(&stcb->asoc.strmout[i].outqueue); + stcb->asoc.strmout[i].stream_no = i; + stcb->asoc.strmout[i].last_msg_incomplete = 0; + stcb->asoc.ss_functions.sctp_ss_init_stream(&stcb->asoc.strmout[i], NULL); + } + } + break; +#ifdef INET + case SCTP_DSTADDRV4: + if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) < sizeof(struct in_addr)) { + *error = EINVAL; + return (1); + } + memset(&sin, 0, sizeof(struct sockaddr_in)); + sin.sin_family = AF_INET; + sin.sin_len = sizeof(struct sockaddr_in); + sin.sin_port = stcb->rport; + m_copydata(control, at + CMSG_ALIGN(sizeof(struct cmsghdr)), sizeof(struct in_addr), (caddr_t)&sin.sin_addr); + if ((sin.sin_addr.s_addr == INADDR_ANY) || + (sin.sin_addr.s_addr == INADDR_BROADCAST) || + IN_MULTICAST(ntohl(sin.sin_addr.s_addr))) { + *error = EINVAL; + return (-1); + } + if (sctp_add_remote_addr(stcb, (struct sockaddr *)&sin, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { + *error = ENOBUFS; + return (1); + } + break; +#endif +#ifdef INET6 + case SCTP_DSTADDRV6: + if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) < sizeof(struct in6_addr)) { + *error = EINVAL; + return (1); + } + memset(&sin6, 0, sizeof(struct sockaddr_in6)); + sin6.sin6_family = AF_INET6; + sin6.sin6_len = sizeof(struct sockaddr_in6); + sin6.sin6_port = stcb->rport; + m_copydata(control, at + CMSG_ALIGN(sizeof(struct cmsghdr)), sizeof(struct in6_addr), (caddr_t)&sin6.sin6_addr); + if (IN6_IS_ADDR_UNSPECIFIED(&sin6.sin6_addr) || + IN6_IS_ADDR_MULTICAST(&sin6.sin6_addr)) { + *error = EINVAL; + return (-1); + } +#ifdef INET + if (IN6_IS_ADDR_V4MAPPED(&sin6.sin6_addr)) { + in6_sin6_2_sin(&sin, &sin6); + if ((sin.sin_addr.s_addr == INADDR_ANY) || + (sin.sin_addr.s_addr == INADDR_BROADCAST) || + IN_MULTICAST(ntohl(sin.sin_addr.s_addr))) { + *error = EINVAL; + return (-1); + } + if (sctp_add_remote_addr(stcb, (struct sockaddr *)&sin, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { + *error = ENOBUFS; + return (1); + } + } else +#endif + if (sctp_add_remote_addr(stcb, (struct sockaddr *)&sin6, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { + *error = ENOBUFS; + return (1); + } + break; +#endif + default: break; } } + at += CMSG_ALIGN(cmh.cmsg_len); } - /* not found */ return (0); } +static struct sctp_tcb * +sctp_findassociation_cmsgs(struct sctp_inpcb **inp_p, + in_port_t port, + struct mbuf *control, + struct sctp_nets **net_p, + int *error) +{ + struct cmsghdr cmh; + int tlen, at; + struct sctp_tcb *stcb; + struct sockaddr *addr; + +#ifdef INET + struct sockaddr_in sin; + +#endif +#ifdef INET6 + struct sockaddr_in6 sin6; + +#endif + + tlen = SCTP_BUF_LEN(control); + at = 0; + while (at < tlen) { + if ((tlen - at) < (int)CMSG_ALIGN(sizeof(cmh))) { + /* There is not enough room for one more. */ + *error = EINVAL; + return (NULL); + } + m_copydata(control, at, sizeof(cmh), (caddr_t)&cmh); + if (cmh.cmsg_len < CMSG_ALIGN(sizeof(struct cmsghdr))) { + /* We dont't have a complete CMSG header. */ + *error = EINVAL; + return (NULL); + } + if (((int)cmh.cmsg_len + at) > tlen) { + /* We don't have the complete CMSG. */ + *error = EINVAL; + return (NULL); + } + if (cmh.cmsg_level == IPPROTO_SCTP) { + switch (cmh.cmsg_type) { +#ifdef INET + case SCTP_DSTADDRV4: + if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) < sizeof(struct in_addr)) { + *error = EINVAL; + return (NULL); + } + memset(&sin, 0, sizeof(struct sockaddr_in)); + sin.sin_family = AF_INET; + sin.sin_len = sizeof(struct sockaddr_in); + sin.sin_port = port; + m_copydata(control, at + CMSG_ALIGN(sizeof(struct cmsghdr)), sizeof(struct in_addr), (caddr_t)&sin.sin_addr); + addr = (struct sockaddr *)&sin; + break; +#endif +#ifdef INET6 + case SCTP_DSTADDRV6: + if ((size_t)(cmh.cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) < sizeof(struct in6_addr)) { + *error = EINVAL; + return (NULL); + } + memset(&sin6, 0, sizeof(struct sockaddr_in6)); + sin6.sin6_family = AF_INET6; + sin6.sin6_len = sizeof(struct sockaddr_in6); + sin6.sin6_port = port; + m_copydata(control, at + CMSG_ALIGN(sizeof(struct cmsghdr)), sizeof(struct in6_addr), (caddr_t)&sin6.sin6_addr); +#ifdef INET + if (IN6_IS_ADDR_V4MAPPED(&sin6.sin6_addr)) { + in6_sin6_2_sin(&sin, &sin6); + addr = (struct sockaddr *)&sin; + } else +#endif + addr = (struct sockaddr *)&sin6; + break; +#endif + default: + addr = NULL; + break; + } + if (addr) { + stcb = sctp_findassociation_ep_addr(inp_p, addr, net_p, NULL, NULL); + if (stcb != NULL) { + return (stcb); + } + } + } + at += CMSG_ALIGN(cmh.cmsg_len); + } + return (NULL); +} + static struct mbuf * sctp_add_cookie(struct sctp_inpcb *inp, struct mbuf *init, int init_offset, struct mbuf *initack, int initack_offset, struct sctp_state_cookie *stc_in, uint8_t ** signature) @@ -5989,19 +6273,26 @@ sctp_msg_append(struct sctp_tcb *stcb, sp->some_taken = 0; sp->data = m; sp->tail_mbuf = NULL; - sp->length = 0; - at = m; sctp_set_prsctp_policy(sp); /* * We could in theory (for sendall) sifa the length in, but we would * still have to hunt through the chain since we need to setup the * tail_mbuf */ - while (at) { + sp->length = 0; + for (at = m; at; at = SCTP_BUF_NEXT(at)) { if (SCTP_BUF_NEXT(at) == NULL) sp->tail_mbuf = at; sp->length += SCTP_BUF_LEN(at); - at = SCTP_BUF_NEXT(at); + } + if (srcv->sinfo_keynumber_valid) { + sp->auth_keyid = srcv->sinfo_keynumber; + } else { + sp->auth_keyid = stcb->asoc.authinfo.active_keyid; + } + if (sctp_auth_is_required_chunk(SCTP_DATA, stcb->asoc.peer_auth_chunks)) { + sctp_auth_key_acquire(stcb, sp->auth_keyid); + sp->holds_key_ref = 1; } SCTP_TCB_SEND_LOCK(stcb); sctp_snd_sb_alloc(stcb, sp->length); @@ -6478,7 +6769,9 @@ sctp_sendall(struct sctp_inpcb *inp, str memset(ca, 0, sizeof(struct sctp_copy_all)); ca->inp = inp; - memcpy(&ca->sndrcv, srcv, sizeof(struct sctp_nonpad_sndrcvinfo)); + if (srcv) { + memcpy(&ca->sndrcv, srcv, sizeof(struct sctp_nonpad_sndrcvinfo)); + } /* * take off the sendall flag, it would be bad if we failed to do * this :-0 @@ -12229,9 +12522,13 @@ sctp_copy_it_in(struct sctp_tcb *stcb, *error = 0; goto skip_copy; } - sp->auth_keyid = stcb->asoc.authinfo.active_keyid; + if (srcv->sinfo_keynumber_valid) { + sp->auth_keyid = srcv->sinfo_keynumber; + } else { + sp->auth_keyid = stcb->asoc.authinfo.active_keyid; + } if (sctp_auth_is_required_chunk(SCTP_DATA, stcb->asoc.peer_auth_chunks)) { - sctp_auth_key_acquire(stcb, stcb->asoc.authinfo.active_keyid); + sctp_auth_key_acquire(stcb, sp->auth_keyid); sp->holds_key_ref = 1; } *error = sctp_copy_one(sp, uio, resv_in_first); @@ -12263,8 +12560,8 @@ sctp_sosend(struct socket *so, struct thread *p ) { - int error, use_rcvinfo = 0; - struct sctp_sndrcvinfo srcv; + int error, use_sndinfo = 0; + struct sctp_sndrcvinfo sndrcvninfo; struct sockaddr *addr_to_use; #if defined(INET) && defined(INET6) @@ -12274,10 +12571,10 @@ sctp_sosend(struct socket *so, if (control) { /* process cmsg snd/rcv info (maybe a assoc-id) */ - if (sctp_find_cmsg(SCTP_SNDRCV, (void *)&srcv, control, - sizeof(srcv))) { + if (sctp_find_cmsg(SCTP_SNDRCV, (void *)&sndrcvninfo, control, + sizeof(sndrcvninfo))) { /* got one */ - use_rcvinfo = 1; + use_sndinfo = 1; } } addr_to_use = addr; @@ -12295,7 +12592,7 @@ sctp_sosend(struct socket *so, error = sctp_lower_sosend(so, addr_to_use, uio, top, control, flags, - use_rcvinfo ? &srcv : NULL + use_sndinfo ? &sndrcvninfo : NULL ,p ); return (error); @@ -12500,6 +12797,9 @@ sctp_lower_sosend(struct socket *so, SCTP_INP_WUNLOCK(inp); /* With the lock applied look again */ stcb = sctp_findassociation_ep_addr(&t_inp, addr, &net, NULL, NULL); + if ((stcb == NULL) && (control != NULL) && (port > 0)) { + stcb = sctp_findassociation_cmsgs(&t_inp, port, control, &net, &error); + } if (stcb == NULL) { SCTP_INP_WLOCK(inp); SCTP_INP_DECR_REF(inp); @@ -12507,6 +12807,9 @@ sctp_lower_sosend(struct socket *so, } else { hold_tcblock = 1; } + if (error) { + goto out_unlocked; + } if (t_inp != inp) { SCTP_LTRACE_ERR_RET(inp, stcb, net, SCTP_FROM_SCTP_OUTPUT, ENOTCONN); error = ENOTCONN; @@ -12555,6 +12858,7 @@ sctp_lower_sosend(struct socket *so, /* Error is setup for us in the call */ goto out_unlocked; } + hold_tcblock = 1; if (create_lock_applied) { SCTP_ASOC_CREATE_UNLOCK(inp); create_lock_applied = 0; @@ -12574,84 +12878,13 @@ sctp_lower_sosend(struct socket *so, *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed Jun 15 23:56:41 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0325F106566B; Wed, 15 Jun 2011 23:56:41 +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 E7AA08FC14; Wed, 15 Jun 2011 23:56:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5FNueAD003894; Wed, 15 Jun 2011 23:56:40 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5FNuetC003892; Wed, 15 Jun 2011 23:56:40 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201106152356.p5FNuetC003892@svn.freebsd.org> From: Nathan Whitehorn Date: Wed, 15 Jun 2011 23:56:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223133 - head/release X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Jun 2011 23:56:41 -0000 Author: nwhitehorn Date: Wed Jun 15 23:56:40 2011 New Revision: 223133 URL: http://svn.freebsd.org/changeset/base/223133 Log: Make the bootonly CD smaller by discarding static libraries that are not useful without a toolchain. Modified: head/release/Makefile Modified: head/release/Makefile ============================================================================== --- head/release/Makefile Wed Jun 15 23:50:27 2011 (r223132) +++ head/release/Makefile Wed Jun 15 23:56:40 2011 (r223133) @@ -111,8 +111,7 @@ system: packagesystem # Install system -mkdir ${.OBJDIR}/release cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \ - DESTDIR=${.OBJDIR}/release WITHOUT_RESCUE=1 - -rm ${.OBJDIR}/release/boot/kernel/*.symbols + DESTDIR=${.OBJDIR}/release WITHOUT_RESCUE=1 WITHOUT_KERNEL_SYMBOLS=1 # Copy distfiles mkdir ${.OBJDIR}/release/usr/freebsd-dist cp ${.OBJDIR}/*.txz ${.OBJDIR}/MANIFEST \ @@ -136,8 +135,9 @@ bootonly: packagesystem WITHOUT_BIND_DNSSEC=1 WITHOUT_BIND_ETC=1 WITHOUT_BIND_MTREE=1 \ WITHOUT_BIND_NAMED=1 WITHOUT_GAMES=1 WITHOUT_GROFF=1 \ WITHOUT_INSTALLLIB=1 WITHOUT_LIB32=1 WITHOUT_MAIL=1 \ - WITHOUT_NCP=1 WITHOUT_TOOLCHAIN=1 WITHOUT_RESCUE=1 WITHOUT_DICT=1 - -rm ${.OBJDIR}/bootonly/boot/kernel/*.symbols + WITHOUT_NCP=1 WITHOUT_TOOLCHAIN=1 WITHOUT_PROFILE=1 \ + WITHOUT_INSTALLIB=1 WITHOUT_RESCUE=1 WITHOUT_DICT=1 \ + WITHOUT_KERNEL_SYMBOLS=1 # Copy manifest only (no distfiles) to get checksums mkdir ${.OBJDIR}/bootonly/usr/freebsd-dist cp ${.OBJDIR}/MANIFEST ${.OBJDIR}/bootonly/usr/freebsd-dist From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 01:52:43 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0AAD9106566B; Thu, 16 Jun 2011 01:52:43 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D50198FC0C; Thu, 16 Jun 2011 01:52:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G1qgCR007261; Thu, 16 Jun 2011 01:52:42 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G1qggO007259; Thu, 16 Jun 2011 01:52:42 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201106160152.p5G1qggO007259@svn.freebsd.org> From: Xin LI Date: Thu, 16 Jun 2011 01:52:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223134 - stable/8/sys/dev/atkbdc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 01:52:43 -0000 Author: delphij Date: Thu Jun 16 01:52:42 2011 New Revision: 223134 URL: http://svn.freebsd.org/changeset/base/223134 Log: MFC r222795 (jkim) + 222967: Validate INT 15h and 16h vectors more strictly. Traditionally these entry points are fixed addresses and (U)EFI CSM specification also mandated that. Unfortunately, (U)EFI CSM specification does not specifically mention this is to call service routine via interrupt vector table or to jump directly to the entry point. As a result, some CSM seems to install two routines and acts differently, depending on how it was executed, unfortunately. When INT 15h is used, it calls a function pointer (which is probably a UEFI service function). When it jumps directly to the entry point, it executes a simple and traditional INT 15h service routine. Therefore, actually there are two possible fixes, i. e., this fix or jumping directly to the fixed entry point. However, we chose this fix because a) keyboard typematic support via BIOS is becoming extremely rarer and b) we cannot support random service routine installed by a firmware or a boot loader. This should fix Lenovo X220 laptop, specifically. Modified: stable/8/sys/dev/atkbdc/atkbd.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/atkbdc/atkbd.c ============================================================================== --- stable/8/sys/dev/atkbdc/atkbd.c Wed Jun 15 23:56:40 2011 (r223133) +++ stable/8/sys/dev/atkbdc/atkbd.c Thu Jun 16 01:52:42 2011 (r223134) @@ -1097,7 +1097,17 @@ get_typematic(keyboard_t *kbd) x86regs_t regs; uint8_t *p; - if (x86bios_get_intr(0x15) == 0 || x86bios_get_intr(0x16) == 0) + /* + * Traditional entry points of int 0x15 and 0x16 are fixed + * and later BIOSes follow them. (U)EFI CSM specification + * also mandate these fixed entry points. + * + * Validate the entry points here before we proceed further. + * It's known that some recent laptops does not have the + * same entry point and hang on boot if we call it. + */ + if (x86bios_get_intr(0x15) != 0xf000f859 || + x86bios_get_intr(0x16) != 0xf000e82e) return (ENODEV); /* Is BIOS system configuration table supported? */ From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 02:16:53 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DE54106566C; Thu, 16 Jun 2011 02:16:53 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6E64D8FC0A; Thu, 16 Jun 2011 02:16:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G2GrGu007995; Thu, 16 Jun 2011 02:16:53 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G2Grq5007993; Thu, 16 Jun 2011 02:16:53 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201106160216.p5G2Grq5007993@svn.freebsd.org> From: Craig Rodrigues Date: Thu, 16 Jun 2011 02:16:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223135 - head/usr.bin/tftp X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 02:16:53 -0000 Author: rodrigc Date: Thu Jun 16 02:16:53 2011 New Revision: 223135 URL: http://svn.freebsd.org/changeset/base/223135 Log: Specify correct RFC2347 for TFTP options in diagnostic message. Modified: head/usr.bin/tftp/main.c Modified: head/usr.bin/tftp/main.c ============================================================================== --- head/usr.bin/tftp/main.c Thu Jun 16 01:52:42 2011 (r223134) +++ head/usr.bin/tftp/main.c Thu Jun 16 02:16:53 2011 (r223135) @@ -840,8 +840,8 @@ help(int argc, char *argv[]) printf("%-*s\t%s\n", (int)HELPINDENT, c->name, c->help); printf("\n[-] : You shouldn't use these ones anymore.\n"); - printf("[*] : RFC2834 options support required.\n"); - printf("[**] : Non-standard RFC2834 option.\n"); + printf("[*] : RFC2347 options support required.\n"); + printf("[**] : Non-standard RFC2347 option.\n"); return; } while (--argc > 0) { From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 02:22:25 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0F6D2106566B; Thu, 16 Jun 2011 02:22:25 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 001758FC14; Thu, 16 Jun 2011 02:22:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G2MOUF008205; Thu, 16 Jun 2011 02:22:24 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G2MOrQ008203; Thu, 16 Jun 2011 02:22:24 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201106160222.p5G2MOrQ008203@svn.freebsd.org> From: David Xu Date: Thu, 16 Jun 2011 02:22:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223136 - head/lib/libc/gen X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 02:22:25 -0000 Author: davidxu Date: Thu Jun 16 02:22:24 2011 New Revision: 223136 URL: http://svn.freebsd.org/changeset/base/223136 Log: Use size of int to fetch sysctl kern.sched.cpusetsize because it had switched from long to int type in kernel. Fixed by: pluknet Modified: head/lib/libc/gen/sysconf.c Modified: head/lib/libc/gen/sysconf.c ============================================================================== --- head/lib/libc/gen/sysconf.c Thu Jun 16 02:16:53 2011 (r223135) +++ head/lib/libc/gen/sysconf.c Thu Jun 16 02:22:24 2011 (r223136) @@ -599,11 +599,11 @@ yesno: #ifdef _SC_CPUSET_SIZE case _SC_CPUSET_SIZE: - len = sizeof(lvalue); - if (sysctlbyname("kern.sched.cpusetsize", &lvalue, &len, NULL, + len = sizeof(value); + if (sysctlbyname("kern.sched.cpusetsize", &value, &len, NULL, 0) == -1) return (-1); - return (lvalue); + return ((long)value); #endif default: From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 02:27:06 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5B001106566B; Thu, 16 Jun 2011 02:27:06 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4B4D78FC18; Thu, 16 Jun 2011 02:27:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G2R6Ov008369; Thu, 16 Jun 2011 02:27:06 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G2R6js008366; Thu, 16 Jun 2011 02:27:06 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201106160227.p5G2R6js008366@svn.freebsd.org> From: Craig Rodrigues Date: Thu, 16 Jun 2011 02:27:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223137 - in head: libexec/tftpd usr.bin/tftp X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 02:27:06 -0000 Author: rodrigc Date: Thu Jun 16 02:27:05 2011 New Revision: 223137 URL: http://svn.freebsd.org/changeset/base/223137 Log: Clarify that the TFTP blocksize (RFC2348) or non-standard TFTP rollover option can be used to transfer larger files. Modified: head/libexec/tftpd/tftpd.8 head/usr.bin/tftp/tftp.1 Modified: head/libexec/tftpd/tftpd.8 ============================================================================== --- head/libexec/tftpd/tftpd.8 Thu Jun 16 02:22:24 2011 (r223136) +++ head/libexec/tftpd/tftpd.8 Thu Jun 16 02:27:05 2011 (r223137) @@ -253,8 +253,9 @@ was introduced in support for the TFTP Blocksize Option (RFC2348) and the blksize2 option was introduced in .Fx 7.4 . -.Sh BUGS +.Sh NOTES Files larger than 33488896 octets (65535 blocks) cannot be transferred -without client and server supporting blocksize negotiation (RFC2348). +without client and server supporting the the TFTP blocksize option (RFC2348), +or the non-standard TFTP rollover option. .Pp Many tftp clients will not transfer files over 16744448 octets (32767 blocks). Modified: head/usr.bin/tftp/tftp.1 ============================================================================== --- head/usr.bin/tftp/tftp.1 Thu Jun 16 02:22:24 2011 (r223136) +++ head/usr.bin/tftp/tftp.1 Thu Jun 16 02:27:05 2011 (r223137) @@ -174,7 +174,7 @@ The .Nm command appeared in .Bx 4.3 . -.Sh BUGS +.Sh NOTES Because there is no user-login or validation within the .Tn TFTP @@ -185,4 +185,5 @@ exact methods are specific to each site difficult to document here. .Pp Files larger than 33488896 octets (65535 blocks) cannot be transferred -without client and server supporting blocksize negotiation (RFC1783). +without client and server supporting the TFTP blocksize option (RFC2348), +or the non-standard TFTP rollover option. From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 05:26:03 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D173F106564A; Thu, 16 Jun 2011 05:26:03 +0000 (UTC) (envelope-from avatar@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A8FFB8FC15; Thu, 16 Jun 2011 05:26:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G5Q3Sl013917; Thu, 16 Jun 2011 05:26:03 GMT (envelope-from avatar@svn.freebsd.org) Received: (from avatar@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G5Q3RX013915; Thu, 16 Jun 2011 05:26:03 GMT (envelope-from avatar@svn.freebsd.org) Message-Id: <201106160526.p5G5Q3RX013915@svn.freebsd.org> From: Tai-hwa Liang Date: Thu, 16 Jun 2011 05:26:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223138 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 05:26:03 -0000 Author: avatar Date: Thu Jun 16 05:26:03 2011 New Revision: 223138 URL: http://svn.freebsd.org/changeset/base/223138 Log: Fixing compilation bustage by introducing another forward declaration. Modified: head/sys/ufs/ffs/ffs_extern.h Modified: head/sys/ufs/ffs/ffs_extern.h ============================================================================== --- head/sys/ufs/ffs/ffs_extern.h Thu Jun 16 02:27:05 2011 (r223137) +++ head/sys/ufs/ffs/ffs_extern.h Thu Jun 16 05:26:03 2011 (r223138) @@ -33,6 +33,7 @@ #ifndef _UFS_FFS_EXTERN_H #define _UFS_FFS_EXTERN_H +enum vtype; struct buf; struct cg; struct fid; From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 06:53:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5D299106564A; Thu, 16 Jun 2011 06:53:16 +0000 (UTC) (envelope-from stefan@fafoe.narf.at) Received: from fep13.mx.upcmail.net (fep13.mx.upcmail.net [62.179.121.33]) by mx1.freebsd.org (Postfix) with ESMTP id 37F248FC08; Thu, 16 Jun 2011 06:53:14 +0000 (UTC) Received: from edge01.upcmail.net ([192.168.13.236]) by viefep13-int.chello.at (InterMail vM.8.01.02.02 201-2260-120-106-20100312) with ESMTP id <20110616065313.BBHX27705.viefep13-int.chello.at@edge01.upcmail.net>; Thu, 16 Jun 2011 08:53:13 +0200 Received: from mole.fafoe.narf.at ([213.47.85.26]) by edge01.upcmail.net with edge id wWtB1g05H0a5KZh01WtDlM; Thu, 16 Jun 2011 08:53:13 +0200 X-SourceIP: 213.47.85.26 Received: by mole.fafoe.narf.at (Postfix, from userid 1001) id AD3816D42B; Thu, 16 Jun 2011 08:53:11 +0200 (CEST) Date: Thu, 16 Jun 2011 08:53:11 +0200 From: Stefan Farfeleder To: Tai-hwa Liang Message-ID: <20110616065310.GA2542@mole.fafoe.narf.at> References: <201106160526.p5G5Q3RX013915@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201106160526.p5G5Q3RX013915@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Cloudmark-Analysis: v=1.1 cv=HQ3F56nxkum+cgCiDL7AXQpbvw7DWrWCBJRnYYnM0Zc= c=1 sm=0 a=wom5GMh1gUkA:10 a=Y6sN_8hR3U4A:10 a=dBRESv0yCI8A:10 a=kj9zAlcOel0A:10 a=6I5d2MoRAAAA:8 a=BqI0uTjuG50fhkVmhDAA:9 a=CjuIK1q_8ugA:10 a=HpAAvcLHHh0Zw7uRqdWCyQ==:117 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223138 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 06:53:16 -0000 On Thu, Jun 16, 2011 at 05:26:03AM +0000, Tai-hwa Liang wrote: > Author: avatar > Date: Thu Jun 16 05:26:03 2011 > New Revision: 223138 > URL: http://svn.freebsd.org/changeset/base/223138 > > Log: > Fixing compilation bustage by introducing another forward declaration. > > Modified: > head/sys/ufs/ffs/ffs_extern.h > > Modified: head/sys/ufs/ffs/ffs_extern.h > ============================================================================== > --- head/sys/ufs/ffs/ffs_extern.h Thu Jun 16 02:27:05 2011 (r223137) > +++ head/sys/ufs/ffs/ffs_extern.h Thu Jun 16 05:26:03 2011 (r223138) > @@ -33,6 +33,7 @@ > #ifndef _UFS_FFS_EXTERN_H > #define _UFS_FFS_EXTERN_H > > +enum vtype; > struct buf; > struct cg; > struct fid; > This is not valid C code. For some reason GCC allows it (with our compilation flags). Stefan From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 06:54:31 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 581AF1065674; Thu, 16 Jun 2011 06:54:31 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-yw0-f54.google.com (mail-yw0-f54.google.com [209.85.213.54]) by mx1.freebsd.org (Postfix) with ESMTP id DDD9F8FC15; Thu, 16 Jun 2011 06:54:30 +0000 (UTC) Received: by ywf7 with SMTP id 7so907115ywf.13 for ; Wed, 15 Jun 2011 23:54:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=69/OlhL3zI0Bfl/2GTMjVxw8xbROnXpw2VUZgHZHdac=; b=jt19DxnvULXRxM8lDtJfH3DSy6JUrV4z4n8np68vS6cU0jIjYhLs+uPWQ7sDBOaNnj n5sSTZD10xMlF0+xuy+j+tjdqfZ78i2WJ5w3F+7X1L9rDOrBQzBl0RtEBpEJKJUe19qi F030WmI3mElfDhw2zyjC+qrMdUtJDftvr+NuU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=o1+jDjeddWN5uUW5DMBE32M2tBGN4OrFAhV5NSc/DHRwtANpeFMxbzvk2ZAIHo0MUT yykO93EYreRu8UYunz8GIhYVvu2jL1PDNekuG4ndP08Mgb5aBCoxg1y4vbbunAyzY117 iqBeJu5///L5s3A4q6Ar7swjOBpIwQQPjLTy8= MIME-Version: 1.0 Received: by 10.236.111.20 with SMTP id v20mr741036yhg.423.1308207270044; Wed, 15 Jun 2011 23:54:30 -0700 (PDT) Sender: asmrookie@gmail.com Received: by 10.236.110.141 with HTTP; Wed, 15 Jun 2011 23:54:30 -0700 (PDT) In-Reply-To: <201106160222.p5G2MOrQ008203@svn.freebsd.org> References: <201106160222.p5G2MOrQ008203@svn.freebsd.org> Date: Thu, 16 Jun 2011 08:54:30 +0200 X-Google-Sender-Auth: qZ2BG0EuRHJp6xPxUA9jDLkr1PI Message-ID: From: Attilio Rao To: David Xu Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223136 - head/lib/libc/gen X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 06:54:31 -0000 VGhhbmtzIGZvciBmaXhpbmcgdGhpcyBndXlzLgoKQXR0aWxpbwoKMjAxMS82LzE2IERhdmlkIFh1 IDxkYXZpZHh1QGZyZWVic2Qub3JnPjoKPiBBdXRob3I6IGRhdmlkeHUKPiBEYXRlOiBUaHUgSnVu IDE2IDAyOjIyOjI0IDIwMTEKPiBOZXcgUmV2aXNpb246IDIyMzEzNgo+IFVSTDogaHR0cDovL3N2 bi5mcmVlYnNkLm9yZy9jaGFuZ2VzZXQvYmFzZS8yMjMxMzYKPgo+IExvZzoKPiDCoFVzZSBzaXpl IG9mIGludCB0byBmZXRjaCBzeXNjdGwga2Vybi5zY2hlZC5jcHVzZXRzaXplIGJlY2F1c2UgaXQg aGFkCj4gwqBzd2l0Y2hlZCBmcm9tIGxvbmcgdG8gaW50IHR5cGUgaW4ga2VybmVsLgo+Cj4gwqBG aXhlZCBieTogcGx1a25ldAo+Cj4gTW9kaWZpZWQ6Cj4gwqBoZWFkL2xpYi9saWJjL2dlbi9zeXNj b25mLmMKPgo+IE1vZGlmaWVkOiBoZWFkL2xpYi9saWJjL2dlbi9zeXNjb25mLmMKPiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KPiAtLS0gaGVhZC9saWIvbGliYy9nZW4vc3lzY29uZi5jIFRodSBKdW4g MTYgMDI6MTY6NTMgMjAxMSDCoCDCoCDCoCDCoChyMjIzMTM1KQo+ICsrKyBoZWFkL2xpYi9saWJj L2dlbi9zeXNjb25mLmMgVGh1IEp1biAxNiAwMjoyMjoyNCAyMDExIMKgIMKgIMKgIMKgKHIyMjMx MzYpCj4gQEAgLTU5OSwxMSArNTk5LDExIEBAIHllc25vOgo+Cj4gwqAjaWZkZWYgX1NDX0NQVVNF VF9TSVpFCj4gwqAgwqAgwqAgwqBjYXNlIF9TQ19DUFVTRVRfU0laRToKPiAtIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGxlbiA9IHNpemVvZihsdmFsdWUpOwo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAg aWYgKHN5c2N0bGJ5bmFtZSgia2Vybi5zY2hlZC5jcHVzZXRzaXplIiwgJmx2YWx1ZSwgJmxlbiwg TlVMTCwKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGxlbiA9IHNpemVvZih2YWx1ZSk7Cj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoc3lzY3RsYnluYW1lKCJrZXJuLnNjaGVkLmNwdXNldHNp emUiLCAmdmFsdWUsICZsZW4sIE5VTEwsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAw KSA9PSAtMSkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJldHVybiAoLTEp Owo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIChsdmFsdWUpOwo+ICsgwqAgwqAgwqAg wqAgwqAgwqAgwqAgcmV0dXJuICgobG9uZyl2YWx1ZSk7Cj4gwqAjZW5kaWYKPgo+IMKgIMKgIMKg IMKgZGVmYXVsdDoKPgoKCgotLSAKUGVhY2UgY2FuIG9ubHkgYmUgYWNoaWV2ZWQgYnkgdW5kZXJz dGFuZGluZyAtIEEuIEVpbnN0ZWluCg== From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 07:05:57 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E0D4A106566C; Thu, 16 Jun 2011 07:05:57 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: from mail-qw0-f54.google.com (mail-qw0-f54.google.com [209.85.216.54]) by mx1.freebsd.org (Postfix) with ESMTP id 661308FC08; Thu, 16 Jun 2011 07:05:57 +0000 (UTC) Received: by qwc9 with SMTP id 9so794220qwc.13 for ; Thu, 16 Jun 2011 00:05:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=O/PDEYf5Gmq2d9PX4zc1bT+Sq/0G1JFQkMLMe6Gju/8=; b=SExDlvGh4dY8RGjhiiBTA2FOG65zaTU4GmJPm9WQiXAv647XAXza0XISok9QI9oEYb 4lhavY/FIgotjhDcHRApwRwL/GDIizelyE61jMobdSGwDYefBLDUWTAxu6IPpehUDrHE SCNyueWJn5L+tEwWyrUoq8ejWwRBGSE0dsjnc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=EJnmlJKytSGERcuWysvRmOics1H3xJb3pX/PqLVGriotbTTynrPDm0wEAnPlXwIEc/ MpyoyPcC9xmPDofB35n57VTzy5FxMXn1QG9C2Lttkn75Hx5Zlo2A8RfUGVN541+uaREV +Rzdg3YuqhxXjj/t4nG9qlmrs4gKfD1jCq/Ro= MIME-Version: 1.0 Received: by 10.229.35.1 with SMTP id n1mr432360qcd.84.1308207956664; Thu, 16 Jun 2011 00:05:56 -0700 (PDT) Sender: pluknet@gmail.com Received: by 10.229.99.197 with HTTP; Thu, 16 Jun 2011 00:05:56 -0700 (PDT) In-Reply-To: <201106160222.p5G2MOrQ008203@svn.freebsd.org> References: <201106160222.p5G2MOrQ008203@svn.freebsd.org> Date: Thu, 16 Jun 2011 11:05:56 +0400 X-Google-Sender-Auth: nWt26jNtGEhpn4SLLZhKK6sJPq8 Message-ID: From: Sergey Kandaurov To: David Xu Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223136 - head/lib/libc/gen X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 07:05:58 -0000 On 16 June 2011 06:22, David Xu wrote: > Author: davidxu > Date: Thu Jun 16 02:22:24 2011 > New Revision: 223136 > URL: http://svn.freebsd.org/changeset/base/223136 > > Log: > =A0Use size of int to fetch sysctl kern.sched.cpusetsize because it had > =A0switched from long to int type in kernel. > > =A0Fixed by: pluknet > > Modified: > =A0head/lib/libc/gen/sysconf.c > > Modified: head/lib/libc/gen/sysconf.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/lib/libc/gen/sysconf.c Thu Jun 16 02:16:53 2011 =A0 =A0 =A0 =A0(= r223135) > +++ head/lib/libc/gen/sysconf.c Thu Jun 16 02:22:24 2011 =A0 =A0 =A0 =A0(= r223136) > @@ -599,11 +599,11 @@ yesno: > > =A0#ifdef _SC_CPUSET_SIZE > =A0 =A0 =A0 =A0case _SC_CPUSET_SIZE: > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 len =3D sizeof(lvalue); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (sysctlbyname("kern.sched.cpusetsize", &= lvalue, &len, NULL, > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 len =3D sizeof(value); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (sysctlbyname("kern.sched.cpusetsize", &= value, &len, NULL, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A00) =3D=3D -1) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0return (-1); > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 return (lvalue); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 return ((long)value); > =A0#endif > > =A0 =A0 =A0 =A0default: > Thanks! --=20 wbr, pluknet From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 07:14:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0E751106566C; Thu, 16 Jun 2011 07:14:56 +0000 (UTC) (envelope-from avatar@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D8CD68FC14; Thu, 16 Jun 2011 07:14:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G7EtMv017114; Thu, 16 Jun 2011 07:14:55 GMT (envelope-from avatar@svn.freebsd.org) Received: (from avatar@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G7Etfx017112; Thu, 16 Jun 2011 07:14:55 GMT (envelope-from avatar@svn.freebsd.org) Message-Id: <201106160714.p5G7Etfx017112@svn.freebsd.org> From: Tai-hwa Liang Date: Thu, 16 Jun 2011 07:14:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223139 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 07:14:56 -0000 Author: avatar Date: Thu Jun 16 07:14:55 2011 New Revision: 223139 URL: http://svn.freebsd.org/changeset/base/223139 Log: Unbreaking build on sparc64. Submitted by: Garrett Cooper Modified: head/lib/libstand/zalloc.c Modified: head/lib/libstand/zalloc.c ============================================================================== --- head/lib/libstand/zalloc.c Thu Jun 16 05:26:03 2011 (r223138) +++ head/lib/libstand/zalloc.c Thu Jun 16 07:14:55 2011 (r223139) @@ -154,7 +154,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by if ((char *)ptr < (char *)mp->mp_Base || (char *)ptr + bytes > (char *)mp->mp_End || ((iaddr_t)ptr & MEMNODE_SIZE_MASK) != 0) - panic("zfree(%p,%d): wild pointer", ptr, bytes); + panic("zfree(%p,%ju): wild pointer", ptr, bytes); /* * free the segment @@ -178,7 +178,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by * range check */ if ((char *)ptr + bytes > (char *)mn) - panic("zfree(%p,%d): corrupt memlist1",ptr, bytes); + panic("zfree(%p,%ju): corrupt memlist1",ptr, bytes); /* * merge against next area or create independant area @@ -209,7 +209,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by /* NOT REACHED */ } if ((char *)ptr < (char *)mn + mn->mr_Bytes) - panic("zfree(%p,%d): corrupt memlist2", ptr, bytes); + panic("zfree(%p,%ju): corrupt memlist2", ptr, bytes); } /* * We are beyond the last MemNode, append new MemNode. Merge against From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 07:19:03 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 45C301065673; Thu, 16 Jun 2011 07:19:03 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-vx0-f182.google.com (mail-vx0-f182.google.com [209.85.220.182]) by mx1.freebsd.org (Postfix) with ESMTP id B07478FC1B; Thu, 16 Jun 2011 07:19:02 +0000 (UTC) Received: by vxc34 with SMTP id 34so1329119vxc.13 for ; Thu, 16 Jun 2011 00:19:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=/EhxNhW3LXQtUw5ghNz9tWip8KYLsEpxLuPoTfvBHQU=; b=VkkoufB09PTH4Ct3djvrLCtPxEqkffTFqsVhs4vMMePoqNnLL20xtF/a8gg37zJW/N lNPbFvbR96iYHy2W+b5yKEnNTsSLITmTRoii1iNq2E7cZr+a9ABiUjVBDjuqEraCj++P rMy/6oBhlhlb+fFM0mFJNtQopDE39tlXLNClw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=xV7mHhzJsQz2HGeb6lvSVFyRCXzBJCKS2rlppNPUojpVPKz+15fb/lnZB5NCAXpfsF OEMj1ZMFb/ZFaWrg9BxnvoivHrcVFBvko1/gFLEm1vKgKWQ0boNRGGU8fhv9+JTQAxs0 tyrwI3waTHwHDsSEz5+YJQuC07akoFEIRRGuY= MIME-Version: 1.0 Received: by 10.220.210.69 with SMTP id gj5mr217725vcb.58.1308208741687; Thu, 16 Jun 2011 00:19:01 -0700 (PDT) Received: by 10.220.189.202 with HTTP; Thu, 16 Jun 2011 00:19:01 -0700 (PDT) In-Reply-To: <201106160714.p5G7Etfx017112@svn.freebsd.org> References: <201106160714.p5G7Etfx017112@svn.freebsd.org> Date: Thu, 16 Jun 2011 00:19:01 -0700 Message-ID: From: Garrett Cooper To: Tai-hwa Liang Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223139 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 07:19:03 -0000 On Thu, Jun 16, 2011 at 12:14 AM, Tai-hwa Liang wrote: > Author: avatar > Date: Thu Jun 16 07:14:55 2011 > New Revision: 223139 > URL: http://svn.freebsd.org/changeset/base/223139 > > Log: > =A0Unbreaking build on sparc64. > > =A0Submitted by: Garrett Cooper > > Modified: > =A0head/lib/libstand/zalloc.c > > Modified: head/lib/libstand/zalloc.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/lib/libstand/zalloc.c =A0Thu Jun 16 05:26:03 2011 =A0 =A0 =A0 = =A0(r223138) > +++ head/lib/libstand/zalloc.c =A0Thu Jun 16 07:14:55 2011 =A0 =A0 =A0 = =A0(r223139) > @@ -154,7 +154,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by > =A0 =A0 if ((char *)ptr < (char *)mp->mp_Base || > =A0 =A0 =A0 =A0(char *)ptr + bytes > (char *)mp->mp_End || > =A0 =A0 =A0 =A0((iaddr_t)ptr & MEMNODE_SIZE_MASK) !=3D 0) > - =A0 =A0 =A0 panic("zfree(%p,%d): wild pointer", ptr, bytes); > + =A0 =A0 =A0 panic("zfree(%p,%ju): wild pointer", ptr, bytes); All of those need to be cast to (uintmax_t). Sorry :(.. -Garrett From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 07:22:21 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 123A2106564A; Thu, 16 Jun 2011 07:22:21 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id 83FFD8FC0A; Thu, 16 Jun 2011 07:22:20 +0000 (UTC) Received: by vws18 with SMTP id 18so1336813vws.13 for ; Thu, 16 Jun 2011 00:22:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=Seza2/EW2OmUMtiF99qrc0g6KEPQhdfms/qp2kr1rmY=; b=ZhUu0cYOqAs9mcwb+G7JRKglwUZeNdwGMDv1gpGFjmVIK4mSBRlW+xfpVuoNB5JRXJ 2dIz2ghDdchLbzw6LTByMX71OHuuyrpInUIZ6ngBEZs9IBEZXGluMGwQqDLoKzzoiFkh /xDYOlQAX1SAMZzWbRR/IWzf5kpx8UQU5oDq4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=U5FBZl8rmaIBilijVOaL+yWaSUoWzGnfZ/4b6zYbeK410ReK1zyiNY79tOKagrVDNC f9IkzYduSQiZn9iZsdPUeMiOT9wUX3cbm/1xU8nINau38sT/7uA8ZBa4X64/enS1borK qN0zMaAO+P2w4cRWwIEyyDy0bs2mzJqkLwvZE= MIME-Version: 1.0 Received: by 10.220.177.9 with SMTP id bg9mr212541vcb.93.1308208939806; Thu, 16 Jun 2011 00:22:19 -0700 (PDT) Received: by 10.220.189.202 with HTTP; Thu, 16 Jun 2011 00:22:19 -0700 (PDT) In-Reply-To: References: <201106160714.p5G7Etfx017112@svn.freebsd.org> Date: Thu, 16 Jun 2011 00:22:19 -0700 Message-ID: From: Garrett Cooper To: Tai-hwa Liang Content-Type: multipart/mixed; boundary=90e6ba4fc6102630e004a5cf21cb Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223139 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 07:22:21 -0000 --90e6ba4fc6102630e004a5cf21cb Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Thu, Jun 16, 2011 at 12:19 AM, Garrett Cooper wrote= : > On Thu, Jun 16, 2011 at 12:14 AM, Tai-hwa Liang wrot= e: >> Author: avatar >> Date: Thu Jun 16 07:14:55 2011 >> New Revision: 223139 >> URL: http://svn.freebsd.org/changeset/base/223139 >> >> Log: >> =A0Unbreaking build on sparc64. >> >> =A0Submitted by: Garrett Cooper >> >> Modified: >> =A0head/lib/libstand/zalloc.c >> >> Modified: head/lib/libstand/zalloc.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/lib/libstand/zalloc.c =A0Thu Jun 16 05:26:03 2011 =A0 =A0 =A0 = =A0(r223138) >> +++ head/lib/libstand/zalloc.c =A0Thu Jun 16 07:14:55 2011 =A0 =A0 =A0 = =A0(r223139) >> @@ -154,7 +154,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by >> =A0 =A0 if ((char *)ptr < (char *)mp->mp_Base || >> =A0 =A0 =A0 =A0(char *)ptr + bytes > (char *)mp->mp_End || >> =A0 =A0 =A0 =A0((iaddr_t)ptr & MEMNODE_SIZE_MASK) !=3D 0) >> - =A0 =A0 =A0 panic("zfree(%p,%d): wild pointer", ptr, bytes); >> + =A0 =A0 =A0 panic("zfree(%p,%ju): wild pointer", ptr, bytes); > > All of those need to be cast to (uintmax_t). Sorry :(.. And you need to add #include to stand.h in order to get uintmax_t. Here's a proper patch for amd64.. Let me run this through make universe first though.. Thanks, -Garrett --90e6ba4fc6102630e004a5cf21cb Content-Type: text/x-patch; charset=US-ASCII; name="unbreak-libstand-zalloc-compile-take2.patch" Content-Disposition: attachment; filename="unbreak-libstand-zalloc-compile-take2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gozds20h0 SW5kZXg6IGxpYi9saWJzdGFuZC96YWxsb2MuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvbGlic3RhbmQv emFsbG9jLmMJKHJldmlzaW9uIDIyMzE0MCkKKysrIGxpYi9saWJzdGFuZC96YWxsb2MuYwkod29y a2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw3IEBACiAgICAgaWYgKChjaGFyICopcHRyIDwgKGNo YXIgKiltcC0+bXBfQmFzZSB8fCAKIAkoY2hhciAqKXB0ciArIGJ5dGVzID4gKGNoYXIgKiltcC0+ bXBfRW5kIHx8CiAJKChpYWRkcl90KXB0ciAmIE1FTU5PREVfU0laRV9NQVNLKSAhPSAwKQotCXBh bmljKCJ6ZnJlZSglcCwlanUpOiB3aWxkIHBvaW50ZXIiLCBwdHIsIGJ5dGVzKTsKKwlwYW5pYygi emZyZWUoJXAsJWp1KTogd2lsZCBwb2ludGVyIiwgcHRyLCAodWludG1heF90KWJ5dGVzKTsKIAog ICAgIC8qCiAgICAgICogZnJlZSB0aGUgc2VnbWVudApAQCAtMTc4LDcgKzE3OCw4IEBACiAJCSAq IHJhbmdlIGNoZWNrCiAJCSAqLwogCQlpZiAoKGNoYXIgKilwdHIgKyBieXRlcyA+IChjaGFyICop bW4pCi0JCSAgICBwYW5pYygiemZyZWUoJXAsJWp1KTogY29ycnVwdCBtZW1saXN0MSIscHRyLCBi eXRlcyk7CisJCSAgICBwYW5pYygiemZyZWUoJXAsJWp1KTogY29ycnVwdCBtZW1saXN0MSIsIHB0 ciwKKwkJICAgICAgICAodWludG1heF90KWJ5dGVzKTsKIAogCQkvKgogCQkgKiBtZXJnZSBhZ2Fp bnN0IG5leHQgYXJlYSBvciBjcmVhdGUgaW5kZXBlbmRhbnQgYXJlYQpAQCAtMjA5LDcgKzIxMCw4 IEBACiAJCS8qIE5PVCBSRUFDSEVEICovCiAJICAgIH0KIAkgICAgaWYgKChjaGFyICopcHRyIDwg KGNoYXIgKiltbiArIG1uLT5tcl9CeXRlcykKLQkJcGFuaWMoInpmcmVlKCVwLCVqdSk6IGNvcnJ1 cHQgbWVtbGlzdDIiLCBwdHIsIGJ5dGVzKTsKKwkJcGFuaWMoInpmcmVlKCVwLCVqdSk6IGNvcnJ1 cHQgbWVtbGlzdDIiLCBwdHIsCisJCSAgICAodWludG1heF90KWJ5dGVzKTsKIAl9CiAJLyoKIAkg KiBXZSBhcmUgYmV5b25kIHRoZSBsYXN0IE1lbU5vZGUsIGFwcGVuZCBuZXcgTWVtTm9kZS4gIE1l cmdlIGFnYWluc3QKSW5kZXg6IGxpYi9saWJzdGFuZC9zdGFuZC5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp Yi9saWJzdGFuZC9zdGFuZC5oCShyZXZpc2lvbiAyMjMxNDApCisrKyBsaWIvbGlic3RhbmQvc3Rh bmQuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgPHN5cy9jZGVm cy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL2RpcmVudC5oPgorI2lu Y2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjZGVmaW5lIENISyhmbXQs IGFyZ3MuLi4pCXByaW50ZigiJXMoJWQpOiAiIGZtdCAiXG4iLCBfX2Z1bmNfXywgX19MSU5FX18g LCAjI2FyZ3MpCg== --90e6ba4fc6102630e004a5cf21cb-- From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 07:58:20 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88A94106564A; Thu, 16 Jun 2011 07:58:20 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail01.syd.optusnet.com.au (mail01.syd.optusnet.com.au [211.29.132.182]) by mx1.freebsd.org (Postfix) with ESMTP id F05928FC16; Thu, 16 Jun 2011 07:58:19 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail01.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p5G7wFeh022778 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 16 Jun 2011 17:58:16 +1000 Date: Thu, 16 Jun 2011 17:58:15 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Stefan Farfeleder In-Reply-To: <20110616065310.GA2542@mole.fafoe.narf.at> Message-ID: <20110616175314.R935@besplex.bde.org> References: <201106160526.p5G5Q3RX013915@svn.freebsd.org> <20110616065310.GA2542@mole.fafoe.narf.at> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Tai-hwa Liang , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223138 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 07:58:20 -0000 On Thu, 16 Jun 2011, Stefan Farfeleder wrote: >> Log: >> Fixing compilation bustage by introducing another forward declaration. >> >> Modified: >> head/sys/ufs/ffs/ffs_extern.h >> >> Modified: head/sys/ufs/ffs/ffs_extern.h >> ============================================================================== >> --- head/sys/ufs/ffs/ffs_extern.h Thu Jun 16 02:27:05 2011 (r223137) >> +++ head/sys/ufs/ffs/ffs_extern.h Thu Jun 16 05:26:03 2011 (r223138) >> @@ -33,6 +33,7 @@ >> #ifndef _UFS_FFS_EXTERN_H >> #define _UFS_FFS_EXTERN_H >> >> +enum vtype; >> struct buf; >> struct cg; >> struct fid; This might unsort the declarations (it isn't clear if the declarations should be sorted on tag name or keyword name). > This is not valid C code. For some reason GCC allows it (with our > compilation flags). This is a bug in gcc-4.2.1. gcc-3.3.3 generates a warning for it even with no compilation flags, while gcc-4.2.1 doesn't generate a warning even with -Wall -std-c99. It takes -pedantic to generate the warning with gcc-4.2.1. TenDRA of course generates an error. It might be a style bug (like typedefing a struct) to use enums for anything. They are impossible to declare opaquely. Bruce From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 08:16:51 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E56B7106566C; Thu, 16 Jun 2011 08:16:51 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail02.syd.optusnet.com.au (mail02.syd.optusnet.com.au [211.29.132.183]) by mx1.freebsd.org (Postfix) with ESMTP id 7F7938FC19; Thu, 16 Jun 2011 08:16:50 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail02.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p5G8Gl93009601 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 16 Jun 2011 18:16:48 +1000 Date: Thu, 16 Jun 2011 18:16:47 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Garrett Cooper In-Reply-To: Message-ID: <20110616180803.D1005@besplex.bde.org> References: <201106160714.p5G7Etfx017112@svn.freebsd.org> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-2089999118-1308212207=:1005" Cc: Tai-hwa Liang , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223139 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 08:16:52 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-2089999118-1308212207=:1005 Content-Type: TEXT/PLAIN; charset=X-UNKNOWN; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE On Thu, 16 Jun 2011, Garrett Cooper wrote: > On Thu, Jun 16, 2011 at 12:19 AM, Garrett Cooper wro= te: >> On Thu, Jun 16, 2011 at 12:14 AM, Tai-hwa Liang wro= te: >>> Author: avatar >>> Date: Thu Jun 16 07:14:55 2011 >>> New Revision: 223139 >>> URL: http://svn.freebsd.org/changeset/base/223139 >>> >>> Log: >>> =A0Unbreaking build on sparc64. Why not fix it on all arches? This seems to break it on all 32-bit arches. >>> =A0Submitted by: Garrett Cooper >>> >>> Modified: >>> =A0head/lib/libstand/zalloc.c >>> >>> Modified: head/lib/libstand/zalloc.c >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D >>> --- head/lib/libstand/zalloc.c =A0Thu Jun 16 05:26:03 2011 =A0 =A0 =A0 = =A0(r223138) >>> +++ head/lib/libstand/zalloc.c =A0Thu Jun 16 07:14:55 2011 =A0 =A0 =A0 = =A0(r223139) >>> @@ -154,7 +154,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by >>> =A0 =A0 if ((char *)ptr < (char *)mp->mp_Base || >>> =A0 =A0 =A0 =A0(char *)ptr + bytes > (char *)mp->mp_End || >>> =A0 =A0 =A0 =A0((iaddr_t)ptr & MEMNODE_SIZE_MASK) !=3D 0) >>> - =A0 =A0 =A0 panic("zfree(%p,%d): wild pointer", ptr, bytes); >>> + =A0 =A0 =A0 panic("zfree(%p,%ju): wild pointer", ptr, bytes); >> >> All of those need to be cast to (uintmax_t). Sorry :(.. Indeed. There is no format letter for intptr_t, and perhaps iaddr_t is supposed to be opaque anyway. > And you need to add #include to stand.h in order to get > uintmax_t. Here's a proper patch for amd64.. This would add namespace pollution. stand.h doesn't use anything in . It depends on normal namespace pollution in an XXX section in for the declaration of uintptr_t. It and other headers should use __uintptr_t instead. Strangely, declares uintptr_t but not uintmax_t. Bruce --0-2089999118-1308212207=:1005-- From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 08:31:07 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0D9821065673; Thu, 16 Jun 2011 08:31:07 +0000 (UTC) (envelope-from sobomax@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F2E8B8FC1A; Thu, 16 Jun 2011 08:31:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G8V6Vv019610; Thu, 16 Jun 2011 08:31:06 GMT (envelope-from sobomax@svn.freebsd.org) Received: (from sobomax@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G8V63X019608; Thu, 16 Jun 2011 08:31:06 GMT (envelope-from sobomax@svn.freebsd.org) Message-Id: <201106160831.p5G8V63X019608@svn.freebsd.org> From: Maxim Sobolev Date: Thu, 16 Jun 2011 08:31:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223143 - head/sbin/hastd X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 08:31:07 -0000 Author: sobomax Date: Thu Jun 16 08:31:06 2011 New Revision: 223143 URL: http://svn.freebsd.org/changeset/base/223143 Log: Revert r222688. Requested by: Mikolaj Golub Modified: head/sbin/hastd/proto_common.c Modified: head/sbin/hastd/proto_common.c ============================================================================== --- head/sbin/hastd/proto_common.c Thu Jun 16 07:27:13 2011 (r223142) +++ head/sbin/hastd/proto_common.c Thu Jun 16 08:31:06 2011 (r223143) @@ -194,8 +194,6 @@ int proto_common_recv(int sock, unsigned char *data, size_t size, int *fdp) { ssize_t done; - size_t total_done, recvsize; - unsigned char *dp; PJDLOG_ASSERT(sock >= 0); @@ -212,19 +210,9 @@ proto_common_recv(int sock, unsigned cha PJDLOG_ASSERT(data != NULL); PJDLOG_ASSERT(size > 0); - total_done = 0; - dp = data; do { - recvsize = size - total_done; - recvsize = recvsize < MAX_SEND_SIZE ? recvsize : MAX_SEND_SIZE; - done = recv(sock, dp, recvsize, MSG_WAITALL); - if (done == -1 && errno == EINTR) - continue; - if (done <= 0) - break; - total_done += done; - dp += done; - } while (total_done < size); + done = recv(sock, data, size, MSG_WAITALL); + } while (done == -1 && errno == EINTR); if (done == 0) { return (ENOTCONN); } else if (done < 0) { From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 09:37:20 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A0B58106566C; Thu, 16 Jun 2011 09:37:20 +0000 (UTC) (envelope-from kevlo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9177F8FC12; Thu, 16 Jun 2011 09:37:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5G9bKCk021960; Thu, 16 Jun 2011 09:37:20 GMT (envelope-from kevlo@svn.freebsd.org) Received: (from kevlo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5G9bKmr021956; Thu, 16 Jun 2011 09:37:20 GMT (envelope-from kevlo@svn.freebsd.org) Message-Id: <201106160937.p5G9bKmr021956@svn.freebsd.org> From: Kevin Lo Date: Thu, 16 Jun 2011 09:37:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223145 - head/sys/net80211 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 09:37:20 -0000 Author: kevlo Date: Thu Jun 16 09:37:20 2011 New Revision: 223145 URL: http://svn.freebsd.org/changeset/base/223145 Log: Change i_len in ieee80211req to be unsigned and fix other signed/unsigned issues. Reviewed by: bschmidt Obtained from: NetBSD Modified: head/sys/net80211/ieee80211_acl.c head/sys/net80211/ieee80211_ioctl.c head/sys/net80211/ieee80211_ioctl.h Modified: head/sys/net80211/ieee80211_acl.c ============================================================================== --- head/sys/net80211/ieee80211_acl.c Thu Jun 16 08:44:26 2011 (r223144) +++ head/sys/net80211/ieee80211_acl.c Thu Jun 16 09:37:20 2011 (r223145) @@ -77,7 +77,7 @@ struct acl { struct aclstate { acl_lock_t as_lock; int as_policy; - int as_nacls; + uint32_t as_nacls; TAILQ_HEAD(, acl) as_list; /* list of all ACL's */ LIST_HEAD(, acl) as_hash[ACL_HASHSIZE]; struct ieee80211vap *as_vap; @@ -289,7 +289,8 @@ acl_getioctl(struct ieee80211vap *vap, s struct aclstate *as = vap->iv_as; struct acl *acl; struct ieee80211req_maclist *ap; - int error, space, i; + int error; + uint32_t i, space; switch (ireq->i_val) { case IEEE80211_MACCMD_POLICY: Modified: head/sys/net80211/ieee80211_ioctl.c ============================================================================== --- head/sys/net80211/ieee80211_ioctl.c Thu Jun 16 08:44:26 2011 (r223144) +++ head/sys/net80211/ieee80211_ioctl.c Thu Jun 16 09:37:20 2011 (r223145) @@ -143,7 +143,7 @@ static __noinline int ieee80211_ioctl_getchaninfo(struct ieee80211vap *vap, struct ieee80211req *ireq) { struct ieee80211com *ic = vap->iv_ic; - int space; + uint32_t space; space = __offsetof(struct ieee80211req_chaninfo, ic_chans[ic->ic_nchans]); @@ -207,7 +207,7 @@ ieee80211_ioctl_getstastats(struct ieee8 { struct ieee80211_node *ni; uint8_t macaddr[IEEE80211_ADDR_LEN]; - const int off = __offsetof(struct ieee80211req_sta_stats, is_stats); + const size_t off = __offsetof(struct ieee80211req_sta_stats, is_stats); int error; if (ireq->i_len < off) @@ -323,7 +323,7 @@ ieee80211_ioctl_getscanresults(struct ie if (req.space > ireq->i_len) req.space = ireq->i_len; if (req.space > 0) { - size_t space; + uint32_t space; void *p; space = req.space; @@ -458,7 +458,7 @@ get_sta_info(void *arg, struct ieee80211 static __noinline int getstainfo_common(struct ieee80211vap *vap, struct ieee80211req *ireq, - struct ieee80211_node *ni, int off) + struct ieee80211_node *ni, size_t off) { struct ieee80211com *ic = vap->iv_ic; struct stainforeq req; @@ -503,7 +503,7 @@ static __noinline int ieee80211_ioctl_getstainfo(struct ieee80211vap *vap, struct ieee80211req *ireq) { uint8_t macaddr[IEEE80211_ADDR_LEN]; - const int off = __offsetof(struct ieee80211req_sta_req, info); + const size_t off = __offsetof(struct ieee80211req_sta_req, info); struct ieee80211_node *ni; int error; Modified: head/sys/net80211/ieee80211_ioctl.h ============================================================================== --- head/sys/net80211/ieee80211_ioctl.h Thu Jun 16 08:44:26 2011 (r223144) +++ head/sys/net80211/ieee80211_ioctl.h Thu Jun 16 09:37:20 2011 (r223145) @@ -578,7 +578,7 @@ struct ieee80211req { char i_name[IFNAMSIZ]; /* if_name, e.g. "wi0" */ uint16_t i_type; /* req type */ int16_t i_val; /* Index or simple value */ - int16_t i_len; /* Index or simple value */ + uint16_t i_len; /* Index or simple value */ void *i_data; /* Extra data */ }; #define SIOCS80211 _IOW('i', 234, struct ieee80211req) From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 11:43:17 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DCAD41065678; Thu, 16 Jun 2011 11:43:17 +0000 (UTC) (envelope-from avatar@mmlab.cse.yzu.edu.tw) Received: from www.mmlab.cse.yzu.edu.tw (www.mmlab.cse.yzu.edu.tw [140.138.150.166]) by mx1.freebsd.org (Postfix) with ESMTP id 48F048FC19; Thu, 16 Jun 2011 11:43:17 +0000 (UTC) Received: by www.mmlab.cse.yzu.edu.tw (qmail, from userid 1000) id 5E6B52EC686B; Thu, 16 Jun 2011 19:24:27 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mmlab.cse.yzu.edu.tw; s=test; t=1308223467; bh=tun5da0OQEXwDzIyw/c/SX+KoMfFhCqWc92OiBosWFg=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References: MIME-Version:Content-Type; b=Ccy3uSNme4OaUfRS0zwJjSmoPk0F63IKkHNiUrcY5kgbZIv79f8aEo9B4cMfFA+Pv XF2LHvbYfWhLxmwiYYB0FiQFVU2IaXVVwV/a8KsKcMdXxUZ23mt9ZgNke376BWjGIe efMSOvUuGdSL5M9cKBT9EL5u8PS83BNzpQgbWMdc= Received: from localhost (localhost [127.0.0.1]) by www.mmlab.cse.yzu.edu.tw (qmail) with ESMTP id 5DEEF2EC6866; Thu, 16 Jun 2011 19:24:27 +0800 (CST) Date: Thu, 16 Jun 2011 19:24:27 +0800 (CST) From: Tai-hwa Liang To: Bruce Evans In-Reply-To: <20110616175314.R935@besplex.bde.org> Message-ID: <1106161923211.44181@www.mmlab.cse.yzu.edu.tw> References: <201106160526.p5G5Q3RX013915@svn.freebsd.org> <20110616065310.GA2542@mole.fafoe.narf.at> <20110616175314.R935@besplex.bde.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Tai-hwa Liang , svn-src-head@freebsd.org, svn-src-all@freebsd.org, Stefan Farfeleder , src-committers@freebsd.org Subject: Re: svn commit: r223138 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 11:43:18 -0000 On Thu, 16 Jun 2011, Bruce Evans wrote: > On Thu, 16 Jun 2011, Stefan Farfeleder wrote: > >>> Log: >>> Fixing compilation bustage by introducing another forward declaration. >>> >>> Modified: >>> head/sys/ufs/ffs/ffs_extern.h >>> >>> Modified: head/sys/ufs/ffs/ffs_extern.h >>> ============================================================================== >>> --- head/sys/ufs/ffs/ffs_extern.h Thu Jun 16 02:27:05 2011 >>> (r223137) >>> +++ head/sys/ufs/ffs/ffs_extern.h Thu Jun 16 05:26:03 2011 >>> (r223138) >>> @@ -33,6 +33,7 @@ >>> #ifndef _UFS_FFS_EXTERN_H >>> #define _UFS_FFS_EXTERN_H >>> >>> +enum vtype; >>> struct buf; >>> struct cg; >>> struct fid; > > This might unsort the declarations (it isn't clear if the declarations > should be sorted on tag name or keyword name). > >> This is not valid C code. For some reason GCC allows it (with our >> compilation flags). > > This is a bug in gcc-4.2.1. gcc-3.3.3 generates a warning for it even > with no compilation flags, while gcc-4.2.1 doesn't generate a warning > even with -Wall -std-c99. It takes -pedantic to generate the warning > with gcc-4.2.1. TenDRA of course generates an error. > > It might be a style bug (like typedefing a struct) to use enums for > anything. They are impossible to declare opaquely. Does that mean we have to #include in userland makefs/ffs/ffs_bswap.c? From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 11:57:29 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 770F8106566C; Thu, 16 Jun 2011 11:57:29 +0000 (UTC) (envelope-from avatar@mmlab.cse.yzu.edu.tw) Received: from www.mmlab.cse.yzu.edu.tw (www.mmlab.cse.yzu.edu.tw [140.138.150.166]) by mx1.freebsd.org (Postfix) with ESMTP id D61A18FC27; Thu, 16 Jun 2011 11:57:28 +0000 (UTC) Received: by www.mmlab.cse.yzu.edu.tw (qmail, from userid 1000) id F14E52EC686B; Thu, 16 Jun 2011 19:57:27 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mmlab.cse.yzu.edu.tw; s=test; t=1308225448; bh=xOQP7v/8pMku6Zpok4C492cQvgxdyH2mupO3/OGUTXI=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References: MIME-Version:Content-Type; b=hboVk6+YhzgAL47FNtu/jXE/VqlSJsp0B5QOQV9eaL3Y34C5/5Ih3i8gv3NBjbPkc pEyPf6McoheaUHJZf/5z3AdenibOz9On4JZBJ8HuRCNvcKXZtAftfowZr16bERifJA Wlm76J4M8SYjp0yYRICGU/QYEsehvhPdZ6+/iBj0= Received: from localhost (localhost [127.0.0.1]) by www.mmlab.cse.yzu.edu.tw (qmail) with ESMTP id F0C932EC6866; Thu, 16 Jun 2011 19:57:27 +0800 (CST) Date: Thu, 16 Jun 2011 19:57:27 +0800 (CST) From: Tai-hwa Liang To: Bruce Evans In-Reply-To: <20110616180803.D1005@besplex.bde.org> Message-ID: <11061619555315.44181@www.mmlab.cse.yzu.edu.tw> References: <201106160714.p5G7Etfx017112@svn.freebsd.org> <20110616180803.D1005@besplex.bde.org> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="3425325993-407207228-1308225447=:44181" Cc: Garrett Cooper , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223139 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 11:57:29 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --3425325993-407207228-1308225447=:44181 Content-Type: TEXT/PLAIN; charset=big5; format=flowed Content-Transfer-Encoding: 8BIT On Thu, 16 Jun 2011, Bruce Evans wrote: > On Thu, 16 Jun 2011, Garrett Cooper wrote: > >> On Thu, Jun 16, 2011 at 12:19 AM, Garrett Cooper >> wrote: >>> On Thu, Jun 16, 2011 at 12:14 AM, Tai-hwa Liang >>> wrote: >>>> Author: avatar >>>> Date: Thu Jun 16 07:14:55 2011 >>>> New Revision: 223139 >>>> URL: http://svn.freebsd.org/changeset/base/223139 >>>> >>>> Log: >>>>  Unbreaking build on sparc64. > > Why not fix it on all arches? This seems to break it on all 32-bit arches. > >>>>  Submitted by: Garrett Cooper >>>> >>>> Modified: >>>>  head/lib/libstand/zalloc.c >>>> >>>> Modified: head/lib/libstand/zalloc.c >>>> ============================================================================== >>>> --- head/lib/libstand/zalloc.c  Thu Jun 16 05:26:03 2011        (r223138) >>>> +++ head/lib/libstand/zalloc.c  Thu Jun 16 07:14:55 2011        (r223139) >>>> @@ -154,7 +154,7 @@ zfree(MemPool *mp, void *ptr, iaddr_t by >>>>     if ((char *)ptr < (char *)mp->mp_Base || >>>>        (char *)ptr + bytes > (char *)mp->mp_End || >>>>        ((iaddr_t)ptr & MEMNODE_SIZE_MASK) != 0) >>>> -       panic("zfree(%p,%d): wild pointer", ptr, bytes); >>>> +       panic("zfree(%p,%ju): wild pointer", ptr, bytes); >>> >>> All of those need to be cast to (uintmax_t). Sorry :(.. > > Indeed. There is no format letter for intptr_t, and perhaps iaddr_t is > supposed to be opaque anyway. > >> And you need to add #include to stand.h in order to get >> uintmax_t. Here's a proper patch for amd64.. > > This would add namespace pollution. stand.h doesn't use anything in > . It depends on normal namespace pollution in an XXX section > in for the declaration of uintptr_t. It and other headers > should use __uintptr_t instead. Strangely, declares > uintptr_t but not uintmax_t. What about casting to __uintmax_t instead? Index: zalloc.c =================================================================== --- zalloc.c (revision 223146) +++ zalloc.c (working copy) @@ -154,7 +154,7 @@ if ((char *)ptr < (char *)mp->mp_Base || (char *)ptr + bytes > (char *)mp->mp_End || ((iaddr_t)ptr & MEMNODE_SIZE_MASK) != 0) - panic("zfree(%p,%ju): wild pointer", ptr, bytes); + panic("zfree(%p,%ju): wild pointer", ptr, (__uintmax_t)bytes); /* * free the segment @@ -177,8 +177,10 @@ /* * range check */ - if ((char *)ptr + bytes > (char *)mn) - panic("zfree(%p,%ju): corrupt memlist1",ptr, bytes); + if ((char *)ptr + bytes > (char *)mn) { + panic("zfree(%p,%ju): corrupt memlist1", ptr, + (__uintmax_t)bytes); + } /* * merge against next area or create independant area @@ -208,8 +210,10 @@ return; /* NOT REACHED */ } - if ((char *)ptr < (char *)mn + mn->mr_Bytes) - panic("zfree(%p,%ju): corrupt memlist2", ptr, bytes); + if ((char *)ptr < (char *)mn + mn->mr_Bytes) { + panic("zfree(%p,%ju): corrupt memlist2", ptr, + (__uintmax_t)bytes); + } } /* * We are beyond the last MemNode, append new MemNode. Merge against --3425325993-407207228-1308225447=:44181-- From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 12:28:37 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE333106564A; Thu, 16 Jun 2011 12:28:37 +0000 (UTC) (envelope-from ru@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ACAEE8FC13; Thu, 16 Jun 2011 12:28:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GCSbtp029284; Thu, 16 Jun 2011 12:28:37 GMT (envelope-from ru@svn.freebsd.org) Received: (from ru@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GCSbuw029278; Thu, 16 Jun 2011 12:28:37 GMT (envelope-from ru@svn.freebsd.org) Message-Id: <201106161228.p5GCSbuw029278@svn.freebsd.org> From: Ruslan Ermilov Date: Thu, 16 Jun 2011 12:28:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223148 - in head: . share/examples/etc share/man/man5 share/man/man7 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 12:28:37 -0000 Author: ru Date: Thu Jun 16 12:28:37 2011 New Revision: 223148 URL: http://svn.freebsd.org/changeset/base/223148 Log: It's a bit odd, but "make update" in src/ can also update the ports/, doc/, and now www/ trees, but only using the "cvsup" transport. When "make update" is run using a tree's makefile, it can also use "cvs" (except for www/) and "svn" (only src/). Clean up documentation and code regarding "make update": - Increase oddness by adding support for WWWSUPFILE and NO_WWWUPDATE to Makefile.inc1 (analogous to PORTSSUPFILE/NO_PORTSUPDATE and DOCSUPFILE/NO_DOCUPDATE; WWWSUPFILE already supported by www/Makefile). - Document all trees that support CVS_UPDATE. - Document all trees that support SUP_UPDATE. - Document SVN_UPDATE. - Document NO_WWWUPDATE. - make.conf(5) mistakenly said that *SUPFILE* had defaults. - Add an example entry for WWWSUPFILE. Modified: head/Makefile head/Makefile.inc1 head/share/examples/etc/make.conf head/share/man/man5/make.conf.5 head/share/man/man7/build.7 Modified: head/Makefile ============================================================================== --- head/Makefile Thu Jun 16 12:24:02 2011 (r223147) +++ head/Makefile Thu Jun 16 12:28:37 2011 (r223148) @@ -19,7 +19,7 @@ # kernel - buildkernel + installkernel. # kernel-toolchain - Builds the subset of world necessary to build a kernel # doxygen - Build API documentation of the kernel, needs doxygen. -# update - Convenient way to update your source tree (cvs). +# update - Convenient way to update your source tree(s). # check-old - List obsolete directories/files/libraries. # check-old-dirs - List obsolete directories. # check-old-files - List obsolete files. Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Thu Jun 16 12:24:02 2011 (r223147) +++ head/Makefile.inc1 Thu Jun 16 12:28:37 2011 (r223148) @@ -12,6 +12,7 @@ # -DNO_KERNELOBJ do not run ${MAKE} obj in ${MAKE} buildkernel # -DNO_PORTSUPDATE do not update ports in ${MAKE} update # -DNO_DOCUPDATE do not update doc in ${MAKE} update +# -DNO_WWWUPDATE do not update www in ${MAKE} update # -DNO_CTF do not run the DTrace CTF conversion tools on built objects # LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list # TARGET="machine" to crossbuild world for a different machine type @@ -904,7 +905,7 @@ doxygen: # # update # -# Update the source tree, by running cvsup and/or running cvs to update to the +# Update the source tree(s), by running cvsup/cvs/svn to update to the # latest copy. # update: @@ -927,6 +928,9 @@ update: .if defined(DOCSUPFILE) && !defined(NO_DOCUPDATE) @${SUP} ${SUPFLAGS} ${DOCSUPFILE} .endif +.if defined(WWWSUPFILE) && !defined(NO_WWWUPDATE) + @${SUP} ${SUPFLAGS} ${WWWSUPFILE} +.endif .endif .if defined(CVS_UPDATE) @cd ${.CURDIR} ; \ Modified: head/share/examples/etc/make.conf ============================================================================== --- head/share/examples/etc/make.conf Thu Jun 16 12:24:02 2011 (r223147) +++ head/share/examples/etc/make.conf Thu Jun 16 12:28:37 2011 (r223148) @@ -188,6 +188,7 @@ #SUPFILE= /usr/share/examples/cvsup/standard-supfile #PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile #DOCSUPFILE= /usr/share/examples/cvsup/doc-supfile +#WWWSUPFILE= /usr/share/examples/cvsup/www-supfile # # top(1) uses a hash table for the user names. The size of this hash # can be tuned to match the number of local users. The table size should Modified: head/share/man/man5/make.conf.5 ============================================================================== --- head/share/man/man5/make.conf.5 Thu Jun 16 12:24:02 2011 (r223147) +++ head/share/man/man5/make.conf.5 Thu Jun 16 12:28:37 2011 (r223148) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 15, 2009 +.Dd June 16, 2011 .Dt MAKE.CONF 5 .Os .Sh NAME @@ -181,7 +181,11 @@ options. .Pq Vt bool Set this to use .Xr cvs 1 -to update your ports with +to update your +.Pa src , ports +and +.Pa doc +trees with .Dq Li "make update" . .It Va CXXFLAGS .Pq Vt str @@ -202,8 +206,8 @@ The documentation .Ar supfile to use when doing a .Dq Li "make update" . -This defaults to -.Pa /usr/share/examples/cvsup/doc\-supfile . +For example, +.Pa /usr/share/examples/cvsup/doc-supfile . .It Va INSTALL .Pq Vt str the default install command. @@ -259,14 +263,18 @@ Set this to not update the doc tree duri .Pq Vt bool Set this to not update the ports tree during .Dq Li "make update" . +.It Va NO_WWWUPDATE +.Pq Vt bool +Set this to not update the www tree during +.Dq Li "make update" . .It Va PORTSSUPFILE .Pq Vt str The ports .Ar supfile to use when doing a .Dq Li "make update" . -This defaults to -.Pa /usr/share/examples/cvsup/ports\-supfile . +For example, +.Pa /usr/share/examples/cvsup/ports-supfile . .It Va SUP .Pq Vt str The location of the @@ -281,24 +289,20 @@ The first .Ar supfile to use when doing a .Dq Li "make update" . -This defaults to -.Pa /usr/share/examples/cvsup/standard\-supfile . +For example, +.Pa /usr/share/examples/cvsup/standard-supfile . .It Va SUPFILE1 .Pq Vt str The second .Ar supfile to use when doing a .Dq Li "make update" . -This defaults to -.Pa /usr/share/examples/cvsup/secure\-supfile . .It Va SUPFILE2 .Pq Vt str The third .Ar supfile to use when doing a .Dq Li "make update" . -This defaults to -.Pa /usr/share/examples/cvsup/secure\-supfile . .It Va SUPFLAGS .Pq Vt str The flag for the @@ -315,16 +319,28 @@ The hostname of the sup server to use wh .Pq Vt bool Set this to use .Xr cvsup 1 -to update your ports with +to update your +.Pa src , ports , doc +and +.Pa www +trees with +.Dq Li "make update" . +.It Va SVN_UPDATE +.Pq Vt bool +Set this to use +.Xr svn 1 +to update your +.Pa src +tree with .Dq Li "make update" . .It Va WWWSUPFILE .Pq Vt str The www .Ar supfile to use when doing a -.Dq Li "make update" -This defaults to -.Pa /usr/share/examples/cvsup/www\-supfile . +.Dq Li "make update" . +For example, +.Pa /usr/share/examples/cvsup/www-supfile . .El .Ss "BUILDING THE KERNEL" The following list provides a name and short description for variables @@ -730,6 +746,7 @@ filter, or both. .Bl -tag -width ".Pa /usr/share/examples/etc/make.conf" -compact .It Pa /etc/make.conf .It Pa /usr/doc/Makefile +.It Pa /usr/ports/Makefile .It Pa /usr/share/examples/etc/make.conf .It Pa /usr/share/mk/sys.mk .It Pa /usr/src/Makefile Modified: head/share/man/man7/build.7 ============================================================================== --- head/share/man/man7/build.7 Thu Jun 16 12:24:02 2011 (r223147) +++ head/share/man/man7/build.7 Thu Jun 16 12:28:37 2011 (r223148) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 18, 2011 +.Dd June 16, 2011 .Dt BUILD 7 .Os .Sh NAME @@ -517,6 +517,10 @@ target. If set, the update process does not update the Ports tree as part of the .Dq make update target. +.It Va NO_WWWUPDATE +If set, the update process does not update the www tree as part of the +.Dq make update +target. .El .Pp Builds under directory From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 14:06:49 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3A09A106564A; Thu, 16 Jun 2011 14:06:49 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail06.syd.optusnet.com.au (mail06.syd.optusnet.com.au [211.29.132.187]) by mx1.freebsd.org (Postfix) with ESMTP id C7DAA8FC13; Thu, 16 Jun 2011 14:06:48 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail06.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p5GE6hF2030993 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 17 Jun 2011 00:06:46 +1000 Date: Fri, 17 Jun 2011 00:06:43 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Tai-hwa Liang In-Reply-To: <11061619555315.44181@www.mmlab.cse.yzu.edu.tw> Message-ID: <20110616235239.D1926@besplex.bde.org> References: <201106160714.p5G7Etfx017112@svn.freebsd.org> <20110616180803.D1005@besplex.bde.org> <11061619555315.44181@www.mmlab.cse.yzu.edu.tw> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Garrett Cooper , svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Bruce Evans Subject: Re: svn commit: r223139 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 14:06:49 -0000 On Thu, 16 Jun 2011, Tai-hwa Liang wrote: > On Thu, 16 Jun 2011, Bruce Evans wrote: > >> On Thu, 16 Jun 2011, Garrett Cooper wrote: >>> >>> And you need to add #include to stand.h in order to get >>> uintmax_t. Here's a proper patch for amd64.. >> >> This would add namespace pollution. stand.h doesn't use anything in >> . It depends on normal namespace pollution in an XXX section >> in for the declaration of uintptr_t. It and other headers >> should use __uintptr_t instead. Strangely, declares >> uintptr_t but not uintmax_t. > > What about casting to __uintmax_t instead? > > Index: zalloc.c > =================================================================== > --- zalloc.c (revision 223146) > +++ zalloc.c (working copy) > @@ -154,7 +154,7 @@ > if ((char *)ptr < (char *)mp->mp_Base || > (char *)ptr + bytes > (char *)mp->mp_End || > ((iaddr_t)ptr & MEMNODE_SIZE_MASK) != 0) > - panic("zfree(%p,%ju): wild pointer", ptr, bytes); > + panic("zfree(%p,%ju): wild pointer", ptr, (__uintmax_t)bytes); > ... zalloc.c is not the (header) implementation, so it should not use the implementation detail (anything beginning with __). The latest tinderbox errors for this are hard to understand. For amd64 they say: > /src/lib/libstand/zalloc.c: In function 'zfree': > /src/lib/libstand/zalloc.c:157: warning: format '%ju' expects type 'uintmax_t', but argument 3 has type 'iaddr_t' but amd64 seems to be just like sparc64 -- both seem to declare all the types as `unsigned long' at the lowest level. I would expect all 64-bit arches to do this, although this is logically wrong (it makes the largest integral type uintmax_t logically smaller than the standard bogus type unsigned long long). This logic error is partly intentional (it detects different type mismatches than uintmax_t = `unsigned long long' combined with uint64_t = `unsigned long' would). Bruce From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 14:12:58 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 08201106566C; Thu, 16 Jun 2011 14:12:58 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail03.syd.optusnet.com.au (mail03.syd.optusnet.com.au [211.29.132.184]) by mx1.freebsd.org (Postfix) with ESMTP id 7B2BC8FC26; Thu, 16 Jun 2011 14:12:57 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail03.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p5GECsJk012067 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 17 Jun 2011 00:12:55 +1000 Date: Fri, 17 Jun 2011 00:12:54 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Tai-hwa Liang In-Reply-To: <1106161923211.44181@www.mmlab.cse.yzu.edu.tw> Message-ID: <20110617000654.W1926@besplex.bde.org> References: <201106160526.p5G5Q3RX013915@svn.freebsd.org> <20110616065310.GA2542@mole.fafoe.narf.at> <20110616175314.R935@besplex.bde.org> <1106161923211.44181@www.mmlab.cse.yzu.edu.tw> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org, Stefan Farfeleder , Bruce Evans , Tai-hwa Liang Subject: Re: svn commit: r223138 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 14:12:58 -0000 On Thu, 16 Jun 2011, Tai-hwa Liang wrote: > On Thu, 16 Jun 2011, Bruce Evans wrote: >> It might be a style bug (like typedefing a struct) to use enums for >> anything. They are impossible to declare opaquely. > > Does that mean we have to #include in userland > makefs/ffs/ffs_bswap.c? It means that you should implement headers properly, so that they don't depend on other headers to begin with or grow dependencies on other headers. Though the should-be-kernel-only header has some parts including `enum vtype' that have already escaped to userland, other headers shouldn't grow dependencies on these. Bruce From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 15:12:28 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 032CC106564A; Thu, 16 Jun 2011 15:12:28 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id 7F19B8FC0A; Thu, 16 Jun 2011 15:12:27 +0000 (UTC) Received: by vws18 with SMTP id 18so1756134vws.13 for ; Thu, 16 Jun 2011 08:12:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=PVMj6KjAvYQhaWruv6AeZL8IIXQ95YPtBX/Yui5OUOw=; b=oUIeQEJ7Ps3PBvz5mJ1HAMpLaGHcykdnKjMkVGATgX2kj1tfsGJrdG2hrc0xWhX9hJ 6DQmBw08s5ev++8dFOEuUQ7hEkHy0ZwXMqa6cSixCrcOn+VQX9v3ffY9tVbHjwhHG79U QoedczFK4dnhKpqPYJb2ftjcpxwCq12WW5g/o= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=gGEyXK7vCV3sX4AIUNoMGIaxa+QUZY2dvNvHggRmPprbRh83p+uovd1lrfuY/GScvD BK0eOnVnHtK6rTkUV8iDHL3NFH2/DEb4HAvwtMSNeK4ebr0lv5cmxk4EufKn+KRsYkM4 Oy1aIGiPP7Z8dXFpF0YmZUJPNjD5G0/0KRELM= MIME-Version: 1.0 Received: by 10.220.48.136 with SMTP id r8mr21843vcf.93.1308237146606; Thu, 16 Jun 2011 08:12:26 -0700 (PDT) Received: by 10.220.189.202 with HTTP; Thu, 16 Jun 2011 08:12:26 -0700 (PDT) In-Reply-To: <20110616235239.D1926@besplex.bde.org> References: <201106160714.p5G7Etfx017112@svn.freebsd.org> <20110616180803.D1005@besplex.bde.org> <11061619555315.44181@www.mmlab.cse.yzu.edu.tw> <20110616235239.D1926@besplex.bde.org> Date: Thu, 16 Jun 2011 08:12:26 -0700 Message-ID: From: Garrett Cooper To: Bruce Evans Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Tai-hwa Liang , src-committers@freebsd.org Subject: Re: svn commit: r223139 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 15:12:28 -0000 On Thu, Jun 16, 2011 at 7:06 AM, Bruce Evans wrote: > On Thu, 16 Jun 2011, Tai-hwa Liang wrote: > >> On Thu, 16 Jun 2011, Bruce Evans wrote: >> >>> On Thu, 16 Jun 2011, Garrett Cooper wrote: >>>> >>>> And you need to add #include to stand.h in order to get >>>> uintmax_t. Here's a proper patch for amd64.. >>> >>> This would add namespace pollution. =A0stand.h doesn't use anything in >>> . =A0It depends on normal namespace pollution in an XXX secti= on >>> in for the declaration of uintptr_t. =A0It and other head= ers >>> should use __uintptr_t instead. =A0Strangely, declares >>> uintptr_t but not uintmax_t. >> >> =A0What about casting to __uintmax_t instead? >> >> Index: zalloc.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- zalloc.c =A0 =A0(revision 223146) >> +++ zalloc.c =A0 =A0(working copy) >> @@ -154,7 +154,7 @@ >> =A0 =A0if ((char *)ptr < (char *)mp->mp_Base || >> =A0 =A0 =A0 =A0(char *)ptr + bytes > (char *)mp->mp_End || >> =A0 =A0 =A0 =A0((iaddr_t)ptr & MEMNODE_SIZE_MASK) !=3D 0) >> - =A0 =A0 =A0 panic("zfree(%p,%ju): wild pointer", ptr, bytes); >> + =A0 =A0 =A0 panic("zfree(%p,%ju): wild pointer", ptr, (__uintmax_t)byt= es); >> ... > > zalloc.c is not the (header) implementation, so it should not use the > implementation detail (anything beginning with __). > > The latest tinderbox errors for this are hard to understand. =A0For amd64 > they say: > >> /src/lib/libstand/zalloc.c: In function 'zfree': >> /src/lib/libstand/zalloc.c:157: warning: format '%ju' expects type >> 'uintmax_t', but argument 3 has type 'iaddr_t' > > but amd64 seems to be just like sparc64 -- both seem to declare all the > types as `unsigned long' at the lowest level. =A0I would expect all 64-bi= t > arches to do this, although this is logically wrong (it makes the largest > integral type uintmax_t logically smaller than the standard bogus type > unsigned long long). =A0This logic error is partly intentional (it detect= s > different type mismatches than uintmax_t =3D `unsigned long long' combine= d > with uint64_t =3D `unsigned long' would). My second patch when applied gets one past tinderbox on powerpc.. waiting for powerpc64 and sparc64 to complete. Namespace pollution is one thing, but stdint.h isn't that bad IMHO -- I just find it funny that iaddr_t had to be typedef'ed to uintptr_t in the first place. Thanks! -Garrett From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 15:23:55 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3755E1065687; Thu, 16 Jun 2011 15:23:55 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id A65E38FC19; Thu, 16 Jun 2011 15:23:54 +0000 (UTC) Received: by vws18 with SMTP id 18so1769849vws.13 for ; Thu, 16 Jun 2011 08:23:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=OpM/7Zl6BfLIYht2At9GyZt8We9Rgtxzci9/8x4L38I=; b=kYqvZGj1kU/LKAKhdNTAStnvi5nh0wrX08X96NNLEn+OOa00eRhifxLK8viHVMbWun az0EZ80N0f8bCa4TNyJcJRmLE56ZSB/STSjbaqShouinLpShaj74MZnDrWeQeJOEdeja 2Iz+rQNJe/qUBY6tjpfhfrUX69AehYKeNWFhk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=Hh/6uDf8GwZ3zdBoHKcrvcsYhrOyE9y27vheFBMdjMKjSinWMNNN2Y+pFRKSUzA+h8 vPY7qxIPh/0kNW9xU7hDbJUU2dt8YwSpt36J2G42/wGEOgq1ptzGWlE21aer2Ozh0rUJ vFFgBYkGTN91K/CRHzRXPrPmST5kzprK/6LKU= MIME-Version: 1.0 Received: by 10.220.210.69 with SMTP id gj5mr397098vcb.58.1308237833488; Thu, 16 Jun 2011 08:23:53 -0700 (PDT) Received: by 10.220.189.202 with HTTP; Thu, 16 Jun 2011 08:23:53 -0700 (PDT) In-Reply-To: References: <201106160714.p5G7Etfx017112@svn.freebsd.org> <20110616180803.D1005@besplex.bde.org> <11061619555315.44181@www.mmlab.cse.yzu.edu.tw> <20110616235239.D1926@besplex.bde.org> Date: Thu, 16 Jun 2011 08:23:53 -0700 Message-ID: From: Garrett Cooper To: Bruce Evans Content-Type: multipart/mixed; boundary=0022154700ae58cacb04a5d5dba8 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Tai-hwa Liang , src-committers@freebsd.org Subject: Re: svn commit: r223139 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 15:23:55 -0000 --0022154700ae58cacb04a5d5dba8 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Thu, Jun 16, 2011 at 8:12 AM, Garrett Cooper wrote: > On Thu, Jun 16, 2011 at 7:06 AM, Bruce Evans wrote= : >> On Thu, 16 Jun 2011, Tai-hwa Liang wrote: >> >>> On Thu, 16 Jun 2011, Bruce Evans wrote: >>> >>>> On Thu, 16 Jun 2011, Garrett Cooper wrote: >>>>> >>>>> And you need to add #include to stand.h in order to get >>>>> uintmax_t. Here's a proper patch for amd64.. >>>> >>>> This would add namespace pollution. =A0stand.h doesn't use anything in >>>> . =A0It depends on normal namespace pollution in an XXX sect= ion >>>> in for the declaration of uintptr_t. =A0It and other hea= ders >>>> should use __uintptr_t instead. =A0Strangely, declares >>>> uintptr_t but not uintmax_t. >>> >>> =A0What about casting to __uintmax_t instead? >>> >>> Index: zalloc.c >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >>> --- zalloc.c =A0 =A0(revision 223146) >>> +++ zalloc.c =A0 =A0(working copy) >>> @@ -154,7 +154,7 @@ >>> =A0 =A0if ((char *)ptr < (char *)mp->mp_Base || >>> =A0 =A0 =A0 =A0(char *)ptr + bytes > (char *)mp->mp_End || >>> =A0 =A0 =A0 =A0((iaddr_t)ptr & MEMNODE_SIZE_MASK) !=3D 0) >>> - =A0 =A0 =A0 panic("zfree(%p,%ju): wild pointer", ptr, bytes); >>> + =A0 =A0 =A0 panic("zfree(%p,%ju): wild pointer", ptr, (__uintmax_t)by= tes); >>> ... >> >> zalloc.c is not the (header) implementation, so it should not use the >> implementation detail (anything beginning with __). >> >> The latest tinderbox errors for this are hard to understand. =A0For amd6= 4 >> they say: >> >>> /src/lib/libstand/zalloc.c: In function 'zfree': >>> /src/lib/libstand/zalloc.c:157: warning: format '%ju' expects type >>> 'uintmax_t', but argument 3 has type 'iaddr_t' >> >> but amd64 seems to be just like sparc64 -- both seem to declare all the >> types as `unsigned long' at the lowest level. =A0I would expect all 64-b= it >> arches to do this, although this is logically wrong (it makes the larges= t >> integral type uintmax_t logically smaller than the standard bogus type >> unsigned long long). =A0This logic error is partly intentional (it detec= ts >> different type mismatches than uintmax_t =3D `unsigned long long' combin= ed >> with uint64_t =3D `unsigned long' would). > > =A0 =A0My second patch when applied gets one past tinderbox on powerpc.. > waiting for powerpc64 and sparc64 to complete. Namespace pollution is > one thing, but stdint.h isn't that bad IMHO -- I just find it funny > that iaddr_t had to be typedef'ed to uintptr_t in the first place. This needs to be committed to unbreak ia64 and mips64*. Still waiting to see what happens with sparc64, but amd64 and powerpc64 were oddly happy without this, even though they should have failed along with ia64 and mips64* (the format string should have been %zu for a size_t type). Will rerun universe once it completes on amd64, ia64 and sparc64 though later on today.. Thanks! -Garrett --0022154700ae58cacb04a5d5dba8 Content-Type: text/x-patch; charset=US-ASCII; name="fix-libstand-zalloc_malloc-ia64+mips64.patch" Content-Disposition: attachment; filename="fix-libstand-zalloc_malloc-ia64+mips64.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gozuw1d90 SW5kZXg6IGxpYi9saWJzdGFuZC96YWxsb2NfbWFsbG9jLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL2xp YnN0YW5kL3phbGxvY19tYWxsb2MuYwkocmV2aXNpb24gMjIzMTQwKQorKysgbGliL2xpYnN0YW5k L3phbGxvY19tYWxsb2MuYwkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBACiAJICAg IHJldHVybjsKIAl9CiAJaWYgKCooKHNpZ25lZCBjaGFyICopcmVzICsgcmVzLT5nYV9CeXRlcyAt IDEpICE9IC0yKQotCSAgICBwYW5pYygiZnJlZTogZ3VhcmQyIGZhaWwgQCAlcCArICVkIGZyb20g JXM6JWQiLCBwdHIsIHJlcy0+Z2FfQnl0ZXMgLSBNQUxMT0NBTElHTiwgZmlsZSwgbGluZSk7CisJ ICAgIHBhbmljKCJmcmVlOiBndWFyZDIgZmFpbCBAICVwICsgJXp1IGZyb20gJXM6JWQiLCBwdHIs IHJlcy0+Z2FfQnl0ZXMgLSBNQUxMT0NBTElHTiwgZmlsZSwgbGluZSk7CiAJKigoc2lnbmVkIGNo YXIgKilyZXMgKyByZXMtPmdhX0J5dGVzIC0gMSkgPSAtMTsKICNlbmRpZgogCg== --0022154700ae58cacb04a5d5dba8-- From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 15:35:12 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A37C9106566B; Thu, 16 Jun 2011 15:35:12 +0000 (UTC) (envelope-from avatar@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9439B8FC16; Thu, 16 Jun 2011 15:35:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GFZCii034906; Thu, 16 Jun 2011 15:35:12 GMT (envelope-from avatar@svn.freebsd.org) Received: (from avatar@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GFZCb7034904; Thu, 16 Jun 2011 15:35:12 GMT (envelope-from avatar@svn.freebsd.org) Message-Id: <201106161535.p5GFZCb7034904@svn.freebsd.org> From: Tai-hwa Liang Date: Thu, 16 Jun 2011 15:35:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223151 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 15:35:12 -0000 Author: avatar Date: Thu Jun 16 15:35:12 2011 New Revision: 223151 URL: http://svn.freebsd.org/changeset/base/223151 Log: Using the correct format string(%zu) for size_t type. This should fix 64 bits builds. Submitted by: Garrett Cooper Modified: head/lib/libstand/zalloc_malloc.c Modified: head/lib/libstand/zalloc_malloc.c ============================================================================== --- head/lib/libstand/zalloc_malloc.c Thu Jun 16 12:57:33 2011 (r223150) +++ head/lib/libstand/zalloc_malloc.c Thu Jun 16 15:35:12 2011 (r223151) @@ -110,7 +110,7 @@ Free(void *ptr, const char *file, int li return; } if (*((signed char *)res + res->ga_Bytes - 1) != -2) - panic("free: guard2 fail @ %p + %d from %s:%d", ptr, res->ga_Bytes - MALLOCALIGN, file, line); + panic("free: guard2 fail @ %p + %zu from %s:%d", ptr, res->ga_Bytes - MALLOCALIGN, file, line); *((signed char *)res + res->ga_Bytes - 1) = -1; #endif From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 15:36:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E906B1065673; Thu, 16 Jun 2011 15:36:09 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D90F88FC0C; Thu, 16 Jun 2011 15:36:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GFa9wx034971; Thu, 16 Jun 2011 15:36:09 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GFa9F3034968; Thu, 16 Jun 2011 15:36:09 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201106161536.p5GFa9F3034968@svn.freebsd.org> From: Michael Tuexen Date: Thu, 16 Jun 2011 15:36:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223152 - in head: lib/libc/net sys/netinet X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 15:36:10 -0000 Author: tuexen Date: Thu Jun 16 15:36:09 2011 New Revision: 223152 URL: http://svn.freebsd.org/changeset/base/223152 Log: * Fix the handling of addresses in sctp_sendv(). * Add support for SCTP_SENDV_NOINFO. * Improve the error handling of sctp_sendv() and sctp_recv(). MFC after: 1 month Modified: head/lib/libc/net/sctp_sys_calls.c head/sys/netinet/sctp_uio.h Modified: head/lib/libc/net/sctp_sys_calls.c ============================================================================== --- head/lib/libc/net/sctp_sys_calls.c Thu Jun 16 15:35:12 2011 (r223151) +++ head/lib/libc/net/sctp_sys_calls.c Thu Jun 16 15:36:09 2011 (r223152) @@ -942,6 +942,12 @@ sctp_recvv(int sd, struct sctp_rcvinfo *rcvinfo; struct sctp_nxtinfo *nxtinfo; + if (((info != NULL) && (infolen == NULL)) | + ((info == NULL) && (infolen != NULL) && (*infolen != 0)) || + ((info != NULL) && (infotype == NULL))) { + errno = EINVAL; + return (-1); + } if (infotype) { *infotype = SCTP_RECVV_NOINFO; } @@ -1017,16 +1023,22 @@ sctp_sendv(int sd, { ssize_t ret; int i; - size_t addr_len; - struct sctp_sendv_spa *spa_info; + socklen_t addr_len; struct msghdr msg; + in_port_t port; + struct sctp_sendv_spa *spa_info; struct cmsghdr *cmsg; char *cmsgbuf; struct sockaddr *addr; struct sockaddr_in *addr_in; struct sockaddr_in6 *addr_in6; - if ((addrcnt < 0) || (iovcnt < 0)) { + if ((addrcnt < 0) || + (iovcnt < 0) || + ((addr == NULL) && (addrcnt > 0)) || + ((addr != NULL) && (addrcnt == 0)) || + ((iov == NULL) && (iovcnt > 0)) || + ((iov != NULL) && (iovcnt == 0))) { errno = EINVAL; return (-1); } @@ -1042,8 +1054,15 @@ sctp_sendv(int sd, msg.msg_controllen = 0; cmsg = (struct cmsghdr *)cmsgbuf; switch (infotype) { + case SCTP_SENDV_NOINFO: + if ((infolen != 0) || (info != NULL)) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + break; case SCTP_SENDV_SNDINFO: - if (infolen < sizeof(struct sctp_sndinfo)) { + if ((info == NULL) || (infolen < sizeof(struct sctp_sndinfo))) { free(cmsgbuf); errno = EINVAL; return (-1); @@ -1056,7 +1075,7 @@ sctp_sendv(int sd, cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_sndinfo))); break; case SCTP_SENDV_PRINFO: - if (infolen < sizeof(struct sctp_prinfo)) { + if ((info == NULL) || (infolen < sizeof(struct sctp_prinfo))) { free(cmsgbuf); errno = EINVAL; return (-1); @@ -1069,7 +1088,7 @@ sctp_sendv(int sd, cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_prinfo))); break; case SCTP_SENDV_AUTHINFO: - if (infolen < sizeof(struct sctp_authinfo)) { + if ((info == NULL) || (infolen < sizeof(struct sctp_authinfo))) { free(cmsgbuf); errno = EINVAL; return (-1); @@ -1082,7 +1101,7 @@ sctp_sendv(int sd, cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_authinfo))); break; case SCTP_SENDV_SPA: - if (infolen < sizeof(struct sctp_sendv_spa)) { + if ((info == NULL) || (infolen < sizeof(struct sctp_sendv_spa))) { free(cmsgbuf); errno = EINVAL; return (-1); @@ -1119,52 +1138,74 @@ sctp_sendv(int sd, return (-1); } addr = addrs; - if (addrcnt == 1) { - msg.msg_name = addr; + msg.msg_name = NULL; + msg.msg_namelen = 0; + + for (i = 0; i < addrcnt; i++) { switch (addr->sa_family) { case AF_INET: - msg.msg_namelen = sizeof(struct sockaddr_in); + addr_len = (socklen_t) sizeof(struct sockaddr_in); + addr_in = (struct sockaddr_in *)addr; + if (addr_in->sin_len != addr_len) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + if (i == 0) { + port = addr_in->sin_port; + } else { + if (port == addr_in->sin_port) { + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_DSTADDRV4; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_addr)); + memcpy(CMSG_DATA(cmsg), &addr_in->sin_addr, sizeof(struct in_addr)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct in_addr)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct in_addr))); + } else { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + } break; case AF_INET6: - msg.msg_namelen = sizeof(struct sockaddr_in6); + addr_len = (socklen_t) sizeof(struct sockaddr_in6); + addr_in6 = (struct sockaddr_in6 *)addr; + if (addr_in6->sin6_len != addr_len) { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + if (i == 0) { + port = addr_in6->sin6_port; + } else { + if (port == addr_in6->sin6_port) { + cmsg->cmsg_level = IPPROTO_SCTP; + cmsg->cmsg_type = SCTP_DSTADDRV6; + cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_addr)); + memcpy(CMSG_DATA(cmsg), &addr_in6->sin6_addr, sizeof(struct in6_addr)); + msg.msg_controllen += CMSG_SPACE(sizeof(struct in6_addr)); + cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct in6_addr))); + } else { + free(cmsgbuf); + errno = EINVAL; + return (-1); + } + } break; default: free(cmsgbuf); errno = EINVAL; return (-1); } - } else { - msg.msg_name = NULL; - msg.msg_namelen = 0; - for (i = 0; i < addrcnt; i++) { - switch (addr->sa_family) { - case AF_INET: - addr_len = sizeof(struct sockaddr_in); - addr_in = (struct sockaddr_in *)addr; - cmsg->cmsg_level = IPPROTO_SCTP; - cmsg->cmsg_type = SCTP_DSTADDRV4; - cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_addr)); - memcpy(CMSG_DATA(cmsg), &addr_in->sin_addr, sizeof(struct in_addr)); - msg.msg_controllen += CMSG_SPACE(sizeof(struct in_addr)); - cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct in_addr))); - break; - case AF_INET6: - addr_len = sizeof(struct sockaddr_in6); - addr_in6 = (struct sockaddr_in6 *)addr; - cmsg->cmsg_level = IPPROTO_SCTP; - cmsg->cmsg_type = SCTP_DSTADDRV6; - cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_addr)); - memcpy(CMSG_DATA(cmsg), &addr_in6->sin6_addr, sizeof(struct in6_addr)); - msg.msg_controllen += CMSG_SPACE(sizeof(struct in6_addr)); - cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct in6_addr))); - break; - default: - free(cmsgbuf); - errno = EINVAL; - return (-1); - } - addr = (struct sockaddr *)((caddr_t)addr + addr_len); + if (i == 0) { + msg.msg_name = addr; + msg.msg_namelen = addr_len; } + addr = (struct sockaddr *)((caddr_t)addr + addr_len); + } + if (msg.msg_controllen == 0) { + msg.msg_control = NULL; } if (msg.msg_controllen == 0) { msg.msg_control = NULL; Modified: head/sys/netinet/sctp_uio.h ============================================================================== --- head/sys/netinet/sctp_uio.h Thu Jun 16 15:35:12 2011 (r223151) +++ head/sys/netinet/sctp_uio.h Thu Jun 16 15:36:09 2011 (r223152) @@ -201,6 +201,7 @@ struct sctp_recvv_rn { #define SCTP_RECVV_NXTINFO 2 #define SCTP_RECVV_RN 3 +#define SCTP_SENDV_NOINFO 0 #define SCTP_SENDV_SNDINFO 1 #define SCTP_SENDV_PRINFO 2 #define SCTP_SENDV_AUTHINFO 3 From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 15:53:14 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 89C9D106564A; Thu, 16 Jun 2011 15:53:14 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7AA798FC0A; Thu, 16 Jun 2011 15:53:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GFrEj6035558; Thu, 16 Jun 2011 15:53:14 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GFrEkg035556; Thu, 16 Jun 2011 15:53:14 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201106161553.p5GFrEkg035556@svn.freebsd.org> From: Alexander Motin Date: Thu, 16 Jun 2011 15:53:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223153 - head/share/misc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 15:53:14 -0000 Author: mav Date: Thu Jun 16 15:53:14 2011 New Revision: 223153 URL: http://svn.freebsd.org/changeset/base/223153 Log: Add Digitizer-related usage IDs from HUTRR30 and HUTRR34. Modified: head/share/misc/usb_hid_usages Modified: head/share/misc/usb_hid_usages ============================================================================== --- head/share/misc/usb_hid_usages Thu Jun 16 15:36:09 2011 (r223152) +++ head/share/misc/usb_hid_usages Thu Jun 16 15:53:14 2011 (r223153) @@ -989,9 +989,11 @@ 0x0B Armature 0x0C Multiple Point Digitizer 0x0D Free Space Wand + 0x0E Device Configuration 0x20 Stylus 0x21 Puck 0x22 Finger + 0x23 Device Settings 0x30 Tip Pressure 0x31 Barrel Pressure 0x32 In Range @@ -1015,6 +1017,14 @@ 0x44 Barrel Switch 0x45 Eraser 0x46 Tablet Pick + 0x47 Touch Valid + 0x48 Width + 0x49 Height + 0x51 Contact Identifier + 0x52 Device Mode + 0x53 Device Identifier + 0x54 Contact Count + 0x55 Contact Count Maximum 15 Physical Interface Device 0x00 Undefined From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 15:55:24 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC3AE106564A; Thu, 16 Jun 2011 15:55:24 +0000 (UTC) (envelope-from avatar@mmlab.cse.yzu.edu.tw) Received: from www.mmlab.cse.yzu.edu.tw (www.mmlab.cse.yzu.edu.tw [140.138.150.166]) by mx1.freebsd.org (Postfix) with ESMTP id AB3218FC17; Thu, 16 Jun 2011 15:55:24 +0000 (UTC) Received: by www.mmlab.cse.yzu.edu.tw (qmail, from userid 1000) id A96D02EC686B; Thu, 16 Jun 2011 23:55:23 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mmlab.cse.yzu.edu.tw; s=test; t=1308239723; bh=FO+8xoIU1RsOhIHFOTfrVATig110AQV5YtevZ5IzuGo=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References: MIME-Version:Content-Type; b=OJUfLhmhIpKSxmrYAOeE1ZYC4/XrAZ3pYmLriVgcHNDrSKfQhqEf23ZuQ3RYgSAu/ P5ZjRrpmCIVTXlWXHDzHE5C1nx8dzlTY8De4Zv7ayo51ADKGVfOkGQmaihEJ8i3meD OofAn5guFgbRoaaUNK/ihdGuJdqOpvA73YYXAZxs= Received: from localhost (localhost [127.0.0.1]) by www.mmlab.cse.yzu.edu.tw (qmail) with ESMTP id A754B2EC6866; Thu, 16 Jun 2011 23:55:23 +0800 (CST) Date: Thu, 16 Jun 2011 23:55:23 +0800 (CST) From: Tai-hwa Liang To: Bruce Evans In-Reply-To: <20110617000654.W1926@besplex.bde.org> Message-ID: <1106162352252.45438@www.mmlab.cse.yzu.edu.tw> References: <201106160526.p5G5Q3RX013915@svn.freebsd.org> <20110616065310.GA2542@mole.fafoe.narf.at> <20110616175314.R935@besplex.bde.org> <1106161923211.44181@www.mmlab.cse.yzu.edu.tw> <20110617000654.W1926@besplex.bde.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, Stefan Farfeleder , src-committers@FreeBSD.org Subject: Re: svn commit: r223138 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 15:55:25 -0000 On Fri, 17 Jun 2011, Bruce Evans wrote: > On Thu, 16 Jun 2011, Tai-hwa Liang wrote: >> On Thu, 16 Jun 2011, Bruce Evans wrote: >>> It might be a style bug (like typedefing a struct) to use enums for >>> anything. They are impossible to declare opaquely. >> >> Does that mean we have to #include in userland >> makefs/ffs/ffs_bswap.c? > > It means that you should implement headers properly, so that they don't > depend on other headers to begin with or grow dependencies on other > headers. Though the should-be-kernel-only header has some > parts including `enum vtype' that have already escaped to userland, other > headers shouldn't grow dependencies on these. How about wrapping offended sections with #ifdef _KERNEL? Should be less intrusive IMHO: Index: ffs_extern.h =================================================================== --- ffs_extern.h (revision 223146) +++ ffs_extern.h (working copy) @@ -33,7 +33,6 @@ #ifndef _UFS_FFS_EXTERN_H #define _UFS_FFS_EXTERN_H -enum vtype; struct buf; struct cg; struct fid; @@ -57,8 +56,10 @@ int ffs_balloc_ufs2(struct vnode *a_vp, off_t a_startoffset, int a_size, struct ucred *a_cred, int a_flags, struct buf **a_bpp); int ffs_blkatoff(struct vnode *, off_t, char **, struct buf **); +#ifdef _KERNEL void ffs_blkfree(struct ufsmount *, struct fs *, struct vnode *, ufs2_daddr_t, long, ino_t, enum vtype, struct workhead *); +#endif /* _KERNEL */ ufs2_daddr_t ffs_blkpref_ufs1(struct inode *, ufs_lbn_t, int, ufs1_daddr_t *); ufs2_daddr_t ffs_blkpref_ufs2(struct inode *, ufs_lbn_t, int, ufs2_daddr_t *); int ffs_checkfreefile(struct fs *, struct vnode *, ino_t); @@ -82,8 +83,10 @@ ufs2_daddr_t, int, int, int, struct ucred *, struct buf **); int ffs_sbupdate(struct ufsmount *, int, int); void ffs_setblock(struct fs *, u_char *, ufs1_daddr_t); +#ifdef _KERNEL int ffs_snapblkfree(struct fs *, struct vnode *, ufs2_daddr_t, long, ino_t, enum vtype, struct workhead *); +#endif /* _KERNEL */ void ffs_snapremove(struct vnode *vp); int ffs_snapshot(struct mount *mp, char *snapfile); void ffs_snapshot_mount(struct mount *mp); From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 16:04:37 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F04F8106564A; Thu, 16 Jun 2011 16:04:37 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id B0A748FC12; Thu, 16 Jun 2011 16:04:37 +0000 (UTC) Received: from [10.30.101.53] ([209.117.142.2]) (authenticated bits=0) by harmony.bsdimp.com (8.14.4/8.14.3) with ESMTP id p5GFrXU7018410 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES128-SHA bits=128 verify=NO); Thu, 16 Jun 2011 09:53:36 -0600 (MDT) (envelope-from imp@bsdimp.com) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Warner Losh In-Reply-To: <201106161535.p5GFZCb7034904@svn.freebsd.org> Date: Thu, 16 Jun 2011 09:53:18 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201106161535.p5GFZCb7034904@svn.freebsd.org> To: Tai-hwa Liang X-Mailer: Apple Mail (2.1084) X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (harmony.bsdimp.com [10.0.0.6]); Thu, 16 Jun 2011 09:53:36 -0600 (MDT) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r223151 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 16:04:38 -0000 On Jun 16, 2011, at 9:35 AM, Tai-hwa Liang wrote: > Author: avatar > Date: Thu Jun 16 15:35:12 2011 > New Revision: 223151 > URL: http://svn.freebsd.org/changeset/base/223151 >=20 > Log: > Using the correct format string(%zu) for size_t type. This should = fix 64 > bits builds. >=20 > Submitted by: Garrett Cooper How about we hold all fixes until it *ACTUALLY* builds on all universe = platforms? I hate to be cranky, but build breakage costs a lot of time. And for = stupid stuff like this? I'm inclined to force WARNS=3D0 until people = can actually fix it right. Warner From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 17:30:50 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CB1911065670; Thu, 16 Jun 2011 17:30:50 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BBBD08FC1A; Thu, 16 Jun 2011 17:30:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GHUoVN039112; Thu, 16 Jun 2011 17:30:50 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GHUoor039110; Thu, 16 Jun 2011 17:30:50 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201106161730.p5GHUoor039110@svn.freebsd.org> From: Michael Tuexen Date: Thu, 16 Jun 2011 17:30:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223154 - head/lib/libc/net X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 17:30:50 -0000 Author: tuexen Date: Thu Jun 16 17:30:50 2011 New Revision: 223154 URL: http://svn.freebsd.org/changeset/base/223154 Log: Fix two typos and remove redundant code. MFC after: 1 month. Modified: head/lib/libc/net/sctp_sys_calls.c Modified: head/lib/libc/net/sctp_sys_calls.c ============================================================================== --- head/lib/libc/net/sctp_sys_calls.c Thu Jun 16 15:53:14 2011 (r223153) +++ head/lib/libc/net/sctp_sys_calls.c Thu Jun 16 17:30:50 2011 (r223154) @@ -1035,8 +1035,8 @@ sctp_sendv(int sd, if ((addrcnt < 0) || (iovcnt < 0) || - ((addr == NULL) && (addrcnt > 0)) || - ((addr != NULL) && (addrcnt == 0)) || + ((addrs == NULL) && (addrcnt > 0)) || + ((addrs != NULL) && (addrcnt == 0)) || ((iov == NULL) && (iovcnt > 0)) || ((iov != NULL) && (iovcnt == 0))) { errno = EINVAL; @@ -1207,9 +1207,6 @@ sctp_sendv(int sd, if (msg.msg_controllen == 0) { msg.msg_control = NULL; } - if (msg.msg_controllen == 0) { - msg.msg_control = NULL; - } msg.msg_iov = (struct iovec *)iov; msg.msg_iovlen = iovcnt; msg.msg_flags = 0; From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 17:40:38 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 89ED8106566B; Thu, 16 Jun 2011 17:40:38 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-vx0-f182.google.com (mail-vx0-f182.google.com [209.85.220.182]) by mx1.freebsd.org (Postfix) with ESMTP id 01FE28FC0C; Thu, 16 Jun 2011 17:40:37 +0000 (UTC) Received: by vxc34 with SMTP id 34so1909935vxc.13 for ; Thu, 16 Jun 2011 10:40:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=J5mcBUNxjBfQhW+5nw+/b5l4kgUGkrRcbBFWzGx762o=; b=X9J1ZkqH90w77DHkrhtRYqVtCQJoZtG4JBht6pWgQW0IT7aEUnX5rNIG5KuOVeAxM0 C0rQd7HIckigWbq/enlXh0GBayAIc5HIIAIOB6pUrxe5/gwgR62Aifo/OwoNKoWErpj+ j1zalTNlAfVhpKdsKznvqfGZ6YeXY39sUkXuk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=kk2oJvQzoKd83W4vqgYi/bkiqlknAriiDO2sfE/q1bRXYpQT+PtGfTqbUuY44Dlik2 sTPr6nOvVdpu/XznUn9tvmnX7lWURQMe0mX1dpqbzmg/F1UpdxXROOPP8h5zWu2aDwZZ KivgnC7W4tRdnvCKGnVMbNltHiBKlJv5/xlfE= MIME-Version: 1.0 Received: by 10.220.213.195 with SMTP id gx3mr465044vcb.23.1308246036999; Thu, 16 Jun 2011 10:40:36 -0700 (PDT) Received: by 10.220.189.202 with HTTP; Thu, 16 Jun 2011 10:40:36 -0700 (PDT) In-Reply-To: References: <201106161535.p5GFZCb7034904@svn.freebsd.org> Date: Thu, 16 Jun 2011 10:40:36 -0700 Message-ID: From: Garrett Cooper To: Warner Losh Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Tai-hwa Liang , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223151 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 17:40:38 -0000 On Thu, Jun 16, 2011 at 8:53 AM, Warner Losh wrote: > > On Jun 16, 2011, at 9:35 AM, Tai-hwa Liang wrote: > >> Author: avatar >> Date: Thu Jun 16 15:35:12 2011 >> New Revision: 223151 >> URL: http://svn.freebsd.org/changeset/base/223151 >> >> Log: >> =A0Using the correct format string(%zu) for size_t type. =A0This should = fix 64 >> =A0bits builds. >> >> =A0Submitted by: =A0 =A0 =A0 =A0Garrett Cooper > > How about we hold all fixes until it *ACTUALLY* builds on all universe pl= atforms? > > I hate to be cranky, but build breakage costs a lot of time. =A0And for s= tupid stuff like this? =A0I'm inclined to force WARNS=3D0 until people can = actually fix it right. This was stupid breakage on my part for not running this through universe first. The patch that builds upon this that I submitted in the other thread so far _does_ unbreak universe on ia64 and mips*. Still working on getting it to pass through amd64, i386, and sparc64 at least, which is going to be a few more hours because for some magic reason make -j doesn't work for me with universe. Thanks, -Garrett From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 17:41:21 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F60D1065670; Thu, 16 Jun 2011 17:41:21 +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 604428FC12; Thu, 16 Jun 2011 17:41:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GHfLZZ039466; Thu, 16 Jun 2011 17:41:21 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GHfL30039464; Thu, 16 Jun 2011 17:41:21 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201106161741.p5GHfL30039464@svn.freebsd.org> From: Marcel Moolenaar Date: Thu, 16 Jun 2011 17:41:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223155 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 17:41:21 -0000 Author: marcel Date: Thu Jun 16 17:41:21 2011 New Revision: 223155 URL: http://svn.freebsd.org/changeset/base/223155 Log: Even if the loaded module has no symbols, we still need to notify MD code about it and update the link map for GDB's use. Modified: head/sys/kern/link_elf.c Modified: head/sys/kern/link_elf.c ============================================================================== --- head/sys/kern/link_elf.c Thu Jun 16 17:30:50 2011 (r223154) +++ head/sys/kern/link_elf.c Thu Jun 16 17:41:21 2011 (r223155) @@ -950,11 +950,11 @@ link_elf_load_file(linker_class_t cls, c ef->ddbstrcnt = strcnt; ef->ddbstrtab = ef->strbase; +nosyms: error = link_elf_link_common_finish(lf); if (error != 0) goto out; -nosyms: *result = lf; out: From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 18:00:27 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DF9AD106566C; Thu, 16 Jun 2011 18:00:27 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D07C08FC0A; Thu, 16 Jun 2011 18:00:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GI0Rei040066; Thu, 16 Jun 2011 18:00:27 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GI0RZc040064; Thu, 16 Jun 2011 18:00:27 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201106161800.p5GI0RZc040064@svn.freebsd.org> From: Warner Losh Date: Thu, 16 Jun 2011 18:00:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223156 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 18:00:28 -0000 Author: imp Date: Thu Jun 16 18:00:27 2011 New Revision: 223156 URL: http://svn.freebsd.org/changeset/base/223156 Log: Setting warnings without make universe considered harmful. Revert to WARNS=0 until such time that the warnings at =2 are fixed for all platforms. Modified: head/lib/libstand/Makefile Modified: head/lib/libstand/Makefile ============================================================================== --- head/lib/libstand/Makefile Thu Jun 16 17:41:21 2011 (r223155) +++ head/lib/libstand/Makefile Thu Jun 16 18:00:27 2011 (r223156) @@ -15,7 +15,7 @@ NO_PIC= INCS= stand.h MAN= libstand.3 -WARNS?= 2 +WARNS?= 0 CFLAGS+= -ffreestanding -Wformat CFLAGS+= -I${.CURDIR} From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 18:03:51 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5D96F1065672; Thu, 16 Jun 2011 18:03:51 +0000 (UTC) (envelope-from nwhitehorn@freebsd.org) Received: from mail.icecube.wisc.edu (trout.icecube.wisc.edu [128.104.255.119]) by mx1.freebsd.org (Postfix) with ESMTP id 1B8618FC13; Thu, 16 Jun 2011 18:03:50 +0000 (UTC) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.icecube.wisc.edu (Postfix) with ESMTP id 360E058140; Thu, 16 Jun 2011 13:03:50 -0500 (CDT) X-Virus-Scanned: amavisd-new at icecube.wisc.edu Received: from mail.icecube.wisc.edu ([127.0.0.1]) by localhost (trout.icecube.wisc.edu [127.0.0.1]) (amavisd-new, port 10030) with ESMTP id SyRDx9BbvLjd; Thu, 16 Jun 2011 13:03:50 -0500 (CDT) Received: from wanderer.tachypleus.net (i3-dhcp-172-16-223-128.icecube.wisc.edu [172.16.223.128]) by mail.icecube.wisc.edu (Postfix) with ESMTP id E024A5811D; Thu, 16 Jun 2011 13:03:49 -0500 (CDT) Message-ID: <4DFA4585.4040500@freebsd.org> Date: Thu, 16 Jun 2011 13:03:49 -0500 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.17) Gecko/20110516 Thunderbird/3.1.10 MIME-Version: 1.0 To: Garrett Cooper References: <201106160714.p5G7Etfx017112@svn.freebsd.org> <20110616180803.D1005@besplex.bde.org> <11061619555315.44181@www.mmlab.cse.yzu.edu.tw> <20110616235239.D1926@besplex.bde.org> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Tai-hwa Liang , src-committers@freebsd.org, Bruce Evans Subject: Re: svn commit: r223139 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 18:03:51 -0000 On 06/16/11 10:23, Garrett Cooper wrote: > On Thu, Jun 16, 2011 at 8:12 AM, Garrett Cooper wrote: >> On Thu, Jun 16, 2011 at 7:06 AM, Bruce Evans wrote: >>> On Thu, 16 Jun 2011, Tai-hwa Liang wrote: >>> >>>> On Thu, 16 Jun 2011, Bruce Evans wrote: >>>> >>>>> On Thu, 16 Jun 2011, Garrett Cooper wrote: >>>>>> >>>>>> And you need to add #include to stand.h in order to get >>>>>> uintmax_t. Here's a proper patch for amd64.. >>>>> >>>>> This would add namespace pollution. stand.h doesn't use anything in >>>>> . It depends on normal namespace pollution in an XXX section >>>>> in for the declaration of uintptr_t. It and other headers >>>>> should use __uintptr_t instead. Strangely, declares >>>>> uintptr_t but not uintmax_t. >>>> >>>> What about casting to __uintmax_t instead? >>>> >>>> Index: zalloc.c >>>> =================================================================== >>>> --- zalloc.c (revision 223146) >>>> +++ zalloc.c (working copy) >>>> @@ -154,7 +154,7 @@ >>>> if ((char *)ptr< (char *)mp->mp_Base || >>>> (char *)ptr + bytes> (char *)mp->mp_End || >>>> ((iaddr_t)ptr& MEMNODE_SIZE_MASK) != 0) >>>> - panic("zfree(%p,%ju): wild pointer", ptr, bytes); >>>> + panic("zfree(%p,%ju): wild pointer", ptr, (__uintmax_t)bytes); >>>> ... >>> >>> zalloc.c is not the (header) implementation, so it should not use the >>> implementation detail (anything beginning with __). >>> >>> The latest tinderbox errors for this are hard to understand. For amd64 >>> they say: >>> >>>> /src/lib/libstand/zalloc.c: In function 'zfree': >>>> /src/lib/libstand/zalloc.c:157: warning: format '%ju' expects type >>>> 'uintmax_t', but argument 3 has type 'iaddr_t' >>> >>> but amd64 seems to be just like sparc64 -- both seem to declare all the >>> types as `unsigned long' at the lowest level. I would expect all 64-bit >>> arches to do this, although this is logically wrong (it makes the largest >>> integral type uintmax_t logically smaller than the standard bogus type >>> unsigned long long). This logic error is partly intentional (it detects >>> different type mismatches than uintmax_t = `unsigned long long' combined >>> with uint64_t = `unsigned long' would). >> >> My second patch when applied gets one past tinderbox on powerpc.. >> waiting for powerpc64 and sparc64 to complete. Namespace pollution is >> one thing, but stdint.h isn't that bad IMHO -- I just find it funny >> that iaddr_t had to be typedef'ed to uintptr_t in the first place. > > This needs to be committed to unbreak ia64 and mips64*. Still waiting > to see what happens with sparc64, but amd64 and powerpc64 were oddly > happy without this, even though they should have failed along with > ia64 and mips64* (the format string should have been %zu for a size_t > type). Both amd64 and powerpc64 use 32-bit bootloaders, and so libstand is built with a 32-bit toolchain. As such, bugs affecting 64-bit platforms don't show up for libstand builds on these systems. -Nathan From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 18:13:02 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88014106566B; Thu, 16 Jun 2011 18:13:02 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 0BFFA8FC13; Thu, 16 Jun 2011 18:13:01 +0000 (UTC) Received: from [10.30.101.53] ([209.117.142.2]) (authenticated bits=0) by harmony.bsdimp.com (8.14.4/8.14.3) with ESMTP id p5GI1oWr019868 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES128-SHA bits=128 verify=NO); Thu, 16 Jun 2011 12:01:51 -0600 (MDT) (envelope-from imp@bsdimp.com) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Warner Losh In-Reply-To: Date: Thu, 16 Jun 2011 12:01:38 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: <43730304-8D75-47A3-B09C-67E61017592A@bsdimp.com> References: <201106161535.p5GFZCb7034904@svn.freebsd.org> To: Garrett Cooper X-Mailer: Apple Mail (2.1084) X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (harmony.bsdimp.com [10.0.0.6]); Thu, 16 Jun 2011 12:01:52 -0600 (MDT) Cc: Tai-hwa Liang , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223151 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 18:13:02 -0000 On Jun 16, 2011, at 11:40 AM, Garrett Cooper wrote: > On Thu, Jun 16, 2011 at 8:53 AM, Warner Losh wrote: >>=20 >> On Jun 16, 2011, at 9:35 AM, Tai-hwa Liang wrote: >>=20 >>> Author: avatar >>> Date: Thu Jun 16 15:35:12 2011 >>> New Revision: 223151 >>> URL: http://svn.freebsd.org/changeset/base/223151 >>>=20 >>> Log: >>> Using the correct format string(%zu) for size_t type. This should = fix 64 >>> bits builds. >>>=20 >>> Submitted by: Garrett Cooper >>=20 >> How about we hold all fixes until it *ACTUALLY* builds on all = universe platforms? >>=20 >> I hate to be cranky, but build breakage costs a lot of time. And for = stupid stuff like this? I'm inclined to force WARNS=3D0 until people = can actually fix it right. >=20 > This was stupid breakage on my part for not running this through > universe first. The patch that builds upon this that I submitted in > the other thread so far _does_ unbreak universe on ia64 and mips*. > Still working on getting it to pass through amd64, i386, and sparc64 > at least, which is going to be a few more hours because for some magic > reason make -j doesn't work for me with universe. I've reverted to WARNS=3D0. Once the patches are in and work for make = universe, we can put it back to WARNS=3D2. Warner From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 18:24:45 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3AB51106564A; Thu, 16 Jun 2011 18:24:45 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 0E7C98FC08; Thu, 16 Jun 2011 18:24:45 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id B519446B03; Thu, 16 Jun 2011 14:24:44 -0400 (EDT) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 51E018A01F; Thu, 16 Jun 2011 14:24:44 -0400 (EDT) From: John Baldwin To: Garrett Cooper Date: Thu, 16 Jun 2011 14:24:43 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110325; KDE/4.5.5; amd64; ; ) References: <201106161535.p5GFZCb7034904@svn.freebsd.org> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201106161424.43811.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Thu, 16 Jun 2011 14:24:44 -0400 (EDT) Cc: Tai-hwa Liang , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Warner Losh Subject: Re: svn commit: r223151 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 18:24:45 -0000 On Thursday, June 16, 2011 1:40:36 pm Garrett Cooper wrote: > On Thu, Jun 16, 2011 at 8:53 AM, Warner Losh wrote: > > > > On Jun 16, 2011, at 9:35 AM, Tai-hwa Liang wrote: > > > >> Author: avatar > >> Date: Thu Jun 16 15:35:12 2011 > >> New Revision: 223151 > >> URL: http://svn.freebsd.org/changeset/base/223151 > >> > >> Log: > >> Using the correct format string(%zu) for size_t type. This should fix 64 > >> bits builds. > >> > >> Submitted by: Garrett Cooper > > > > How about we hold all fixes until it *ACTUALLY* builds on all universe platforms? > > > > I hate to be cranky, but build breakage costs a lot of time. And for stupid stuff like this? I'm inclined to force WARNS=0 until people can actually fix it right. > > This was stupid breakage on my part for not running this through > universe first. The patch that builds upon this that I submitted in > the other thread so far _does_ unbreak universe on ia64 and mips*. > Still working on getting it to pass through amd64, i386, and sparc64 > at least, which is going to be a few more hours because for some magic > reason make -j doesn't work for me with universe. You probably want to do 'make JFLAG=-j6 tinderbox' rather than 'make -j6 tinderbox'. -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 19:32:00 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 677821065673; Thu, 16 Jun 2011 19:32:00 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 573F38FC0C; Thu, 16 Jun 2011 19:32:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GJW0p5042842; Thu, 16 Jun 2011 19:32:00 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GJW0Wq042840; Thu, 16 Jun 2011 19:32:00 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201106161932.p5GJW0Wq042840@svn.freebsd.org> From: Rick Macklem Date: Thu, 16 Jun 2011 19:32:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223157 - stable/8/sys/fs/nfsclient X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 19:32:00 -0000 Author: rmacklem Date: Thu Jun 16 19:32:00 2011 New Revision: 223157 URL: http://svn.freebsd.org/changeset/base/223157 Log: MFC: r222540 Fix the new NFS client so that it doesn't do an NFSv3 Pathconf RPC for cases where the reply doesn't include the answer. This fixes a problem reported by avg@ where the NFSv3 Pathconf RPC would fail when "ls -l" did an lpathconf(2) for _PC_ACL_NFS4. Modified: stable/8/sys/fs/nfsclient/nfs_clvnops.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/fs/nfsclient/nfs_clvnops.c ============================================================================== --- stable/8/sys/fs/nfsclient/nfs_clvnops.c Thu Jun 16 18:00:27 2011 (r223156) +++ stable/8/sys/fs/nfsclient/nfs_clvnops.c Thu Jun 16 19:32:00 2011 (r223157) @@ -3283,7 +3283,13 @@ nfs_pathconf(struct vop_pathconf_args *a struct thread *td = curthread; int attrflag, error; - if (NFS_ISV34(vp)) { + if (NFS_ISV4(vp) || (NFS_ISV3(vp) && (ap->a_name == _PC_LINK_MAX || + ap->a_name == _PC_NAME_MAX || ap->a_name == _PC_CHOWN_RESTRICTED || + ap->a_name == _PC_NO_TRUNC))) { + /* + * Since only the above 4 a_names are returned by the NFSv3 + * Pathconf RPC, there is no point in doing it for others. + */ error = nfsrpc_pathconf(vp, &pc, td->td_ucred, td, &nfsva, &attrflag, NULL); if (attrflag != 0) @@ -3292,7 +3298,10 @@ nfs_pathconf(struct vop_pathconf_args *a if (error != 0) return (error); } else { - /* For NFSv2, just fake them. */ + /* + * For NFSv2 (or NFSv3 when not one of the above 4 a_names), + * just fake them. + */ pc.pc_linkmax = LINK_MAX; pc.pc_namemax = NFS_MAXNAMLEN; pc.pc_notrunc = 1; From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 19:42:03 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B50FF106564A; Thu, 16 Jun 2011 19:42:03 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A5B888FC08; Thu, 16 Jun 2011 19:42:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GJg3O7043184; Thu, 16 Jun 2011 19:42:03 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GJg3wI043182; Thu, 16 Jun 2011 19:42:03 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201106161942.p5GJg3wI043182@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Thu, 16 Jun 2011 19:42:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223158 - head/sbin/geom/class/part X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 19:42:03 -0000 Author: ae Date: Thu Jun 16 19:42:03 2011 New Revision: 223158 URL: http://svn.freebsd.org/changeset/base/223158 Log: Add "alignment" param to the request before calling gpart_autofill(). Modified: head/sbin/geom/class/part/geom_part.c Modified: head/sbin/geom/class/part/geom_part.c ============================================================================== --- head/sbin/geom/class/part/geom_part.c Thu Jun 16 19:32:00 2011 (r223157) +++ head/sbin/geom/class/part/geom_part.c Thu Jun 16 19:42:03 2011 (r223158) @@ -927,6 +927,7 @@ gpart_restore(struct gctl_req *req, unsi gctl_ro_param(r, "size", -1, argv[3]); if (rl != 0 && label != NULL) gctl_ro_param(r, "label", -1, argv[4]); + gctl_ro_param(r, "alignment", -1, GPART_AUTOFILL); gctl_ro_param(r, "arg0", -1, s); error = gpart_autofill(r); if (error != 0) From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 19:47:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EDA16106570C; Thu, 16 Jun 2011 19:47:56 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DD46C8FC14; Thu, 16 Jun 2011 19:47:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GJlu0S043401; Thu, 16 Jun 2011 19:47:56 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GJlukN043399; Thu, 16 Jun 2011 19:47:56 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201106161947.p5GJlukN043399@svn.freebsd.org> From: Rick Macklem Date: Thu, 16 Jun 2011 19:47:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223159 - stable/8/sbin/umount X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 19:47:57 -0000 Author: rmacklem Date: Thu Jun 16 19:47:56 2011 New Revision: 223159 URL: http://svn.freebsd.org/changeset/base/223159 Log: MFC: r222541 Add a sentence to the umount.8 man page to clarify the behaviour for forced dismount when used on an NFS mount point. This is a content change. Modified: stable/8/sbin/umount/umount.8 Directory Properties: stable/8/sbin/umount/ (props changed) Modified: stable/8/sbin/umount/umount.8 ============================================================================== --- stable/8/sbin/umount/umount.8 Thu Jun 16 19:42:03 2011 (r223158) +++ stable/8/sbin/umount/umount.8 Thu Jun 16 19:47:56 2011 (r223159) @@ -28,7 +28,7 @@ .\" @(#)umount.8 8.2 (Berkeley) 5/8/95 .\" $FreeBSD$ .\" -.Dd July 18, 2003 +.Dd May 31, 2011 .Dt UMOUNT 8 .Os .Sh NAME @@ -78,6 +78,9 @@ The file system is forcibly unmounted. Active special devices continue to work, but all other files return errors if further accesses are attempted. The root file system cannot be forcibly unmounted. +For NFS, a forced dismount can take up to 1 minute or more to +complete against an unresponsive server and may throw away +data not yet written to the server for this case. .It Fl h Ar host Only file systems mounted from the specified host will be unmounted. From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 19:57:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5CF57106564A; Thu, 16 Jun 2011 19:57:08 +0000 (UTC) (envelope-from bcr@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4D7E28FC13; Thu, 16 Jun 2011 19:57:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GJv8qp043744; Thu, 16 Jun 2011 19:57:08 GMT (envelope-from bcr@svn.freebsd.org) Received: (from bcr@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GJv8Bk043742; Thu, 16 Jun 2011 19:57:08 GMT (envelope-from bcr@svn.freebsd.org) Message-Id: <201106161957.p5GJv8Bk043742@svn.freebsd.org> From: Benedict Reuschling Date: Thu, 16 Jun 2011 19:57:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223160 - head/share/man/man4 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 19:57:08 -0000 Author: bcr (doc committer) Date: Thu Jun 16 19:57:07 2011 New Revision: 223160 URL: http://svn.freebsd.org/changeset/base/223160 Log: Fix some wording and grammar in the BUGS section. PR: docs/157901 Submitted by: Niclas Zeising (niclas dot zeising at gmail dot com) Reviewed by: mav MFC after: 3 days Modified: head/share/man/man4/snd_hda.4 Modified: head/share/man/man4/snd_hda.4 ============================================================================== --- head/share/man/man4/snd_hda.4 Thu Jun 16 19:47:56 2011 (r223159) +++ head/share/man/man4/snd_hda.4 Thu Jun 16 19:57:07 2011 (r223160) @@ -668,16 +668,20 @@ and A few Hardware/OEM vendors tend to screw up BIOS settings, thus rendering the .Nm -driver useless, which usually results in a state where the +driver useless. +This usually results in a state where the .Nm -driver seems to attach and work, but without any sound. Some of -that cases can be solved by tuning loader.conf variables. But before -trying to fix problem that way, make sure that problem is really exists -and the PCM audio device you are using really corresponds to expected +driver seems to attach and work, but no sound is played. +Some cases can be solved by tuning +.Pa loader.conf +variables. +Before trying to fix problem that way, make sure that there really is a problem +and that the PCM audio device in use really corresponds to the expected audio connector. .Pp -Some vendors use non-standardized General Purpose I/O (GPIO) pins of codec -to control external amplifiers. In some cases setting proper combination of -GPIO bits may be needed to make sound work on specific device. +Some vendors use non-standardized General Purpose I/O (GPIO) pins of the codec +to control external amplifiers. +In some cases setting a combination of GPIO bits may be needed to make +sound work on a specific device. .Pp HDMI and DisplayPort audio may also require support from video driver. From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 20:42:07 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D576F106564A; Thu, 16 Jun 2011 20:42:07 +0000 (UTC) (envelope-from maxim.konovalov@gmail.com) Received: from mp2.macomnet.net (ipv6.irc.int.ru [IPv6:2a02:28:1:2::1b:2]) by mx1.freebsd.org (Postfix) with ESMTP id 4896F8FC15; Thu, 16 Jun 2011 20:42:07 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mp2.macomnet.net (8.14.4/8.14.3) with ESMTP id p5GKg58K082864; Fri, 17 Jun 2011 00:42:05 +0400 (MSD) (envelope-from maxim.konovalov@gmail.com) Date: Fri, 17 Jun 2011 00:42:05 +0400 (MSD) From: Maxim Konovalov To: Craig Rodrigues In-Reply-To: <201106152213.p5FMDMWP000491@svn.freebsd.org> Message-ID: References: <201106152213.p5FMDMWP000491@svn.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG Subject: Re: svn commit: r223124 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 20:42:07 -0000 > (2) If the "tftp.blksize" environment variable is set, then > take that value and use it when sending the TFTP RRQ packet, > instead of 1428. This allows us to set different values of > "tftp.blksize" in the loader, so that we can test out different > TFTP block sizes at run time. > Is it documented somewhere? -- Maxim Konovalov From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 21:12:37 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C352106566C; Thu, 16 Jun 2011 21:12:37 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1BB808FC08; Thu, 16 Jun 2011 21:12:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GLCawl046045; Thu, 16 Jun 2011 21:12:37 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GLCaQK046041; Thu, 16 Jun 2011 21:12:36 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201106162112.p5GLCaQK046041@svn.freebsd.org> From: Michael Tuexen Date: Thu, 16 Jun 2011 21:12:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223162 - head/sys/netinet X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 21:12:37 -0000 Author: tuexen Date: Thu Jun 16 21:12:36 2011 New Revision: 223162 URL: http://svn.freebsd.org/changeset/base/223162 Log: Add SCTP_DEFAULT_PRINFO socket option. Fix the SCTP_DEFAULT_SNDINFO socket option: Don't clear the PR SCTP policy when setting sinfo_flags. MFC after: 1 month. Modified: head/sys/netinet/sctp.h head/sys/netinet/sctp_uio.h head/sys/netinet/sctp_usrreq.c Modified: head/sys/netinet/sctp.h ============================================================================== --- head/sys/netinet/sctp.h Thu Jun 16 20:58:23 2011 (r223161) +++ head/sys/netinet/sctp.h Thu Jun 16 21:12:36 2011 (r223162) @@ -118,6 +118,7 @@ struct sctp_paramhdr { #define SCTP_RECVRCVINFO 0x0000001f #define SCTP_RECVNXTINFO 0x00000020 #define SCTP_DEFAULT_SNDINFO 0x00000021 +#define SCTP_DEFAULT_PRINFO 0x00000022 /* * read-only options Modified: head/sys/netinet/sctp_uio.h ============================================================================== --- head/sys/netinet/sctp_uio.h Thu Jun 16 20:58:23 2011 (r223161) +++ head/sys/netinet/sctp_uio.h Thu Jun 16 21:12:36 2011 (r223162) @@ -162,6 +162,12 @@ struct sctp_prinfo { uint32_t pr_value; }; +struct sctp_default_prinfo { + uint16_t pr_policy; + uint32_t pr_value; + sctp_assoc_t pr_assoc_id; +}; + struct sctp_authinfo { uint16_t auth_keyid; }; Modified: head/sys/netinet/sctp_usrreq.c ============================================================================== --- head/sys/netinet/sctp_usrreq.c Thu Jun 16 20:58:23 2011 (r223161) +++ head/sys/netinet/sctp_usrreq.c Thu Jun 16 21:12:36 2011 (r223162) @@ -3030,6 +3030,7 @@ flags_out: if (stcb) { info->snd_sid = stcb->asoc.def_send.sinfo_stream; info->snd_flags = stcb->asoc.def_send.sinfo_flags; + info->snd_flags &= 0xfff0; info->snd_ppid = stcb->asoc.def_send.sinfo_ppid; info->snd_context = stcb->asoc.def_send.sinfo_context; SCTP_TCB_UNLOCK(stcb); @@ -3038,6 +3039,7 @@ flags_out: SCTP_INP_RLOCK(inp); info->snd_sid = inp->def_send.sinfo_stream; info->snd_flags = inp->def_send.sinfo_flags; + info->snd_flags &= 0xfff0; info->snd_ppid = inp->def_send.sinfo_ppid; info->snd_context = inp->def_send.sinfo_context; SCTP_INP_RUNLOCK(inp); @@ -3051,6 +3053,33 @@ flags_out: } break; } + case SCTP_DEFAULT_PRINFO: + { + struct sctp_default_prinfo *info; + + SCTP_CHECK_AND_CAST(info, optval, struct sctp_default_prinfo, *optsize); + SCTP_FIND_STCB(inp, stcb, info->pr_assoc_id); + + if (stcb) { + info->pr_policy = PR_SCTP_POLICY(stcb->asoc.def_send.sinfo_flags); + info->pr_value = stcb->asoc.def_send.sinfo_timetolive; + SCTP_TCB_UNLOCK(stcb); + } else { + if (info->pr_assoc_id == SCTP_FUTURE_ASSOC) { + SCTP_INP_RLOCK(inp); + info->pr_policy = PR_SCTP_POLICY(inp->def_send.sinfo_flags); + info->pr_value = inp->def_send.sinfo_timetolive; + SCTP_INP_RUNLOCK(inp); + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + if (error == 0) { + *optsize = sizeof(struct sctp_default_prinfo); + } + break; + } default: SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOPROTOOPT); error = ENOPROTOOPT; @@ -5043,6 +5072,7 @@ sctp_setopt(struct socket *so, int optna case SCTP_DEFAULT_SNDINFO: { struct sctp_sndinfo *info; + uint16_t policy; SCTP_CHECK_AND_CAST(info, optval, struct sctp_sndinfo, optsize); SCTP_FIND_STCB(inp, stcb, info->snd_assoc_id); @@ -5050,7 +5080,9 @@ sctp_setopt(struct socket *so, int optna if (stcb) { if (info->snd_sid < stcb->asoc.streamoutcnt) { stcb->asoc.def_send.sinfo_stream = info->snd_sid; + policy = PR_SCTP_POLICY(stcb->asoc.def_send.sinfo_flags); stcb->asoc.def_send.sinfo_flags = info->snd_flags; + stcb->asoc.def_send.sinfo_flags |= policy; stcb->asoc.def_send.sinfo_ppid = info->snd_ppid; stcb->asoc.def_send.sinfo_context = info->snd_context; } else { @@ -5063,7 +5095,9 @@ sctp_setopt(struct socket *so, int optna (info->snd_assoc_id == SCTP_ALL_ASSOC)) { SCTP_INP_WLOCK(inp); inp->def_send.sinfo_stream = info->snd_sid; + policy = PR_SCTP_POLICY(inp->def_send.sinfo_flags); inp->def_send.sinfo_flags = info->snd_flags; + inp->def_send.sinfo_flags |= policy; inp->def_send.sinfo_ppid = info->snd_ppid; inp->def_send.sinfo_context = info->snd_context; SCTP_INP_WUNLOCK(inp); @@ -5075,7 +5109,9 @@ sctp_setopt(struct socket *so, int optna SCTP_TCB_LOCK(stcb); if (info->snd_sid < stcb->asoc.streamoutcnt) { stcb->asoc.def_send.sinfo_stream = info->snd_sid; + policy = PR_SCTP_POLICY(stcb->asoc.def_send.sinfo_flags); stcb->asoc.def_send.sinfo_flags = info->snd_flags; + stcb->asoc.def_send.sinfo_flags |= policy; stcb->asoc.def_send.sinfo_ppid = info->snd_ppid; stcb->asoc.def_send.sinfo_context = info->snd_context; } @@ -5086,6 +5122,44 @@ sctp_setopt(struct socket *so, int optna } break; } + case SCTP_DEFAULT_PRINFO: + { + struct sctp_default_prinfo *info; + + SCTP_CHECK_AND_CAST(info, optval, struct sctp_default_prinfo, optsize); + SCTP_FIND_STCB(inp, stcb, info->pr_assoc_id); + + if (PR_SCTP_INVALID_POLICY(info->pr_policy)) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + break; + } + if (stcb) { + stcb->asoc.def_send.sinfo_flags &= 0xfff0; + stcb->asoc.def_send.sinfo_flags |= info->pr_policy; + SCTP_TCB_UNLOCK(stcb); + } else { + if ((info->pr_assoc_id == SCTP_FUTURE_ASSOC) || + (info->pr_assoc_id == SCTP_ALL_ASSOC)) { + SCTP_INP_WLOCK(inp); + inp->def_send.sinfo_flags &= 0xfff0; + inp->def_send.sinfo_flags |= info->pr_policy; + SCTP_INP_WUNLOCK(inp); + } + if ((info->pr_assoc_id == SCTP_CURRENT_ASSOC) || + (info->pr_assoc_id == SCTP_ALL_ASSOC)) { + SCTP_INP_RLOCK(inp); + LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) { + SCTP_TCB_LOCK(stcb); + stcb->asoc.def_send.sinfo_flags &= 0xfff0; + stcb->asoc.def_send.sinfo_flags |= info->pr_policy; + SCTP_TCB_UNLOCK(stcb); + } + SCTP_INP_RUNLOCK(inp); + } + } + break; + } default: SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOPROTOOPT); error = ENOPROTOOPT; From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 21:21:27 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 50D9E106566B; Thu, 16 Jun 2011 21:21:27 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id A83C18FC14; Thu, 16 Jun 2011 21:21:26 +0000 (UTC) Received: by vws18 with SMTP id 18so2127440vws.13 for ; Thu, 16 Jun 2011 14:21:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=xSJrg9jcJY7KUT1jlHqpiAhUMG6Wj8vTveuQaQnYIV0=; b=h562+bBqf5WGtZfG6BvQ99np9G5V27wTpqutHnBzCU3ueeqnSR52MWMQMkqRLg5wzy NE2MOyDB9CA3pNKfZLtQW9keMp5HDJ61LHGLX9VZjWwrr/BA0bQG80iS3JFoDnrKcLEQ b0w/x6VTorfML6z8Mz8eZ+sForlEAkxBI3J3s= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=kN1Gil4RZkbu9v+91kWrCR2oFEPmweoXRyDXKBFEyC6kzK3DiD8GUx0/RjZH0Q1AqY KNKLDMw9V72qpmreAPu0eHu+n+FEu26MxRigwJJLZ/DoWcckbMKrbIwcZDkD3pa3J4Px Ke82bQ0f3YqllZj2F13nR1CGYsSBE5kVGtnb4= MIME-Version: 1.0 Received: by 10.220.48.136 with SMTP id r8mr165447vcf.93.1308259285829; Thu, 16 Jun 2011 14:21:25 -0700 (PDT) Received: by 10.220.189.202 with HTTP; Thu, 16 Jun 2011 14:21:25 -0700 (PDT) In-Reply-To: <201106161424.43811.jhb@freebsd.org> References: <201106161535.p5GFZCb7034904@svn.freebsd.org> <201106161424.43811.jhb@freebsd.org> Date: Thu, 16 Jun 2011 14:21:25 -0700 Message-ID: From: Garrett Cooper To: John Baldwin Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Tai-hwa Liang , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Warner Losh Subject: Re: svn commit: r223151 - head/lib/libstand X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 21:21:27 -0000 On Thu, Jun 16, 2011 at 11:24 AM, John Baldwin wrote: > On Thursday, June 16, 2011 1:40:36 pm Garrett Cooper wrote: >> On Thu, Jun 16, 2011 at 8:53 AM, Warner Losh wrote: >> > >> > On Jun 16, 2011, at 9:35 AM, Tai-hwa Liang wrote: >> > >> >> Author: avatar >> >> Date: Thu Jun 16 15:35:12 2011 >> >> New Revision: 223151 >> >> URL: http://svn.freebsd.org/changeset/base/223151 >> >> >> >> Log: >> >> =A0Using the correct format string(%zu) for size_t type. =A0This shou= ld fix > 64 >> >> =A0bits builds. >> >> >> >> =A0Submitted by: =A0 =A0 =A0 =A0Garrett Cooper >> > >> > How about we hold all fixes until it *ACTUALLY* builds on all universe > platforms? >> > >> > I hate to be cranky, but build breakage costs a lot of time. =A0And fo= r > stupid stuff like this? =A0I'm inclined to force WARNS=3D0 until people c= an > actually fix it right. >> >> This was stupid breakage on my part for not running this through >> universe first. The patch that builds upon this that I submitted in >> the other thread so far _does_ unbreak universe on ia64 and mips*. >> Still working on getting it to pass through amd64, i386, and sparc64 >> at least, which is going to be a few more hours because for some magic >> reason make -j doesn't work for me with universe. > > You probably want to do 'make JFLAG=3D-j6 tinderbox' rather than 'make -j= 6 > tinderbox'. Yeah, that works better :). It doesn't instantly bomb out like with make -j universe . Well, here goes to the all comprehensive take 3 (take 2 seems to have gone ok). Thanks! -Garrett From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 21:27:40 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C921C106566B; Thu, 16 Jun 2011 21:27:40 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay04.stack.nl [IPv6:2001:610:1108:5010::107]) by mx1.freebsd.org (Postfix) with ESMTP id 646098FC0A; Thu, 16 Jun 2011 21:27:40 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id 92B4A1DD417; Thu, 16 Jun 2011 23:27:38 +0200 (CEST) Received: by turtle.stack.nl (Postfix, from userid 1677) id 884DF174C4; Thu, 16 Jun 2011 23:27:38 +0200 (CEST) Date: Thu, 16 Jun 2011 23:27:38 +0200 From: Jilles Tjoelker To: "Bjoern A. Zeeb" Message-ID: <20110616212738.GA73657@stack.nl> References: <200705131412.l4DECf2N068712@repoman.freebsd.org> <20110612213330.D10590@maildrop.int.zabbadoz.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110612213330.D10590@maildrop.int.zabbadoz.net> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: Daniel Eischen , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@FreeBSD.org Subject: Re: cvs commit: src Makefile.inc1 src/lib/libc Makefile src/lib/libc_r Makefile src/lib/libpthread Makefile pthread.map src/lib/libpthread/thread thr_private.h src/lib/librt Makefile src/lib/libthr Makefile pthread.map src/lib/libthread_db Makefile ... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 21:27:40 -0000 On Sun, Jun 12, 2011 at 09:38:42PM +0000, Bjoern A. Zeeb wrote: > http://svnweb.freebsd.org/base?view=revision&revision=169524 > I figured WITHOUT_SYMVER= hs been useless since 201001. I am no > longer able to do build worlds with WITHOUT_SYMVER= set in src.conf > on a system with symbol versioning. > I'd love someone to fix that and allow us to build libraries without > all the historic stuff in them. If we cannot get it back working our > libraries will grow bigger and bigger forever. > If one is building images for clean-state systems that will never run > anything older than the current CURRENT build, there is no need for > the extra size. Contrary to what people think, memory and direct > attached storage can still be expensive in some environments. > Anyone who understands the system can come up with patches to fix this? I think disabling symver completely is too much: it implies a new mutually incompatible set of binaries. What should be done instead is allowing to compile out the compatibility functions. This means all __sym_compat() directives and all functions referred to by them. A simple approach would use a yes/no #ifdef, while a more sophisticated approach would allow choosing the oldest version to retain compatibility with, for example freebsd7_semctl() in lib/libc/gen/semctl.c would be compiled in iff compatibility with FreeBSD 7.x was requested. With just symver, a binary for FreeBSD version for which compatibility was not compiled in will abort if and when it attempts to use a function that was changed in a later version. -- Jilles Tjoelker From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 21:50:28 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E97E3106566B; Thu, 16 Jun 2011 21:50:28 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D8C7E8FC18; Thu, 16 Jun 2011 21:50:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GLoS9l047180; Thu, 16 Jun 2011 21:50:28 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GLoSWL047177; Thu, 16 Jun 2011 21:50:28 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106162150.p5GLoSWL047177@svn.freebsd.org> From: Jilles Tjoelker Date: Thu, 16 Jun 2011 21:50:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223163 - in head: bin/sh tools/regression/bin/sh/expansion X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 21:50:29 -0000 Author: jilles Date: Thu Jun 16 21:50:28 2011 New Revision: 223163 URL: http://svn.freebsd.org/changeset/base/223163 Log: sh: Reduce unnecessary forks with eval. The eval special builtin now runs the code with EV_EXIT if it was run with EV_EXIT itself. In particular, this eliminates one fork when a command substitution contains an eval command that ends with an external program or a subshell. This is similar to what r220978 did for functions. Added: head/tools/regression/bin/sh/expansion/cmdsubst11.0 (contents, props changed) Modified: head/bin/sh/eval.c Modified: head/bin/sh/eval.c ============================================================================== --- head/bin/sh/eval.c Thu Jun 16 21:12:36 2011 (r223162) +++ head/bin/sh/eval.c Thu Jun 16 21:50:28 2011 (r223163) @@ -140,7 +140,7 @@ evalcmd(int argc, char **argv) STPUTC('\0', concat); p = grabstackstr(concat); } - evalstring(p, builtin_flags & EV_TESTED); + evalstring(p, builtin_flags); } else exitstatus = 0; return exitstatus; @@ -908,6 +908,7 @@ evalcommand(union node *cmd, int flags, dup2(pip[1], 1); close(pip[1]); } + flags &= ~EV_BACKCMD; } flags |= EV_EXIT; } Added: head/tools/regression/bin/sh/expansion/cmdsubst11.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/expansion/cmdsubst11.0 Thu Jun 16 21:50:28 2011 (r223163) @@ -0,0 +1,5 @@ +# $FreeBSD$ + +# Not required by POSIX but useful for efficiency. + +[ $$ = $(eval '${SH} -c echo\ \$PPID') ] From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 21:59:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F9E2106566C; Thu, 16 Jun 2011 21:59:16 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5FC598FC16; Thu, 16 Jun 2011 21:59:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GLxGoS047471; Thu, 16 Jun 2011 21:59:16 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GLxGQK047469; Thu, 16 Jun 2011 21:59:16 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201106162159.p5GLxGQK047469@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 16 Jun 2011 21:59:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223164 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 21:59:16 -0000 Author: kib Date: Thu Jun 16 21:59:16 2011 New Revision: 223164 URL: http://svn.freebsd.org/changeset/base/223164 Log: Fix silly typo that resulted in the a.out process stack to end at ~200MB instead of 3GB on amd64. Modified: head/sys/kern/imgact_aout.c Modified: head/sys/kern/imgact_aout.c ============================================================================== --- head/sys/kern/imgact_aout.c Thu Jun 16 21:50:28 2011 (r223163) +++ head/sys/kern/imgact_aout.c Thu Jun 16 21:59:16 2011 (r223164) @@ -103,7 +103,7 @@ struct sysentvec aout_sysvec = { #elif defined(__amd64__) -#define AOUT32_USRSTACK 0xbfc0000 +#define AOUT32_USRSTACK 0xbfc00000 #define AOUT32_PS_STRINGS \ (AOUT32_USRSTACK - sizeof(struct freebsd32_ps_strings)) From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 22:00:59 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AADA2106566C; Thu, 16 Jun 2011 22:00:59 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9B19A8FC08; Thu, 16 Jun 2011 22:00:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GM0x9b047577; Thu, 16 Jun 2011 22:00:59 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GM0xfi047575; Thu, 16 Jun 2011 22:00:59 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201106162200.p5GM0xfi047575@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 16 Jun 2011 22:00:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223165 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 22:00:59 -0000 Author: kib Date: Thu Jun 16 22:00:59 2011 New Revision: 223165 URL: http://svn.freebsd.org/changeset/base/223165 Log: Do not trash the argv[0] pointer for an a.out process on amd64. Found with the binary provided by joerg. Modified: head/sys/kern/imgact_aout.c Modified: head/sys/kern/imgact_aout.c ============================================================================== --- head/sys/kern/imgact_aout.c Thu Jun 16 21:59:16 2011 (r223164) +++ head/sys/kern/imgact_aout.c Thu Jun 16 22:00:59 2011 (r223165) @@ -152,7 +152,7 @@ aout_fixup(register_t **stack_base, stru { *(char **)stack_base -= sizeof(uint32_t); - return (suword(*stack_base, imgp->args->argc)); + return (suword32(*stack_base, imgp->args->argc)); } static int From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 22:03:17 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F36E1065680; Thu, 16 Jun 2011 22:03:17 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 052828FC1E; Thu, 16 Jun 2011 22:03:16 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id p5GM3DwC052683 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 17 Jun 2011 01:03:13 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id p5GM3D9Z048845; Fri, 17 Jun 2011 01:03:13 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id p5GM3DGj048844; Fri, 17 Jun 2011 01:03:13 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 17 Jun 2011 01:03:13 +0300 From: Kostik Belousov To: Jilles Tjoelker Message-ID: <20110616220313.GT48734@deviant.kiev.zoral.com.ua> References: <200705131412.l4DECf2N068712@repoman.freebsd.org> <20110612213330.D10590@maildrop.int.zabbadoz.net> <20110616212738.GA73657@stack.nl> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="yeOXabQBkPz8M8o8" Content-Disposition: inline In-Reply-To: <20110616212738.GA73657@stack.nl> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-3.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: Daniel Eischen , "Bjoern A. Zeeb" , svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-head@freebsd.org Subject: Re: cvs commit: src Makefile.inc1 src/lib/libc Makefile src/lib/libc_r Makefile src/lib/libpthread Makefile pthread.map src/lib/libpthread/thread thr_private.h src/lib/librt Makefile src/lib/libthr Makefile pthread.map src/lib/libthread_db Makefile ... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 22:03:17 -0000 --yeOXabQBkPz8M8o8 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Jun 16, 2011 at 11:27:38PM +0200, Jilles Tjoelker wrote: > On Sun, Jun 12, 2011 at 09:38:42PM +0000, Bjoern A. Zeeb wrote: > > http://svnweb.freebsd.org/base?view=3Drevision&revision=3D169524 >=20 > > I figured WITHOUT_SYMVER=3D hs been useless since 201001. I am no > > longer able to do build worlds with WITHOUT_SYMVER=3D set in src.conf > > on a system with symbol versioning. >=20 > > I'd love someone to fix that and allow us to build libraries without > > all the historic stuff in them. If we cannot get it back working our > > libraries will grow bigger and bigger forever. >=20 > > If one is building images for clean-state systems that will never run > > anything older than the current CURRENT build, there is no need for > > the extra size. Contrary to what people think, memory and direct > > attached storage can still be expensive in some environments. >=20 > > Anyone who understands the system can come up with patches to fix this? >=20 > I think disabling symver completely is too much: it implies a new > mutually incompatible set of binaries. What should be done instead is > allowing to compile out the compatibility functions. This means all > __sym_compat() directives and all functions referred to by them. A > simple approach would use a yes/no #ifdef, while a more sophisticated > approach would allow choosing the oldest version to retain compatibility > with, for example freebsd7_semctl() in lib/libc/gen/semctl.c would be > compiled in iff compatibility with FreeBSD 7.x was requested. >=20 > With just symver, a binary for FreeBSD version for which compatibility > was not compiled in will abort if and when it attempts to use a function > that was changed in a later version. Preventing which behaviour was explicitely the goal of designing the symver mechanism at the first place. And, disabling symver does not removes the "compat cruft" from the system, it only makes the compat code not accessible. --yeOXabQBkPz8M8o8 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (FreeBSD) iEYEARECAAYFAk36faAACgkQC3+MBN1Mb4hxOQCcDgPnqR8jyQ9t70dCF4jDyquv oyAAnRZQruWWrbmn6rKhofV6CRKqIvw7 =j3ZQ -----END PGP SIGNATURE----- --yeOXabQBkPz8M8o8-- From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 22:05:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A5A7A1065674; Thu, 16 Jun 2011 22:05:56 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 95A4F8FC18; Thu, 16 Jun 2011 22:05:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GM5uht047761; Thu, 16 Jun 2011 22:05:56 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GM5uDA047758; Thu, 16 Jun 2011 22:05:56 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201106162205.p5GM5uDA047758@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 16 Jun 2011 22:05:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223166 - head/sys/compat/freebsd32 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 22:05:56 -0000 Author: kib Date: Thu Jun 16 22:05:56 2011 New Revision: 223166 URL: http://svn.freebsd.org/changeset/base/223166 Log: Implement compat32 for old lseek, for the a.out binaries on amd64. Modified: head/sys/compat/freebsd32/freebsd32_misc.c head/sys/compat/freebsd32/syscalls.master Modified: head/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_misc.c Thu Jun 16 22:00:59 2011 (r223165) +++ head/sys/compat/freebsd32/freebsd32_misc.c Thu Jun 16 22:05:56 2011 (r223166) @@ -1416,6 +1416,19 @@ freebsd32_pwrite(struct thread *td, stru return (pwrite(td, &ap)); } +#ifdef COMPAT_43 +int +ofreebsd32_lseek(struct thread *td, struct ofreebsd32_lseek_args *uap) +{ + struct lseek_args nuap; + + nuap.fd = uap->fd; + nuap.offset = uap->offset; + nuap.whence = uap->whence; + return (lseek(td, &nuap)); +} +#endif + int freebsd32_lseek(struct thread *td, struct freebsd32_lseek_args *uap) { Modified: head/sys/compat/freebsd32/syscalls.master ============================================================================== --- head/sys/compat/freebsd32/syscalls.master Thu Jun 16 22:00:59 2011 (r223165) +++ head/sys/compat/freebsd32/syscalls.master Thu Jun 16 22:05:56 2011 (r223166) @@ -89,7 +89,8 @@ 18 AUE_GETFSSTAT COMPAT4 { int freebsd32_getfsstat( \ struct statfs32 *buf, long bufsize, \ int flags); } -19 AUE_LSEEK OBSOL olseek +19 AUE_LSEEK COMPAT { int freebsd32_lseek(int fd, int offset, \ + int whence); } 20 AUE_GETPID NOPROTO { pid_t getpid(void); } 21 AUE_MOUNT NOPROTO { int mount(char *type, char *path, \ int flags, caddr_t data); } From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 22:06:35 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 85C7E1065672; Thu, 16 Jun 2011 22:06:35 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 752E68FC13; Thu, 16 Jun 2011 22:06:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GM6ZfD047829; Thu, 16 Jun 2011 22:06:35 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GM6Z0x047824; Thu, 16 Jun 2011 22:06:35 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201106162206.p5GM6Z0x047824@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 16 Jun 2011 22:06:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223167 - head/sys/compat/freebsd32 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 22:06:35 -0000 Author: kib Date: Thu Jun 16 22:06:35 2011 New Revision: 223167 URL: http://svn.freebsd.org/changeset/base/223167 Log: Regen. Modified: head/sys/compat/freebsd32/freebsd32_proto.h head/sys/compat/freebsd32/freebsd32_syscall.h head/sys/compat/freebsd32/freebsd32_syscalls.c head/sys/compat/freebsd32/freebsd32_sysent.c Modified: head/sys/compat/freebsd32/freebsd32_proto.h ============================================================================== --- head/sys/compat/freebsd32/freebsd32_proto.h Thu Jun 16 22:05:56 2011 (r223166) +++ head/sys/compat/freebsd32/freebsd32_proto.h Thu Jun 16 22:06:35 2011 (r223167) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 223166 2011-06-16 22:05:56Z kib */ #ifndef _FREEBSD32_SYSPROTO_H_ @@ -690,6 +690,11 @@ int freebsd32_posix_fallocate(struct thr #if !defined(PAD64_REQUIRED) && defined(__powerpc__) #define PAD64_REQUIRED #endif +struct ofreebsd32_lseek_args { + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char offset_l_[PADL_(int)]; int offset; char offset_r_[PADR_(int)]; + char whence_l_[PADL_(int)]; int whence; char whence_r_[PADR_(int)]; +}; struct ofreebsd32_stat_args { char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; char ub_l_[PADL_(struct ostat32 *)]; struct ostat32 * ub; char ub_r_[PADR_(struct ostat32 *)]; @@ -747,6 +752,7 @@ struct ofreebsd32_getdirentries_args { #ifdef PAD64_REQUIRED #else #endif +int ofreebsd32_lseek(struct thread *, struct ofreebsd32_lseek_args *); int ofreebsd32_stat(struct thread *, struct ofreebsd32_stat_args *); int ofreebsd32_lstat(struct thread *, struct ofreebsd32_lstat_args *); int ofreebsd32_sigaction(struct thread *, struct ofreebsd32_sigaction_args *); @@ -923,6 +929,7 @@ int freebsd7_freebsd32_shmctl(struct thr #define FREEBSD32_SYS_AUE_freebsd32_wait4 AUE_WAIT4 #define FREEBSD32_SYS_AUE_freebsd4_freebsd32_getfsstat AUE_GETFSSTAT +#define FREEBSD32_SYS_AUE_ofreebsd32_lseek AUE_LSEEK #define FREEBSD32_SYS_AUE_freebsd32_recvmsg AUE_RECVMSG #define FREEBSD32_SYS_AUE_freebsd32_sendmsg AUE_SENDMSG #define FREEBSD32_SYS_AUE_freebsd32_recvfrom AUE_RECVFROM Modified: head/sys/compat/freebsd32/freebsd32_syscall.h ============================================================================== --- head/sys/compat/freebsd32/freebsd32_syscall.h Thu Jun 16 22:05:56 2011 (r223166) +++ head/sys/compat/freebsd32/freebsd32_syscall.h Thu Jun 16 22:06:35 2011 (r223167) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 223166 2011-06-16 22:05:56Z kib */ #define FREEBSD32_SYS_syscall 0 @@ -25,7 +25,7 @@ #define FREEBSD32_SYS_chown 16 #define FREEBSD32_SYS_break 17 #define FREEBSD32_SYS_freebsd4_freebsd32_getfsstat 18 - /* 19 is obsolete olseek */ + /* 19 is old freebsd32_lseek */ #define FREEBSD32_SYS_getpid 20 #define FREEBSD32_SYS_mount 21 #define FREEBSD32_SYS_unmount 22 Modified: head/sys/compat/freebsd32/freebsd32_syscalls.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_syscalls.c Thu Jun 16 22:05:56 2011 (r223166) +++ head/sys/compat/freebsd32/freebsd32_syscalls.c Thu Jun 16 22:06:35 2011 (r223167) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 223166 2011-06-16 22:05:56Z kib */ const char *freebsd32_syscallnames[] = { @@ -29,7 +29,7 @@ const char *freebsd32_syscallnames[] = { "chown", /* 16 = chown */ "break", /* 17 = break */ "compat4.freebsd32_getfsstat", /* 18 = freebsd4 freebsd32_getfsstat */ - "obs_olseek", /* 19 = obsolete olseek */ + "compat.freebsd32_lseek", /* 19 = old freebsd32_lseek */ "getpid", /* 20 = getpid */ "mount", /* 21 = mount */ "unmount", /* 22 = unmount */ Modified: head/sys/compat/freebsd32/freebsd32_sysent.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_sysent.c Thu Jun 16 22:05:56 2011 (r223166) +++ head/sys/compat/freebsd32/freebsd32_sysent.c Thu Jun 16 22:06:35 2011 (r223167) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 223166 2011-06-16 22:05:56Z kib */ #include "opt_compat.h" @@ -66,7 +66,7 @@ struct sysent freebsd32_sysent[] = { { AS(chown_args), (sy_call_t *)chown, AUE_CHOWN, NULL, 0, 0, 0, SY_THR_STATIC }, /* 16 = chown */ { AS(obreak_args), (sy_call_t *)obreak, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 17 = break */ { compat4(AS(freebsd4_freebsd32_getfsstat_args),freebsd32_getfsstat), AUE_GETFSSTAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 18 = freebsd4 freebsd32_getfsstat */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 19 = obsolete olseek */ + { compat(AS(ofreebsd32_lseek_args),freebsd32_lseek), AUE_LSEEK, NULL, 0, 0, 0, SY_THR_STATIC }, /* 19 = old freebsd32_lseek */ { 0, (sy_call_t *)getpid, AUE_GETPID, NULL, 0, 0, 0, SY_THR_STATIC }, /* 20 = getpid */ { AS(mount_args), (sy_call_t *)mount, AUE_MOUNT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 21 = mount */ { AS(unmount_args), (sy_call_t *)unmount, AUE_UMOUNT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 22 = unmount */ From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 22:07:53 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 63BE6106566B; Thu, 16 Jun 2011 22:07:53 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from mail.netplex.net (mail.netplex.net [204.213.176.10]) by mx1.freebsd.org (Postfix) with ESMTP id 179A58FC19; Thu, 16 Jun 2011 22:07:52 +0000 (UTC) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) by mail.netplex.net (8.14.4/8.14.4/NETPLEX) with ESMTP id p5GLtBcM016832; Thu, 16 Jun 2011 17:55:11 -0400 X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.netplex.net) X-Greylist: Message whitelisted by DRAC access database, not delayed by milter-greylist-4.2.6 (mail.netplex.net [204.213.176.10]); Thu, 16 Jun 2011 17:55:11 -0400 (EDT) Date: Thu, 16 Jun 2011 17:55:11 -0400 (EDT) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: Jilles Tjoelker In-Reply-To: <20110616212738.GA73657@stack.nl> Message-ID: References: <200705131412.l4DECf2N068712@repoman.freebsd.org> <20110612213330.D10590@maildrop.int.zabbadoz.net> <20110616212738.GA73657@stack.nl> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, "Bjoern A. Zeeb" , svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: cvs commit: src Makefile.inc1 src/lib/libc Makefile src/lib/libc_r Makefile src/lib/libpthread Makefile pthread.map src/lib/libpthread/thread thr_private.h src/lib/librt Makefile src/lib/libthr Makefile pthread.map src/lib/libthread_db Makefile ... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Daniel Eischen List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 22:07:53 -0000 On Thu, 16 Jun 2011, Jilles Tjoelker wrote: > On Sun, Jun 12, 2011 at 09:38:42PM +0000, Bjoern A. Zeeb wrote: >> http://svnweb.freebsd.org/base?view=revision&revision=169524 > >> I figured WITHOUT_SYMVER= hs been useless since 201001. I am no >> longer able to do build worlds with WITHOUT_SYMVER= set in src.conf >> on a system with symbol versioning. > >> I'd love someone to fix that and allow us to build libraries without >> all the historic stuff in them. If we cannot get it back working our >> libraries will grow bigger and bigger forever. > >> If one is building images for clean-state systems that will never run >> anything older than the current CURRENT build, there is no need for >> the extra size. Contrary to what people think, memory and direct >> attached storage can still be expensive in some environments. > >> Anyone who understands the system can come up with patches to fix this? BTW, I didn't get bz's email quoted above. I'm sorry if I was CC'd and missed it. -- DE From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 22:07:57 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3F39C1065672; Thu, 16 Jun 2011 22:07:57 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from mail.netplex.net (mail.netplex.net [204.213.176.10]) by mx1.freebsd.org (Postfix) with ESMTP id CE59E8FC0A; Thu, 16 Jun 2011 22:07:56 +0000 (UTC) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) by mail.netplex.net (8.14.4/8.14.4/NETPLEX) with ESMTP id p5GLqWvf015402; Thu, 16 Jun 2011 17:52:32 -0400 X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.netplex.net) X-Greylist: Message whitelisted by DRAC access database, not delayed by milter-greylist-4.2.6 (mail.netplex.net [204.213.176.10]); Thu, 16 Jun 2011 17:52:32 -0400 (EDT) Date: Thu, 16 Jun 2011 17:52:32 -0400 (EDT) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: Jilles Tjoelker In-Reply-To: <20110616212738.GA73657@stack.nl> Message-ID: References: <200705131412.l4DECf2N068712@repoman.freebsd.org> <20110612213330.D10590@maildrop.int.zabbadoz.net> <20110616212738.GA73657@stack.nl> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, "Bjoern A. Zeeb" , svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: cvs commit: src Makefile.inc1 src/lib/libc Makefile src/lib/libc_r Makefile src/lib/libpthread Makefile pthread.map src/lib/libpthread/thread thr_private.h src/lib/librt Makefile src/lib/libthr Makefile pthread.map src/lib/libthread_db Makefile ... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Daniel Eischen List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 22:07:57 -0000 On Thu, 16 Jun 2011, Jilles Tjoelker wrote: > On Sun, Jun 12, 2011 at 09:38:42PM +0000, Bjoern A. Zeeb wrote: >> http://svnweb.freebsd.org/base?view=revision&revision=169524 > >> I figured WITHOUT_SYMVER= hs been useless since 201001. I am no >> longer able to do build worlds with WITHOUT_SYMVER= set in src.conf >> on a system with symbol versioning. > >> I'd love someone to fix that and allow us to build libraries without >> all the historic stuff in them. If we cannot get it back working our >> libraries will grow bigger and bigger forever. > >> If one is building images for clean-state systems that will never run >> anything older than the current CURRENT build, there is no need for >> the extra size. Contrary to what people think, memory and direct >> attached storage can still be expensive in some environments. > >> Anyone who understands the system can come up with patches to fix this? > > I think disabling symver completely is too much: it implies a new > mutually incompatible set of binaries. What should be done instead is > allowing to compile out the compatibility functions. This means all > __sym_compat() directives and all functions referred to by them. A > simple approach would use a yes/no #ifdef, while a more sophisticated > approach would allow choosing the oldest version to retain compatibility > with, for example freebsd7_semctl() in lib/libc/gen/semctl.c would be > compiled in iff compatibility with FreeBSD 7.x was requested. I like this approach. But if you can do that, then is it much more to remove symbol versioning completely? I've forgotten. I know there were some potential problems trying to install a symver-free world over a symver world. -- DE From owner-svn-src-all@FreeBSD.ORG Thu Jun 16 23:40:11 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 538931065673; Thu, 16 Jun 2011 23:40:11 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2970B8FC15; Thu, 16 Jun 2011 23:40:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5GNeB6q050630; Thu, 16 Jun 2011 23:40:11 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5GNeBIY050626; Thu, 16 Jun 2011 23:40:11 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201106162340.p5GNeBIY050626@svn.freebsd.org> From: Kirk McKusick Date: Thu, 16 Jun 2011 23:40:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223169 - in head: sys/ufs/ffs usr.sbin/makefs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2011 23:40:11 -0000 Author: mckusick Date: Thu Jun 16 23:40:10 2011 New Revision: 223169 URL: http://svn.freebsd.org/changeset/base/223169 Log: Drop the include of from usr.sbin/makefs/ffs/ffs_bswap.c and usr.sbin/makefs/ffs/ffs_subr.c as they have no need of anything in that file. No other programs or libraries include (nor should they as it is totally in-kernel interfaces). For added protection I enclosed the entire contents of in ifdef _KERNEL. Feedback from: Bruce Evans and Tai-hwa Liang Modified: head/sys/ufs/ffs/ffs_extern.h head/usr.sbin/makefs/ffs/ffs_bswap.c head/usr.sbin/makefs/ffs/ffs_subr.c Modified: head/sys/ufs/ffs/ffs_extern.h ============================================================================== --- head/sys/ufs/ffs/ffs_extern.h Thu Jun 16 23:36:01 2011 (r223168) +++ head/sys/ufs/ffs/ffs_extern.h Thu Jun 16 23:40:10 2011 (r223169) @@ -33,7 +33,10 @@ #ifndef _UFS_FFS_EXTERN_H #define _UFS_FFS_EXTERN_H -enum vtype; +#ifndef _KERNEL +#error "No user-serving parts inside" +#else + struct buf; struct cg; struct fid; @@ -168,7 +171,6 @@ void softdep_freework(struct workhead *) int ffs_rdonly(struct inode *); -#ifdef _KERNEL TAILQ_HEAD(snaphead, inode); struct snapdata { @@ -178,6 +180,7 @@ struct snapdata { daddr_t *sn_blklist; struct lock sn_lock; }; + #endif /* _KERNEL */ #endif /* !_UFS_FFS_EXTERN_H */ Modified: head/usr.sbin/makefs/ffs/ffs_bswap.c ============================================================================== --- head/usr.sbin/makefs/ffs/ffs_bswap.c Thu Jun 16 23:36:01 2011 (r223168) +++ head/usr.sbin/makefs/ffs/ffs_bswap.c Thu Jun 16 23:40:10 2011 (r223169) @@ -41,14 +41,6 @@ __FBSDID("$FreeBSD$"); #include #include "ffs/ufs_bswap.h" #include -/* XXX temporary */ -struct ufsmount; -struct bufobj; -struct mount; -struct vnode; -typedef int vfs_vget_t(struct mount *mp, ino_t ino, int flags, - struct vnode **vpp); -#include #if !defined(_KERNEL) #include Modified: head/usr.sbin/makefs/ffs/ffs_subr.c ============================================================================== --- head/usr.sbin/makefs/ffs/ffs_subr.c Thu Jun 16 23:36:01 2011 (r223168) +++ head/usr.sbin/makefs/ffs/ffs_subr.c Thu Jun 16 23:40:10 2011 (r223169) @@ -38,15 +38,8 @@ __FBSDID("$FreeBSD$"); #include #include -/* XXX temporary */ -struct ufsmount; -struct bufobj; -struct mount; -struct vnode; -typedef int vfs_vget_t(struct mount *mp, ino_t ino, int flags, - struct vnode **vpp); -#include #include "ffs/ufs_bswap.h" + void panic __P((const char *, ...)) __attribute__((__noreturn__,__format__(__printf__,1,2))); From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 04:26:04 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0B1211065672; Fri, 17 Jun 2011 04:26:04 +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 D65928FC17; Fri, 17 Jun 2011 04:26:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H4Q31D059217; Fri, 17 Jun 2011 04:26:03 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H4Q3MK059214; Fri, 17 Jun 2011 04:26:03 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201106170426.p5H4Q3MK059214@svn.freebsd.org> From: Marcel Moolenaar Date: Fri, 17 Jun 2011 04:26:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223170 - in head/sys/ia64: ia64 include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 04:26:04 -0000 Author: marcel Date: Fri Jun 17 04:26:03 2011 New Revision: 223170 URL: http://svn.freebsd.org/changeset/base/223170 Log: Properly serialize the global shootdown with the instruction stream of the local processor. Also explicitly invalidate the ALAT. This is done on the other CPUs in the coherence domain by virtue of the ptc.ga instruction, but does not apply to the local CPU. Modified: head/sys/ia64/ia64/pmap.c head/sys/ia64/include/ia64_cpu.h Modified: head/sys/ia64/ia64/pmap.c ============================================================================== --- head/sys/ia64/ia64/pmap.c Thu Jun 16 23:40:10 2011 (r223169) +++ head/sys/ia64/ia64/pmap.c Fri Jun 17 04:26:03 2011 (r223170) @@ -559,10 +559,14 @@ pmap_invalidate_page(vm_offset_t va) } while (sem != tag); ia64_ptc_ga(va, PAGE_SHIFT << 2); + ia64_mf(); + ia64_srlz_i(); /* PTC.G leave exclusive */ atomic_store_rel_long(&pmap_ptc_g_sem, 0); + ia64_invala(); + intr_restore(is); critical_exit(); } Modified: head/sys/ia64/include/ia64_cpu.h ============================================================================== --- head/sys/ia64/include/ia64_cpu.h Thu Jun 16 23:40:10 2011 (r223169) +++ head/sys/ia64/include/ia64_cpu.h Fri Jun 17 04:26:03 2011 (r223170) @@ -266,7 +266,7 @@ ia64_ptc_e(uint64_t v) static __inline void ia64_ptc_g(uint64_t va, uint64_t log2size) { - __asm __volatile("ptc.g %0,%1;; srlz.i;;" :: "r"(va), "r"(log2size)); + __asm __volatile("ptc.g %0,%1;;" :: "r"(va), "r"(log2size)); } /* @@ -275,7 +275,7 @@ ia64_ptc_g(uint64_t va, uint64_t log2siz static __inline void ia64_ptc_ga(uint64_t va, uint64_t log2size) { - __asm __volatile("ptc.ga %0,%1;; srlz.i;;" :: "r"(va), "r"(log2size)); + __asm __volatile("ptc.ga %0,%1;;" :: "r"(va), "r"(log2size)); } /* @@ -288,6 +288,15 @@ ia64_ptc_l(uint64_t va, uint64_t log2siz } /* + * Invalidate the ALAT on the local processor. + */ +static __inline void +ia64_invala(void) +{ + __asm __volatile("invala;;"); +} + +/* * Unordered memory load. */ From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 05:30:12 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9BF161065673; Fri, 17 Jun 2011 05:30:12 +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 8B4418FC0C; Fri, 17 Jun 2011 05:30:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H5UC6R061903; Fri, 17 Jun 2011 05:30:12 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H5UC7T061901; Fri, 17 Jun 2011 05:30:12 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201106170530.p5H5UC7T061901@svn.freebsd.org> From: Marcel Moolenaar Date: Fri, 17 Jun 2011 05:30:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223171 - head/sys/ia64/ia64 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 05:30:12 -0000 Author: marcel Date: Fri Jun 17 05:30:12 2011 New Revision: 223171 URL: http://svn.freebsd.org/changeset/base/223171 Log: Improve on style(9) Modified: head/sys/ia64/ia64/busdma_machdep.c Modified: head/sys/ia64/ia64/busdma_machdep.c ============================================================================== --- head/sys/ia64/ia64/busdma_machdep.c Fri Jun 17 04:26:03 2011 (r223170) +++ head/sys/ia64/ia64/busdma_machdep.c Fri Jun 17 05:30:12 2011 (r223171) @@ -51,21 +51,21 @@ __FBSDID("$FreeBSD$"); #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_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; + 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; }; @@ -90,27 +90,27 @@ 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"); + "Free bounce pages"); SYSCTL_INT(_hw_busdma, OID_AUTO, reserved_bpages, CTLFLAG_RD, &reserved_bpages, - 0, "Reserved bounce pages"); + 0, "Reserved bounce pages"); SYSCTL_INT(_hw_busdma, OID_AUTO, active_bpages, CTLFLAG_RD, &active_bpages, 0, - "Active bounce pages"); + "Active bounce pages"); SYSCTL_INT(_hw_busdma, OID_AUTO, total_bpages, CTLFLAG_RD, &total_bpages, 0, - "Total bounce pages"); + "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"); + "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 */ + 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; + void *callback_arg; STAILQ_ENTRY(bus_dmamap) links; }; @@ -121,12 +121,12 @@ 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); + 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); + 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); + bus_size_t len); /* * Return true if a match is made. @@ -144,16 +144,14 @@ run_filter(bus_dma_tag_t dmat, bus_addr_ 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)) + 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; + dmat = dmat->parent; } while (retval == 0 && dmat != NULL); return (retval); } @@ -195,16 +193,16 @@ dflt_lock(void *arg, bus_dma_lock_op_t o } #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_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; @@ -250,7 +248,7 @@ bus_dma_tag_create(bus_dma_tag_t parent, newtag->boundary = parent->boundary; else if (parent->boundary != 0) newtag->boundary = MIN(parent->boundary, - newtag->boundary); + newtag->boundary); if (newtag->filter == NULL) { /* * Short circuit looking at our parent directly @@ -279,7 +277,7 @@ bus_dma_tag_create(bus_dma_tag_t parent, /* Performed initial allocation */ newtag->flags |= BUS_DMA_MIN_ALLOC_COMP; } - + if (error != 0) { free(newtag, M_DEVBUF); } else { @@ -347,7 +345,7 @@ bus_dmamap_create(bus_dma_tag_t dmat, in int maxpages; *mapp = (bus_dmamap_t)malloc(sizeof(**mapp), M_DEVBUF, - M_NOWAIT | M_ZERO); + M_NOWAIT | M_ZERO); if (*mapp == NULL) return (ENOMEM); @@ -408,7 +406,7 @@ bus_dmamap_destroy(bus_dma_tag_t dmat, b */ int bus_dmamem_alloc(bus_dma_tag_t dmat, void** vaddr, int flags, - bus_dmamap_t *mapp) + bus_dmamap_t *mapp) { int mflags; @@ -430,7 +428,7 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, voi 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 @@ -489,15 +487,9 @@ bus_dmamem_free(bus_dma_tag_t dmat, void * 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_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; @@ -607,7 +599,7 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dm if (curaddr == lastaddr && (segs[seg].ds_len + sgsize) <= dmat->maxsegsz && (dmat->boundary == 0 || - (segs[seg].ds_addr & bmask) == (curaddr & bmask))) + (segs[seg].ds_addr & bmask) == (curaddr & bmask))) segs[seg].ds_len += sgsize; else { if (++seg >= dmat->nsegments) @@ -636,11 +628,11 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dm */ 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_size_t buflen, bus_dmamap_callback_t *callback, void *callback_arg, + int flags) { - bus_addr_t lastaddr = 0; - int error, nsegs = 0; + bus_addr_t lastaddr = 0; + int error, nsegs = 0; if (map != NULL) { flags |= BUS_DMA_WAITOK; @@ -666,10 +658,8 @@ bus_dmamap_load(bus_dma_tag_t dmat, bus_ * 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) +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; @@ -686,9 +676,8 @@ bus_dmamap_load_mbuf(bus_dma_tag_t dmat, 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); + m->m_data, m->m_len, NULL, flags, + &lastaddr, dmat->segments, &nsegs, first); first = 0; } } @@ -707,9 +696,8 @@ bus_dmamap_load_mbuf(bus_dma_tag_t dmat, } 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) +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; @@ -726,9 +714,8 @@ bus_dmamap_load_mbuf_sg(bus_dma_tag_t dm 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); + m->m_data, m->m_len, NULL, flags, + &lastaddr, segs, nsegs, first); first = 0; } } @@ -744,10 +731,8 @@ bus_dmamap_load_mbuf_sg(bus_dma_tag_t dm * 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_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; @@ -826,8 +811,7 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus if (op & BUS_DMASYNC_PREWRITE) { while (bpage != NULL) { bcopy((void *)bpage->datavaddr, - (void *)bpage->vaddr, - bpage->datacount); + (void *)bpage->vaddr, bpage->datacount); bpage = STAILQ_NEXT(bpage, links); } total_bounced++; @@ -836,8 +820,7 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus if (op & BUS_DMASYNC_POSTREAD) { while (bpage != NULL) { bcopy((void *)bpage->vaddr, - (void *)bpage->datavaddr, - bpage->datacount); + (void *)bpage->datavaddr, bpage->datacount); bpage = STAILQ_NEXT(bpage, links); } total_bounced++; @@ -870,15 +853,11 @@ alloc_bounce_pages(bus_dma_tag_t dmat, u struct bounce_page *bpage; bpage = (struct bounce_page *)malloc(sizeof(*bpage), M_DEVBUF, - M_NOWAIT | M_ZERO); - + 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); + M_NOWAIT, 0ul, dmat->lowaddr, PAGE_SIZE, dmat->boundary); if (bpage->vaddr == 0) { free(bpage, M_DEVBUF); break; @@ -914,7 +893,7 @@ reserve_bounce_pages(bus_dma_tag_t dmat, static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, - bus_size_t size) + bus_size_t size) { struct bounce_page *bpage; @@ -974,8 +953,8 @@ free_bounce_page(bus_dma_tag_t dmat, str 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); + STAILQ_INSERT_TAIL(&bounce_map_callbacklist, map, + links); busdma_swi_pending = 1; total_deferred++; swi_sched(vm_ih, 0); @@ -997,7 +976,7 @@ busdma_swi(void) 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); + map->callback, map->callback_arg, /*flags*/0); (dmat->lockfunc)(dmat->lockfuncarg, BUS_DMA_UNLOCK); mtx_lock(&bounce_lock); } From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 05:55:41 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B7217106566C; Fri, 17 Jun 2011 05:55:41 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9CC038FC0A; Fri, 17 Jun 2011 05:55:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H5tfLu062950; Fri, 17 Jun 2011 05:55:41 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H5tfRU062946; Fri, 17 Jun 2011 05:55:41 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201106170555.p5H5tfRU062946@svn.freebsd.org> From: Alexander Motin Date: Fri, 17 Jun 2011 05:55:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223172 - stable/8/sys/geom X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 05:55:41 -0000 Author: mav Date: Fri Jun 17 05:55:41 2011 New Revision: 223172 URL: http://svn.freebsd.org/changeset/base/223172 Log: MFC r219950: Change BIO_GETATTR("GEOM::kerneldump") API to make set_dumper() called by consumer (geom_dev) instead of provider (geom_disk). This allows any geom insert it's code into the dump call chain, implementing more sophisticated functionality then just disk partitioning. Modified: stable/8/sys/geom/geom.h stable/8/sys/geom/geom_dev.c stable/8/sys/geom/geom_disk.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/geom/geom.h ============================================================================== --- stable/8/sys/geom/geom.h Fri Jun 17 05:30:12 2011 (r223171) +++ stable/8/sys/geom/geom.h Fri Jun 17 05:55:41 2011 (r223172) @@ -43,6 +43,7 @@ #include #include #include +#include #include #include @@ -304,6 +305,7 @@ extern struct sx topology_lock; struct g_kerneldump { off_t offset; off_t length; + struct dumperinfo di; }; MALLOC_DECLARE(M_GEOM); Modified: stable/8/sys/geom/geom_dev.c ============================================================================== --- stable/8/sys/geom/geom_dev.c Fri Jun 17 05:30:12 2011 (r223171) +++ stable/8/sys/geom/geom_dev.c Fri Jun 17 05:55:41 2011 (r223172) @@ -281,8 +281,11 @@ g_dev_ioctl(struct cdev *dev, u_long cmd kd.length = OFF_MAX; i = sizeof kd; error = g_io_getattr("GEOM::kerneldump", cp, &i, &kd); - if (!error) - dev->si_flags |= SI_DUMPDEV; + if (!error) { + error = set_dumper(&kd.di); + if (!error) + dev->si_flags |= SI_DUMPDEV; + } break; case DIOCGFLUSH: error = g_io_flush(cp); Modified: stable/8/sys/geom/geom_disk.c ============================================================================== --- stable/8/sys/geom/geom_disk.c Fri Jun 17 05:30:12 2011 (r223171) +++ stable/8/sys/geom/geom_disk.c Fri Jun 17 05:55:41 2011 (r223172) @@ -43,7 +43,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -169,10 +168,8 @@ g_disk_access(struct g_provider *pp, int static void g_disk_kerneldump(struct bio *bp, struct disk *dp) -{ - int error; +{ struct g_kerneldump *gkd; - struct dumperinfo di; struct g_geom *gp; gkd = (struct g_kerneldump*)bp->bio_data; @@ -183,16 +180,15 @@ g_disk_kerneldump(struct bio *bp, struct g_io_deliver(bp, ENODEV); return; } - di.dumper = dp->d_dump; - di.priv = dp; - di.blocksize = dp->d_sectorsize; - di.maxiosize = dp->d_maxsize; - di.mediaoffset = gkd->offset; + gkd->di.dumper = dp->d_dump; + gkd->di.priv = dp; + gkd->di.blocksize = dp->d_sectorsize; + gkd->di.maxiosize = dp->d_maxsize; + gkd->di.mediaoffset = gkd->offset; if ((gkd->offset + gkd->length) > dp->d_mediasize) gkd->length = dp->d_mediasize - gkd->offset; - di.mediasize = gkd->length; - error = set_dumper(&di); - g_io_deliver(bp, error); + gkd->di.mediasize = gkd->length; + g_io_deliver(bp, 0); } static void From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 06:12:28 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE40B106564A; Fri, 17 Jun 2011 06:12:28 +0000 (UTC) (envelope-from netchild@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BE01F8FC1B; Fri, 17 Jun 2011 06:12:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H6CSDx063556; Fri, 17 Jun 2011 06:12:28 GMT (envelope-from netchild@svn.freebsd.org) Received: (from netchild@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H6CStR063554; Fri, 17 Jun 2011 06:12:28 GMT (envelope-from netchild@svn.freebsd.org) Message-Id: <201106170612.p5H6CStR063554@svn.freebsd.org> From: Alexander Leidinger Date: Fri, 17 Jun 2011 06:12:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223173 - head/usr.bin/kdump X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 06:12:28 -0000 Author: netchild Date: Fri Jun 17 06:12:28 2011 New Revision: 223173 URL: http://svn.freebsd.org/changeset/base/223173 Log: Add 2-clause BSD license. Approved by: David Kirchner (initial author) Requested by: Otto Moerbeek MFC after: 1 week Modified: head/usr.bin/kdump/mksubr Modified: head/usr.bin/kdump/mksubr ============================================================================== --- head/usr.bin/kdump/mksubr Fri Jun 17 05:55:41 2011 (r223172) +++ head/usr.bin/kdump/mksubr Fri Jun 17 06:12:28 2011 (r223173) @@ -1,5 +1,28 @@ #!/bin/sh # +# Copyright (c) 2006 "David Kirchner" . 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. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. +# # $FreeBSD$ # # Generates kdump_subr.c From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 06:17:45 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EAAED1065672; Fri, 17 Jun 2011 06:17:45 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DA6BC8FC18; Fri, 17 Jun 2011 06:17:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H6HjDE063746; Fri, 17 Jun 2011 06:17:45 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H6HjBV063744; Fri, 17 Jun 2011 06:17:45 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201106170617.p5H6HjBV063744@svn.freebsd.org> From: Alexander Motin Date: Fri, 17 Jun 2011 06:17:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223174 - stable/8/sys/dev/led X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 06:17:46 -0000 Author: mav Date: Fri Jun 17 06:17:45 2011 New Revision: 223174 URL: http://svn.freebsd.org/changeset/base/223174 Log: MFC r212371 (by mdf): Fix an incorrect use of sbuf_overflowed() after a call to sbuf_finish(). Modified: stable/8/sys/dev/led/led.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/led/led.c ============================================================================== --- stable/8/sys/dev/led/led.c Fri Jun 17 06:12:28 2011 (r223173) +++ stable/8/sys/dev/led/led.c Fri Jun 17 06:17:45 2011 (r223174) @@ -220,15 +220,11 @@ led_write(struct cdev *dev, struct uio * free(s2, M_DEVBUF); return (EINVAL); } - sbuf_finish(sb); + error = sbuf_finish(sb); free(s2, M_DEVBUF); - if (sbuf_overflowed(sb)) { + if (error != 0 || sbuf_len(sb) == 0) { sbuf_delete(sb); - return (ENOMEM); - } - if (sbuf_len(sb) == 0) { - sbuf_delete(sb); - return (0); + return (error); } return (led_state(dev, sb, 0)); From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 06:19:24 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3DEE0106566B; Fri, 17 Jun 2011 06:19:24 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2CABD8FC16; Fri, 17 Jun 2011 06:19:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H6JO4F063838; Fri, 17 Jun 2011 06:19:24 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H6JOgd063835; Fri, 17 Jun 2011 06:19:24 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201106170619.p5H6JOgd063835@svn.freebsd.org> From: Alexander Motin Date: Fri, 17 Jun 2011 06:19:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223175 - stable/8/sys/dev/led X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 06:19:24 -0000 Author: mav Date: Fri Jun 17 06:19:23 2011 New Revision: 223175 URL: http://svn.freebsd.org/changeset/base/223175 Log: MFC r219951: Add simple in-kernel API for controlling leds. Modified: stable/8/sys/dev/led/led.c stable/8/sys/dev/led/led.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/led/led.c ============================================================================== --- stable/8/sys/dev/led/led.c Fri Jun 17 06:17:45 2011 (r223174) +++ stable/8/sys/dev/led/led.c Fri Jun 17 06:19:23 2011 (r223175) @@ -26,6 +26,7 @@ __FBSDID("$FreeBSD$"); struct ledsc { LIST_ENTRY(ledsc) list; + char *name; void *private; int unit; led_t *func; @@ -83,71 +84,43 @@ led_timeout(void *p) } static int -led_state(struct cdev *dev, struct sbuf *sb, int state) +led_state(struct ledsc *sc, struct sbuf **sb, int state) { struct sbuf *sb2 = NULL; - struct ledsc *sc; - mtx_lock(&led_mtx); - sc = dev->si_drv1; - if (sc != NULL) { - sb2 = sc->spec; - sc->spec = sb; - if (sb != NULL) { - sc->str = sbuf_data(sb); - sc->ptr = sc->str; - } else { - sc->str = NULL; - sc->ptr = NULL; - sc->func(sc->private, state); - } - sc->count = 0; + sb2 = sc->spec; + sc->spec = *sb; + if (*sb != NULL) { + sc->str = sbuf_data(*sb); + sc->ptr = sc->str; + } else { + sc->str = NULL; + sc->ptr = NULL; + sc->func(sc->private, state); } - mtx_unlock(&led_mtx); - if (sb2 != NULL) - sbuf_delete(sb2); - if (sc == NULL) - return (ENXIO); + sc->count = 0; + *sb = sb2; return(0); } static int -led_write(struct cdev *dev, struct uio *uio, int ioflag) +led_parse(const char *s, struct sbuf **sb, int *state) { - int error; - char *s, *s2; - struct sbuf *sb = NULL; - int i; - - if (dev->si_drv1 == NULL) - return (ENXIO); - - if (uio->uio_resid > 512) - return (EINVAL); - s2 = s = malloc(uio->uio_resid + 1, M_DEVBUF, M_WAITOK); - s[uio->uio_resid] = '\0'; - error = uiomove(s, uio->uio_resid, uio); - if (error) { - free(s2, M_DEVBUF); - return (error); - } + int i, error; /* * Handle "on" and "off" immediately so people can flash really * fast from userland if they want to */ if (*s == '0' || *s == '1') { - error = led_state(dev, NULL, *s & 1); - free(s2, M_DEVBUF); - return(error); + *state = *s & 1; + return (0); } - sb = sbuf_new_auto(); - if (sb == NULL) { - free(s2, M_DEVBUF); + *state = 0; + *sb = sbuf_new_auto(); + if (*sb == NULL) return (ENOMEM); - } - switch(s[0]) { /* * Flash, default is 100msec/100msec. @@ -158,7 +131,7 @@ led_write(struct cdev *dev, struct uio * i = s[1] - '1'; else i = 0; - sbuf_printf(sb, "%c%c", 'A' + i, 'a' + i); + sbuf_printf(*sb, "%c%c", 'A' + i, 'a' + i); break; /* * Digits, flashes out numbers. @@ -172,10 +145,10 @@ led_write(struct cdev *dev, struct uio * if (i == 0) i = 10; for (; i > 1; i--) - sbuf_cat(sb, "Aa"); - sbuf_cat(sb, "Aj"); + sbuf_cat(*sb, "Aa"); + sbuf_cat(*sb, "Aj"); } - sbuf_cat(sb, "jj"); + sbuf_cat(*sb, "jj"); break; /* * String, roll your own. @@ -190,7 +163,7 @@ led_write(struct cdev *dev, struct uio * (*s >= 'A' && *s <= 'J') || *s == 'U' || *s <= 'u' || *s == '.') - sbuf_bcat(sb, s, 1); + sbuf_bcat(*sb, s, 1); } break; /* @@ -205,29 +178,82 @@ led_write(struct cdev *dev, struct uio * case 'm': for(s++; *s; s++) { if (*s == '.') - sbuf_cat(sb, "aA"); + sbuf_cat(*sb, "aA"); else if (*s == '-') - sbuf_cat(sb, "aC"); + sbuf_cat(*sb, "aC"); else if (*s == ' ') - sbuf_cat(sb, "b"); + sbuf_cat(*sb, "b"); else if (*s == '\n') - sbuf_cat(sb, "d"); + sbuf_cat(*sb, "d"); } - sbuf_cat(sb, "j"); + sbuf_cat(*sb, "j"); break; default: - sbuf_delete(sb); - free(s2, M_DEVBUF); + sbuf_delete(*sb); return (EINVAL); } - error = sbuf_finish(sb); - free(s2, M_DEVBUF); - if (error != 0 || sbuf_len(sb) == 0) { - sbuf_delete(sb); + error = sbuf_finish(*sb); + if (error != 0 || sbuf_len(*sb) == 0) { + *sb = NULL; + return (error); + } + return (0); +} + +static int +led_write(struct cdev *dev, struct uio *uio, int ioflag) +{ + struct ledsc *sc; + char *s; + struct sbuf *sb = NULL; + int error, state = 0; + + if (uio->uio_resid > 512) + return (EINVAL); + s = malloc(uio->uio_resid + 1, M_DEVBUF, M_WAITOK); + s[uio->uio_resid] = '\0'; + error = uiomove(s, uio->uio_resid, uio); + if (error) { + free(s, M_DEVBUF); return (error); } + error = led_parse(s, &sb, &state); + free(s, M_DEVBUF); + if (error) + return (error); + mtx_lock(&led_mtx); + sc = dev->si_drv1; + if (sc != NULL) + error = led_state(sc, &sb, state); + mtx_unlock(&led_mtx); + if (sb != NULL) + sbuf_delete(sb); + return (error); +} - return (led_state(dev, sb, 0)); +int +led_set(char const *name, char const *cmd) +{ + struct ledsc *sc; + struct sbuf *sb = NULL; + int error, state = 0; + + error = led_parse(cmd, &sb, &state); + if (error) + return (error); + mtx_lock(&led_mtx); + LIST_FOREACH(sc, &led_list, list) { + if (strcmp(sc->name, name) == 0) + break; + } + if (sc != NULL) + error = led_state(sc, &sb, state); + else + error = ENOENT; + mtx_unlock(&led_mtx); + if (sb != NULL) + sbuf_delete(sb); + return (0); } static struct cdevsw led_cdevsw = { @@ -250,6 +276,7 @@ led_create_state(led_t *func, void *priv sc = malloc(sizeof *sc, M_LED, M_WAITOK | M_ZERO); sx_xlock(&led_sx); + sc->name = strdup(name, M_LED); sc->unit = alloc_unr(led_unit); sc->private = priv; sc->func = func; @@ -287,6 +314,7 @@ led_destroy(struct cdev *dev) destroy_dev(dev); if (sc->spec != NULL) sbuf_delete(sc->spec); + free(sc->name, M_LED); free(sc, M_LED); sx_xunlock(&led_sx); } Modified: stable/8/sys/dev/led/led.h ============================================================================== --- stable/8/sys/dev/led/led.h Fri Jun 17 06:17:45 2011 (r223174) +++ stable/8/sys/dev/led/led.h Fri Jun 17 06:19:23 2011 (r223175) @@ -18,4 +18,6 @@ struct cdev *led_create_state(led_t *, v struct cdev *led_create(led_t *, void *, char const *); void led_destroy(struct cdev *); +int led_set(char const *, char const *); + #endif From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 06:23:58 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ADABB106566C; Fri, 17 Jun 2011 06:23:58 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9CB498FC13; Fri, 17 Jun 2011 06:23:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H6Nwi6064041; Fri, 17 Jun 2011 06:23:58 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H6NwrB064038; Fri, 17 Jun 2011 06:23:58 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201106170623.p5H6NwrB064038@svn.freebsd.org> From: Alexander Motin Date: Fri, 17 Jun 2011 06:23:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223176 - stable/8/sys/geom X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 06:23:58 -0000 Author: mav Date: Fri Jun 17 06:23:58 2011 New Revision: 223176 URL: http://svn.freebsd.org/changeset/base/223176 Log: MFC r219970: Introduce new type of BIO_GETATTR -- GEOM::setstate, used to inform lower GEOM about state of it's providers from the point of upper layers. Make geom_disk use led(4) subsystem to illuminate states in such fashion: FAILED - "1" (on), REBUILD - "f5" (slow blink), RESYNC - "f1" (fast blink), ACTIVE - "0" (off). LED name should be set for each disk via kern.geom.disk.%s.led sysctl. Modified: stable/8/sys/geom/geom.h stable/8/sys/geom/geom_disk.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/geom/geom.h ============================================================================== --- stable/8/sys/geom/geom.h Fri Jun 17 06:19:23 2011 (r223175) +++ stable/8/sys/geom/geom.h Fri Jun 17 06:23:58 2011 (r223176) @@ -208,6 +208,12 @@ struct g_classifier_hook { void *arg; }; +/* BIO_GETATTR("GEOM::setstate") argument values. */ +#define G_STATE_FAILED 0 +#define G_STATE_REBUILD 1 +#define G_STATE_RESYNC 2 +#define G_STATE_ACTIVE 3 + /* geom_dev.c */ struct cdev; void g_dev_print(void); Modified: stable/8/sys/geom/geom_disk.c ============================================================================== --- stable/8/sys/geom/geom_disk.c Fri Jun 17 06:19:23 2011 (r223175) +++ stable/8/sys/geom/geom_disk.c Fri Jun 17 06:23:58 2011 (r223176) @@ -56,6 +56,16 @@ __FBSDID("$FreeBSD$"); #include #include +#include + +struct g_disk_softc { + struct disk *dp; + struct sysctl_ctx_list sysctl_ctx; + struct sysctl_oid *sysctl_tree; + char led[64]; + uint32_t state; +}; + static struct mtx g_disk_done_mtx; static g_access_t g_disk_access; @@ -76,6 +86,9 @@ static struct g_class g_disk_class = { .dumpconf = g_disk_dumpconf, }; +SYSCTL_DECL(_kern_geom); +SYSCTL_NODE(_kern_geom, OID_AUTO, disk, CTLFLAG_RW, 0, "GEOM_DISK stuff"); + static void g_disk_init(struct g_class *mp __unused) { @@ -110,13 +123,14 @@ static int g_disk_access(struct g_provider *pp, int r, int w, int e) { struct disk *dp; + struct g_disk_softc *sc; int error; g_trace(G_T_ACCESS, "g_disk_access(%s, %d, %d, %d)", pp->name, r, w, e); g_topology_assert(); - dp = pp->geom->softc; - if (dp == NULL || dp->d_destroyed) { + sc = pp->geom->softc; + if (sc == NULL || (dp = sc->dp) == NULL || dp->d_destroyed) { /* * Allow decreasing access count even if disk is not * avaliable anymore. @@ -161,6 +175,9 @@ g_disk_access(struct g_provider *pp, int pp->name, error); g_disk_unlock_giant(dp); } + sc->state = G_STATE_ACTIVE; + if (sc->led[0] != 0) + led_set(sc->led, "0"); dp->d_flags &= ~DISKFLAG_OPEN; } return (error); @@ -192,10 +209,37 @@ g_disk_kerneldump(struct bio *bp, struct } static void +g_disk_setstate(struct bio *bp, struct g_disk_softc *sc) +{ + const char *cmd; + + memcpy(&sc->state, bp->bio_data, sizeof(sc->state)); + if (sc->led[0] != 0) { + switch (sc->state) { + case G_STATE_FAILED: + cmd = "1"; + break; + case G_STATE_REBUILD: + cmd = "f5"; + break; + case G_STATE_RESYNC: + cmd = "f1"; + break; + default: + cmd = "0"; + break; + } + led_set(sc->led, cmd); + } + g_io_deliver(bp, 0); +} + +static void g_disk_done(struct bio *bp) { struct bio *bp2; struct disk *dp; + struct g_disk_softc *sc; /* See "notes" for why we need a mutex here */ /* XXX: will witness accept a mix of Giant/unGiant drivers here ? */ @@ -207,7 +251,8 @@ g_disk_done(struct bio *bp) bp2->bio_error = bp->bio_error; bp2->bio_completed += bp->bio_completed; if ((bp->bio_cmd & (BIO_READ|BIO_WRITE|BIO_DELETE)) && - (dp = bp2->bio_to->geom->softc)) { + (sc = bp2->bio_to->geom->softc) && + (dp = sc->dp)) { devstat_end_transaction_bio(dp->d_devstat, bp); } g_destroy_bio(bp); @@ -224,10 +269,12 @@ g_disk_ioctl(struct g_provider *pp, u_lo { struct g_geom *gp; struct disk *dp; + struct g_disk_softc *sc; int error; gp = pp->geom; - dp = gp->softc; + sc = gp->softc; + dp = sc->dp; if (dp->d_ioctl == NULL) return (ENOIOCTL); @@ -242,11 +289,12 @@ g_disk_start(struct bio *bp) { struct bio *bp2, *bp3; struct disk *dp; + struct g_disk_softc *sc; int error; off_t off; - dp = bp->bio_to->geom->softc; - if (dp == NULL || dp->d_destroyed) { + sc = bp->bio_to->geom->softc; + if (sc == NULL || (dp = sc->dp) == NULL || dp->d_destroyed) { g_io_deliver(bp, ENXIO); return; } @@ -313,6 +361,8 @@ g_disk_start(struct bio *bp) break; else if (!strcmp(bp->bio_attribute, "GEOM::kerneldump")) g_disk_kerneldump(bp, dp); + else if (!strcmp(bp->bio_attribute, "GEOM::setstate")) + g_disk_setstate(bp, sc); else error = ENOIOCTL; break; @@ -347,9 +397,10 @@ static void g_disk_dumpconf(struct sbuf *sb, const char *indent, struct g_geom *gp, struct g_consumer *cp, struct g_provider *pp) { struct disk *dp; + struct g_disk_softc *sc; - dp = gp->softc; - if (dp == NULL) + sc = gp->softc; + if (sc == NULL || (dp = sc->dp) == NULL) return; if (indent == NULL) { sbuf_printf(sb, " hd %u", dp->d_fwheads); @@ -370,13 +421,17 @@ g_disk_create(void *arg, int flag) struct g_geom *gp; struct g_provider *pp; struct disk *dp; + struct g_disk_softc *sc; + char tmpstr[80]; if (flag == EV_CANCEL) return; g_topology_assert(); dp = arg; + sc = g_malloc(sizeof(*sc), M_WAITOK | M_ZERO); + sc->dp = dp; gp = g_new_geomf(&g_disk_class, "%s%d", dp->d_name, dp->d_unit); - gp->softc = dp; + gp->softc = sc; pp = g_new_providerf(gp, "%s", gp->name); pp->mediasize = dp->d_mediasize; pp->sectorsize = dp->d_sectorsize; @@ -386,6 +441,21 @@ g_disk_create(void *arg, int flag) pp->stripesize = dp->d_stripesize; if (bootverbose) printf("GEOM: new disk %s\n", gp->name); + sysctl_ctx_init(&sc->sysctl_ctx); + snprintf(tmpstr, sizeof(tmpstr), "GEOM disk %s", gp->name); + sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctx, + SYSCTL_STATIC_CHILDREN(_kern_geom_disk), OID_AUTO, gp->name, + CTLFLAG_RD, 0, tmpstr); + if (sc->sysctl_tree != NULL) { + snprintf(tmpstr, sizeof(tmpstr), + "kern.geom.disk.%s.led", gp->name); + TUNABLE_STR_FETCH(tmpstr, sc->led, sizeof(sc->led)); + SYSCTL_ADD_STRING(&sc->sysctl_ctx, + SYSCTL_CHILDREN(sc->sysctl_tree), OID_AUTO, "led", + CTLFLAG_RW | CTLFLAG_TUN, sc->led, sizeof(sc->led), + "LED name"); + } + pp->private = sc; dp->d_geom = gp; g_error_provider(pp, 0); } @@ -395,11 +465,22 @@ g_disk_destroy(void *ptr, int flag) { struct disk *dp; struct g_geom *gp; + struct g_disk_softc *sc; g_topology_assert(); dp = ptr; gp = dp->d_geom; if (gp != NULL) { + sc = gp->softc; + if (sc->sysctl_tree != NULL) { + sysctl_ctx_free(&sc->sysctl_ctx); + sc->sysctl_tree = NULL; + } + if (sc->led[0] != 0) { + led_set(sc->led, "0"); + sc->led[0] = 0; + } + g_free(sc); gp->softc = NULL; g_wither_geom(gp, ENXIO); } From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 06:59:49 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B6B3D1065673; Fri, 17 Jun 2011 06:59:49 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8BAD28FC25; Fri, 17 Jun 2011 06:59:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H6xnsw065468; Fri, 17 Jun 2011 06:59:49 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H6xnqU065450; Fri, 17 Jun 2011 06:59:49 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201106170659.p5H6xnqU065450@svn.freebsd.org> From: Alexander Motin Date: Fri, 17 Jun 2011 06:59:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223177 - in stable/8: etc/mtree include sbin/geom/class sbin/geom/class/raid sbin/geom/class/sched sys/conf sys/geom/raid sys/modules/geom sys/modules/geom/geom_raid X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 06:59:49 -0000 Author: mav Date: Fri Jun 17 06:59:49 2011 New Revision: 223177 URL: http://svn.freebsd.org/changeset/base/223177 Log: MFC r219974, r220209, r220210, r220790: Add new RAID GEOM class, that is going to replace ataraid(4) in supporting various BIOS-based software RAIDs. Unlike ataraid(4) this implementation does not depend on legacy ata(4) subsystem and can be used with any disk drivers, including new CAM-based ones (ahci(4), siis(4), mvs(4), ata(4) with `options ATA_CAM`). To make code more readable and extensible, this implementation follows modular design, including core part and two sets of modules, implementing support for different metadata formats and RAID levels. Support for such popular metadata formats is now implemented: Intel, JMicron, NVIDIA, Promise (also used by AMD/ATI) and SiliconImage. Such RAID levels are now supported: RAID0, RAID1, RAID1E, RAID10, SINGLE, CONCAT. For all of these RAID levels and metadata formats this class supports full cycle of volume operations: reading, writing, creation, deletion, disk removal and insertion, rebuilding, dirty shutdown detection and resynchronization, bad sector recovery, faulty disks tracking, hot-spare disks. For Intel and Promise formats there is support multiple volumes per disk set. Look graid(8) manual page for additional details. Co-authored by: imp Sponsored by: Cisco Systems, Inc. and iXsystems, Inc. Added: stable/8/sbin/geom/class/raid/ - copied from r219974, head/sbin/geom/class/raid/ stable/8/sys/geom/raid/ - copied from r219974, head/sys/geom/raid/ stable/8/sys/modules/geom/geom_raid/ - copied from r219974, head/sys/modules/geom/geom_raid/ Modified: stable/8/etc/mtree/BSD.include.dist stable/8/include/Makefile stable/8/sbin/geom/class/Makefile stable/8/sbin/geom/class/raid/Makefile stable/8/sbin/geom/class/raid/geom_raid.c stable/8/sys/conf/NOTES stable/8/sys/conf/files stable/8/sys/conf/options stable/8/sys/geom/raid/g_raid.c stable/8/sys/geom/raid/md_intel.c stable/8/sys/geom/raid/md_jmicron.c stable/8/sys/geom/raid/md_nvidia.c stable/8/sys/geom/raid/md_promise.c stable/8/sys/geom/raid/md_sii.c stable/8/sys/geom/raid/tr_raid1.c stable/8/sys/geom/raid/tr_raid1e.c stable/8/sys/modules/geom/Makefile Directory Properties: stable/8/etc/ (props changed) stable/8/etc/periodic/ (props changed) stable/8/include/ (props changed) stable/8/sbin/geom/ (props changed) stable/8/sbin/geom/class/multipath/ (props changed) stable/8/sbin/geom/class/part/ (props changed) stable/8/sbin/geom/class/sched/gsched.8 (props changed) stable/8/sbin/geom/class/stripe/ (props changed) stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/etc/mtree/BSD.include.dist ============================================================================== --- stable/8/etc/mtree/BSD.include.dist Fri Jun 17 06:23:58 2011 (r223176) +++ stable/8/etc/mtree/BSD.include.dist Fri Jun 17 06:59:49 2011 (r223177) @@ -184,6 +184,8 @@ .. nop .. + raid + .. raid3 .. shsec Modified: stable/8/include/Makefile ============================================================================== --- stable/8/include/Makefile Fri Jun 17 06:23:58 2011 (r223176) +++ stable/8/include/Makefile Fri Jun 17 06:59:49 2011 (r223177) @@ -47,7 +47,7 @@ LSUBDIRS= cam/ata cam/scsi \ ${_fs_nwfs} fs/portalfs fs/procfs fs/smbfs fs/udf fs/unionfs \ geom/cache geom/concat geom/eli geom/gate geom/journal geom/label \ geom/mirror geom/multipath geom/nop \ - geom/raid3 geom/shsec geom/stripe geom/virstor \ + geom/raid geom/raid3 geom/shsec geom/stripe geom/virstor \ netgraph/atm netgraph/netflow \ security/audit \ security/mac_biba security/mac_bsdextended security/mac_lomac \ Modified: stable/8/sbin/geom/class/Makefile ============================================================================== --- stable/8/sbin/geom/class/Makefile Fri Jun 17 06:23:58 2011 (r223176) +++ stable/8/sbin/geom/class/Makefile Fri Jun 17 06:59:49 2011 (r223177) @@ -13,6 +13,7 @@ SUBDIR+=mirror SUBDIR+=multipath SUBDIR+=nop SUBDIR+=part +SUBDIR+=raid SUBDIR+=raid3 SUBDIR+=sched SUBDIR+=shsec Modified: stable/8/sbin/geom/class/raid/Makefile ============================================================================== --- head/sbin/geom/class/raid/Makefile Thu Mar 24 21:31:32 2011 (r219974) +++ stable/8/sbin/geom/class/raid/Makefile Fri Jun 17 06:59:49 2011 (r223177) @@ -2,7 +2,7 @@ .PATH: ${.CURDIR}/../../misc -GEOM_CLASS= raid +CLASS= raid DPADD= ${LIBMD} LDADD= -lmd Modified: stable/8/sbin/geom/class/raid/geom_raid.c ============================================================================== --- head/sbin/geom/class/raid/geom_raid.c Thu Mar 24 21:31:32 2011 (r219974) +++ stable/8/sbin/geom/class/raid/geom_raid.c Fri Jun 17 06:59:49 2011 (r223177) @@ -52,7 +52,7 @@ struct g_command class_commands[] = { { 's', "strip", G_VAL_OPTIONAL, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - "[-fv] [-S size] [-s stripsize] format label level prov ..." + NULL, "[-fv] [-S size] [-s stripsize] format label level prov ..." }, { "add", G_FLAG_VERBOSE, NULL, { @@ -61,22 +61,22 @@ struct g_command class_commands[] = { { 's', "strip", G_VAL_OPTIONAL, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - "[-fv] [-S size] [-s stripsize] name label level" + NULL, "[-fv] [-S size] [-s stripsize] name label level" }, { "delete", G_FLAG_VERBOSE, NULL, { { 'f', "force", NULL, G_TYPE_BOOL }, G_OPT_SENTINEL }, - "[-fv] name [label|num]" + NULL, "[-fv] name [label|num]" }, - { "insert", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, + { "insert", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL, "[-v] name prov ..." }, - { "remove", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, + { "remove", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL, "[-v] name prov ..." }, - { "fail", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, + { "fail", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL, "[-v] name prov ..." }, { "stop", G_FLAG_VERBOSE, NULL, @@ -84,7 +84,7 @@ struct g_command class_commands[] = { { 'f', "force", NULL, G_TYPE_BOOL }, G_OPT_SENTINEL }, - "[-fv] name" + NULL, "[-fv] name" }, G_CMD_SENTINEL }; Modified: stable/8/sys/conf/NOTES ============================================================================== --- stable/8/sys/conf/NOTES Fri Jun 17 06:23:58 2011 (r223176) +++ stable/8/sys/conf/NOTES Fri Jun 17 06:59:49 2011 (r223177) @@ -154,6 +154,7 @@ options GEOM_PART_MBR # MBR partitioni options GEOM_PART_PC98 # PC-9800 disk partitioning options GEOM_PART_VTOC8 # SMI VTOC8 disk label options GEOM_PC98 # NEC PC9800 partitioning +options GEOM_RAID # Soft RAID functionality. options GEOM_RAID3 # RAID3 functionality. options GEOM_SHSEC # Shared secret. options GEOM_STRIPE # Disk striping. Modified: stable/8/sys/conf/files ============================================================================== --- stable/8/sys/conf/files Fri Jun 17 06:23:58 2011 (r223176) +++ stable/8/sys/conf/files Fri Jun 17 06:59:49 2011 (r223177) @@ -2032,6 +2032,19 @@ geom/part/g_part_gpt.c optional geom_pa geom/part/g_part_mbr.c optional geom_part_mbr geom/part/g_part_pc98.c optional geom_part_pc98 geom/part/g_part_vtoc8.c optional geom_part_vtoc8 +geom/raid/g_raid.c optional geom_raid +geom/raid/g_raid_ctl.c optional geom_raid +geom/raid/g_raid_md_if.m optional geom_raid +geom/raid/g_raid_tr_if.m optional geom_raid +geom/raid/md_intel.c optional geom_raid +geom/raid/md_jmicron.c optional geom_raid +geom/raid/md_nvidia.c optional geom_raid +geom/raid/md_promise.c optional geom_raid +geom/raid/md_sii.c optional geom_raid +geom/raid/tr_concat.c optional geom_raid +geom/raid/tr_raid0.c optional geom_raid +geom/raid/tr_raid1.c optional geom_raid +geom/raid/tr_raid1e.c optional geom_raid geom/raid3/g_raid3.c optional geom_raid3 geom/raid3/g_raid3_ctl.c optional geom_raid3 geom/shsec/g_shsec.c optional geom_shsec Modified: stable/8/sys/conf/options ============================================================================== --- stable/8/sys/conf/options Fri Jun 17 06:23:58 2011 (r223176) +++ stable/8/sys/conf/options Fri Jun 17 06:59:49 2011 (r223177) @@ -100,6 +100,7 @@ GEOM_PART_MBR opt_geom.h GEOM_PART_PC98 opt_geom.h GEOM_PART_VTOC8 opt_geom.h GEOM_PC98 opt_geom.h +GEOM_RAID opt_geom.h GEOM_RAID3 opt_geom.h GEOM_SHSEC opt_geom.h GEOM_STRIPE opt_geom.h Modified: stable/8/sys/geom/raid/g_raid.c ============================================================================== --- head/sys/geom/raid/g_raid.c Thu Mar 24 21:31:32 2011 (r219974) +++ stable/8/sys/geom/raid/g_raid.c Fri Jun 17 06:59:49 2011 (r223177) @@ -55,7 +55,7 @@ u_int g_raid_aggressive_spare = 0; TUNABLE_INT("kern.geom.raid.aggressive_spare", &g_raid_aggressive_spare); SYSCTL_UINT(_kern_geom_raid, OID_AUTO, aggressive_spare, CTLFLAG_RW, &g_raid_aggressive_spare, 0, "Use disks without metadata as spare"); -u_int g_raid_debug = 2; +u_int g_raid_debug = 0; TUNABLE_INT("kern.geom.raid.debug", &g_raid_debug); SYSCTL_UINT(_kern_geom_raid, OID_AUTO, debug, CTLFLAG_RW, &g_raid_debug, 0, "Debug level"); @@ -1608,7 +1608,7 @@ g_raid_access(struct g_provider *pp, int { struct g_raid_volume *vol; struct g_raid_softc *sc; - int dcr, dcw, dce, opens, error = 0; + int dcw, opens, error = 0; g_topology_assert(); sc = pp->geom->softc; @@ -1618,10 +1618,7 @@ g_raid_access(struct g_provider *pp, int G_RAID_DEBUG1(2, sc, "Access request for %s: r%dw%de%d.", pp->name, acr, acw, ace); - - dcr = pp->acr + acr; dcw = pp->acw + acw; - dce = pp->ace + ace; g_topology_unlock(); sx_xlock(&sc->sc_lock); Modified: stable/8/sys/geom/raid/md_intel.c ============================================================================== --- head/sys/geom/raid/md_intel.c Thu Mar 24 21:31:32 2011 (r219974) +++ stable/8/sys/geom/raid/md_intel.c Fri Jun 17 06:59:49 2011 (r223177) @@ -541,9 +541,9 @@ intel_meta_write_spare(struct g_consumer /* Fill anchor and single disk. */ meta = malloc(INTEL_MAX_MD_SIZE(1), M_MD_INTEL, M_WAITOK | M_ZERO); - memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC)); + memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC) - 1); memcpy(&meta->version[0], INTEL_VERSION_1000, - sizeof(INTEL_VERSION_1000)); + sizeof(INTEL_VERSION_1000) - 1); meta->config_size = INTEL_MAX_MD_SIZE(1); meta->config_id = arc4random(); meta->generation = 1; @@ -1153,7 +1153,6 @@ g_raid_md_taste_intel(struct g_raid_md_o /* Read metadata from device. */ meta = NULL; - spare = 0; vendor = 0xffff; disk_pos = 0; if (g_access(cp, 1, 0, 0) != 0) @@ -1431,7 +1430,7 @@ g_raid_md_ctl_intel(struct g_raid_md_obj gctl_error(req, "Can't open disk '%s'.", diskname); g_topology_unlock(); - error = -4; + error = -7; break; } pp = cp->provider; @@ -1481,6 +1480,11 @@ g_raid_md_ctl_intel(struct g_raid_md_obj if (error != 0) return (error); + if (sectorsize <= 0) { + gctl_error(req, "Can't get sector size."); + return (-8); + } + /* Reserve some space for metadata. */ size -= ((4096 + sectorsize - 1) / sectorsize) * sectorsize; @@ -1881,10 +1885,8 @@ g_raid_md_ctl_intel(struct g_raid_md_obj /* If disk was assigned, just update statuses. */ if (pd->pd_disk_pos >= 0) { g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE); - if (disk->d_consumer) { - g_raid_kill_consumer(sc, disk->d_consumer); - disk->d_consumer = NULL; - } + g_raid_kill_consumer(sc, disk->d_consumer); + disk->d_consumer = NULL; TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_NONE); @@ -1955,7 +1957,6 @@ g_raid_md_ctl_intel(struct g_raid_md_obj disk = g_raid_create_disk(sc); disk->d_consumer = cp; - disk->d_consumer->private = disk; disk->d_md_data = (void *)pd; cp->private = disk; @@ -2049,7 +2050,7 @@ g_raid_md_write_intel(struct g_raid_md_o /* Fill anchor and disks. */ meta = malloc(INTEL_MAX_MD_SIZE(numdisks), M_MD_INTEL, M_WAITOK | M_ZERO); - memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC)); + memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC) - 1); meta->config_size = INTEL_MAX_MD_SIZE(numdisks); meta->config_id = mdi->mdio_config_id; meta->generation = mdi->mdio_generation; @@ -2214,7 +2215,7 @@ g_raid_md_write_intel(struct g_raid_md_o meta->total_volumes = vi; if (strcmp(version, INTEL_VERSION_1300) != 0) meta->attributes &= INTEL_ATTR_CHECKSUM; - memcpy(&meta->version[0], version, sizeof(INTEL_VERSION_1000)); + memcpy(&meta->version[0], version, sizeof(INTEL_VERSION_1000) - 1); /* We are done. Print meta data and store them to disks. */ g_raid_md_intel_print(meta); Modified: stable/8/sys/geom/raid/md_jmicron.c ============================================================================== --- head/sys/geom/raid/md_jmicron.c Thu Mar 24 21:31:32 2011 (r219974) +++ stable/8/sys/geom/raid/md_jmicron.c Fri Jun 17 06:59:49 2011 (r223177) @@ -431,7 +431,10 @@ g_raid_md_jmicron_start_disk(struct g_ra olddisk = NULL; /* Find disk position in metadata by it's serial. */ - disk_pos = jmicron_meta_find_disk(meta, pd->pd_disk_id); + if (pd->pd_meta != NULL) + disk_pos = jmicron_meta_find_disk(meta, pd->pd_disk_id); + else + disk_pos = -1; if (disk_pos < 0) { G_RAID_DEBUG1(1, sc, "Unknown, probably new or stale disk"); /* If we are in the start process, that's all for now. */ @@ -522,7 +525,7 @@ nofit: * Different disks may have different sizes/offsets, * especially in concat mode. Update. */ - if (pd->pd_meta != NULL && !resurrection) { + if (!resurrection) { sd->sd_offset = (off_t)pd->pd_meta->offset * 16 * 512; //ZZZ sd->sd_size = @@ -576,14 +579,12 @@ g_raid_md_jmicron_refill(struct g_raid_s { struct g_raid_md_object *md; struct g_raid_md_jmicron_object *mdi; - struct jmicron_raid_conf *meta; struct g_raid_disk *disk; struct task *task; int update, na; md = sc->sc_md; mdi = (struct g_raid_md_jmicron_object *)md; - meta = mdi->mdio_meta; update = 0; do { /* Make sure we miss anything. */ @@ -617,10 +618,8 @@ g_raid_md_jmicron_refill(struct g_raid_s } while (disk != NULL); /* Write new metadata if we changed something. */ - if (update) { + if (update) g_raid_md_write_jmicron(md, NULL, NULL, NULL); - meta = mdi->mdio_meta; - } /* Update status of our need for spare. */ mdi->mdio_incomplete = (g_raid_ndisks(sc, G_RAID_DISK_S_ACTIVE) < @@ -832,9 +831,7 @@ g_raid_md_taste_jmicron(struct g_raid_md /* Read metadata from device. */ meta = NULL; - spare = 0; vendor = 0xffff; - disk_pos = 0; if (g_access(cp, 1, 0, 0) != 0) return (G_RAID_MD_TASTE_FAIL); g_topology_unlock(); @@ -1130,6 +1127,11 @@ g_raid_md_ctl_jmicron(struct g_raid_md_o if (error != 0) return (error); + if (sectorsize <= 0) { + gctl_error(req, "Can't get sector size."); + return (-8); + } + /* Reserve space for metadata. */ size -= sectorsize; @@ -1300,10 +1302,8 @@ g_raid_md_ctl_jmicron(struct g_raid_md_o /* If disk was assigned, just update statuses. */ if (pd->pd_disk_pos >= 0) { g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE); - if (disk->d_consumer) { - g_raid_kill_consumer(sc, disk->d_consumer); - disk->d_consumer = NULL; - } + g_raid_kill_consumer(sc, disk->d_consumer); + disk->d_consumer = NULL; TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_NONE); @@ -1363,7 +1363,6 @@ g_raid_md_ctl_jmicron(struct g_raid_md_o disk = g_raid_create_disk(sc); disk->d_consumer = cp; - disk->d_consumer->private = disk; disk->d_md_data = (void *)pd; cp->private = disk; g_topology_unlock(); @@ -1469,7 +1468,6 @@ g_raid_md_write_jmicron(struct g_raid_md if (mdi->mdio_meta != NULL) free(mdi->mdio_meta, M_MD_JMICRON); mdi->mdio_meta = meta; - i = 0; TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { pd = (struct g_raid_md_jmicron_perdisk *)disk->d_md_data; if (disk->d_state != G_RAID_DISK_S_ACTIVE && @@ -1506,12 +1504,10 @@ g_raid_md_fail_disk_jmicron(struct g_rai struct g_raid_subdisk *tsd, struct g_raid_disk *tdisk) { struct g_raid_softc *sc; - struct g_raid_md_jmicron_object *mdi; struct g_raid_md_jmicron_perdisk *pd; struct g_raid_subdisk *sd; sc = md->mdo_softc; - mdi = (struct g_raid_md_jmicron_object *)md; pd = (struct g_raid_md_jmicron_perdisk *)tdisk->d_md_data; /* We can't fail disk that is not a part of array now. */ Modified: stable/8/sys/geom/raid/md_nvidia.c ============================================================================== --- head/sys/geom/raid/md_nvidia.c Thu Mar 24 21:31:32 2011 (r219974) +++ stable/8/sys/geom/raid/md_nvidia.c Fri Jun 17 06:59:49 2011 (r223177) @@ -584,14 +584,12 @@ g_raid_md_nvidia_refill(struct g_raid_so { struct g_raid_md_object *md; struct g_raid_md_nvidia_object *mdi; - struct nvidia_raid_conf *meta; struct g_raid_disk *disk; struct task *task; int update, na; md = sc->sc_md; mdi = (struct g_raid_md_nvidia_object *)md; - meta = mdi->mdio_meta; update = 0; do { /* Make sure we miss anything. */ @@ -625,10 +623,8 @@ g_raid_md_nvidia_refill(struct g_raid_so } while (disk != NULL); /* Write new metadata if we changed something. */ - if (update) { + if (update) g_raid_md_write_nvidia(md, NULL, NULL, NULL); - meta = mdi->mdio_meta; - } /* Update status of our need for spare. */ mdi->mdio_incomplete = (g_raid_ndisks(sc, G_RAID_DISK_S_ACTIVE) < @@ -828,7 +824,7 @@ g_raid_md_taste_nvidia(struct g_raid_md_ struct nvidia_raid_conf *meta; struct g_raid_md_nvidia_perdisk *pd; struct g_geom *geom; - int error, disk_pos, result, spare, len; + int error, result, spare, len; char name[32]; uint16_t vendor; @@ -838,9 +834,7 @@ g_raid_md_taste_nvidia(struct g_raid_md_ /* Read metadata from device. */ meta = NULL; - spare = 0; vendor = 0xffff; - disk_pos = 0; if (g_access(cp, 1, 0, 0) != 0) return (G_RAID_MD_TASTE_FAIL); g_topology_unlock(); @@ -866,16 +860,9 @@ g_raid_md_taste_nvidia(struct g_raid_md_ return (G_RAID_MD_TASTE_FAIL); } - /* Check this disk position in obtained metadata. */ - disk_pos = meta->disk_number; - if (disk_pos == -1) { - G_RAID_DEBUG(1, "NVIDIA disk position not found"); - goto fail1; - } - /* Metadata valid. Print it. */ g_raid_md_nvidia_print(meta); - G_RAID_DEBUG(1, "NVIDIA disk position %d", disk_pos); + G_RAID_DEBUG(1, "NVIDIA disk position %d", meta->disk_number); spare = 0;//(meta->type == NVIDIA_T_SPARE) ? 1 : 0; search: @@ -1141,6 +1128,11 @@ g_raid_md_ctl_nvidia(struct g_raid_md_ob if (error != 0) return (error); + if (sectorsize <= 0) { + gctl_error(req, "Can't get sector size."); + return (-8); + } + /* Reserve space for metadata. */ size -= 2 * sectorsize; @@ -1311,10 +1303,8 @@ g_raid_md_ctl_nvidia(struct g_raid_md_ob /* If disk was assigned, just update statuses. */ if (pd->pd_disk_pos >= 0) { g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE); - if (disk->d_consumer) { - g_raid_kill_consumer(sc, disk->d_consumer); - disk->d_consumer = NULL; - } + g_raid_kill_consumer(sc, disk->d_consumer); + disk->d_consumer = NULL; TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_NONE); @@ -1373,7 +1363,6 @@ g_raid_md_ctl_nvidia(struct g_raid_md_ob disk = g_raid_create_disk(sc); disk->d_consumer = cp; - disk->d_consumer->private = disk; disk->d_md_data = (void *)pd; cp->private = disk; g_topology_unlock(); @@ -1435,7 +1424,7 @@ g_raid_md_write_nvidia(struct g_raid_md_ meta = malloc(sizeof(*meta), M_MD_NVIDIA, M_WAITOK | M_ZERO); if (mdi->mdio_meta) memcpy(meta, mdi->mdio_meta, sizeof(*meta)); - memcpy(meta->nvidia_id, NVIDIA_MAGIC, sizeof(NVIDIA_MAGIC)); + memcpy(meta->nvidia_id, NVIDIA_MAGIC, sizeof(NVIDIA_MAGIC) - 1); meta->config_size = 30; meta->version = 0x0064; meta->total_sectors = vol->v_mediasize / vol->v_sectorsize; @@ -1530,12 +1519,10 @@ g_raid_md_fail_disk_nvidia(struct g_raid struct g_raid_subdisk *tsd, struct g_raid_disk *tdisk) { struct g_raid_softc *sc; - struct g_raid_md_nvidia_object *mdi; struct g_raid_md_nvidia_perdisk *pd; struct g_raid_subdisk *sd; sc = md->mdo_softc; - mdi = (struct g_raid_md_nvidia_object *)md; pd = (struct g_raid_md_nvidia_perdisk *)tdisk->d_md_data; /* We can't fail disk that is not a part of array now. */ Modified: stable/8/sys/geom/raid/md_promise.c ============================================================================== --- head/sys/geom/raid/md_promise.c Thu Mar 24 21:31:32 2011 (r219974) +++ stable/8/sys/geom/raid/md_promise.c Fri Jun 17 06:59:49 2011 (r223177) @@ -398,7 +398,8 @@ next: &off, &size)) { /* Optionally add record for unused space. */ meta = (struct promise_raid_conf *)buf; - memcpy(&meta->promise_id[0], PROMISE_MAGIC, sizeof(PROMISE_MAGIC)); + memcpy(&meta->promise_id[0], PROMISE_MAGIC, + sizeof(PROMISE_MAGIC) - 1); meta->dummy_0 = 0x00020000; meta->integrity = PROMISE_I_VALID; meta->disk.flags = PROMISE_F_ONLINE | PROMISE_F_VALID; @@ -462,7 +463,7 @@ promise_meta_write_spare(struct g_consum int error; meta = malloc(sizeof(*meta), M_MD_PROMISE, M_WAITOK | M_ZERO); - memcpy(&meta->promise_id[0], PROMISE_MAGIC, sizeof(PROMISE_MAGIC)); + memcpy(&meta->promise_id[0], PROMISE_MAGIC, sizeof(PROMISE_MAGIC) - 1); meta->dummy_0 = 0x00020000; meta->integrity = PROMISE_I_VALID; meta->disk.flags = PROMISE_F_SPARE | PROMISE_F_ONLINE | PROMISE_F_VALID; @@ -818,10 +819,10 @@ restart: } else update = 0; if (update) { + updated = 1; g_raid_md_write_promise(md, vol, NULL, disk); break; } - updated += update; } } if (updated) @@ -1153,12 +1154,10 @@ g_raid_md_event_promise(struct g_raid_md struct g_raid_disk *disk, u_int event) { struct g_raid_softc *sc; - struct g_raid_md_promise_perdisk *pd; sc = md->mdo_softc; if (disk == NULL) return (-1); - pd = (struct g_raid_md_promise_perdisk *)disk->d_md_data; switch (event) { case G_RAID_DISK_E_DISCONNECTED: /* Delete disk. */ @@ -1183,10 +1182,8 @@ static int g_raid_md_volume_event_promise(struct g_raid_md_object *md, struct g_raid_volume *vol, u_int event) { - struct g_raid_softc *sc; struct g_raid_md_promise_pervolume *pv; - sc = md->mdo_softc; pv = (struct g_raid_md_promise_pervolume *)vol->v_md_data; switch (event) { case G_RAID_VOLUME_E_STARTMD: @@ -1344,6 +1341,11 @@ g_raid_md_ctl_promise(struct g_raid_md_o return (error); } + if (sectorsize <= 0) { + gctl_error(req, "Can't get sector size."); + return (-8); + } + /* Handle size argument. */ len = sizeof(*sizearg); sizearg = gctl_get_param(req, "size", &len); @@ -1566,8 +1568,6 @@ g_raid_md_ctl_promise(struct g_raid_md_o continue; } - pd = (struct g_raid_md_promise_perdisk *)disk->d_md_data; - /* Erase metadata on deleting disk and destroy it. */ promise_meta_erase(disk->d_consumer); g_raid_destroy_disk(disk); @@ -1609,14 +1609,12 @@ g_raid_md_ctl_promise(struct g_raid_md_o error = -4; break; } - pp = cp->provider; g_topology_unlock(); pd = malloc(sizeof(*pd), M_MD_PROMISE, M_WAITOK | M_ZERO); disk = g_raid_create_disk(sc); disk->d_consumer = cp; - disk->d_consumer->private = disk; disk->d_md_data = (void *)pd; cp->private = disk; @@ -1684,7 +1682,8 @@ g_raid_md_write_promise(struct g_raid_md meta = malloc(sizeof(*meta), M_MD_PROMISE, M_WAITOK | M_ZERO); if (pv->pv_meta != NULL) memcpy(meta, pv->pv_meta, sizeof(*meta)); - memcpy(meta->promise_id, PROMISE_MAGIC, sizeof(PROMISE_MAGIC)); + memcpy(meta->promise_id, PROMISE_MAGIC, + sizeof(PROMISE_MAGIC) - 1); meta->dummy_0 = 0x00020000; meta->integrity = PROMISE_I_VALID; Modified: stable/8/sys/geom/raid/md_sii.c ============================================================================== --- head/sys/geom/raid/md_sii.c Thu Mar 24 21:31:32 2011 (r219974) +++ stable/8/sys/geom/raid/md_sii.c Fri Jun 17 06:59:49 2011 (r223177) @@ -641,14 +641,12 @@ g_raid_md_sii_refill(struct g_raid_softc { struct g_raid_md_object *md; struct g_raid_md_sii_object *mdi; - struct sii_raid_conf *meta; struct g_raid_disk *disk; struct task *task; int update, na; md = sc->sc_md; mdi = (struct g_raid_md_sii_object *)md; - meta = mdi->mdio_meta; update = 0; do { /* Make sure we miss anything. */ @@ -682,10 +680,8 @@ g_raid_md_sii_refill(struct g_raid_softc } while (disk != NULL); /* Write new metadata if we changed something. */ - if (update) { + if (update) g_raid_md_write_sii(md, NULL, NULL, NULL); - meta = mdi->mdio_meta; - } /* Update status of our need for spare. */ mdi->mdio_incomplete = (g_raid_ndisks(sc, G_RAID_DISK_S_ACTIVE) < @@ -921,9 +917,7 @@ g_raid_md_taste_sii(struct g_raid_md_obj /* Read metadata from device. */ meta = NULL; - spare = 0; vendor = 0xffff; - disk_pos = 0; if (g_access(cp, 1, 0, 0) != 0) return (G_RAID_MD_TASTE_FAIL); g_topology_unlock(); @@ -1219,6 +1213,11 @@ g_raid_md_ctl_sii(struct g_raid_md_objec if (error != 0) return (error); + if (sectorsize <= 0) { + gctl_error(req, "Can't get sector size."); + return (-8); + } + /* Reserve space for metadata. */ size -= 0x800 * sectorsize; @@ -1389,10 +1388,8 @@ g_raid_md_ctl_sii(struct g_raid_md_objec /* If disk was assigned, just update statuses. */ if (pd->pd_disk_pos >= 0) { g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE); - if (disk->d_consumer) { - g_raid_kill_consumer(sc, disk->d_consumer); - disk->d_consumer = NULL; - } + g_raid_kill_consumer(sc, disk->d_consumer); + disk->d_consumer = NULL; TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_NONE); @@ -1451,7 +1448,6 @@ g_raid_md_ctl_sii(struct g_raid_md_objec disk = g_raid_create_disk(sc); disk->d_consumer = cp; - disk->d_consumer->private = disk; disk->d_md_data = (void *)pd; cp->private = disk; g_topology_unlock(); @@ -1561,7 +1557,6 @@ g_raid_md_write_sii(struct g_raid_md_obj if (mdi->mdio_meta != NULL) free(mdi->mdio_meta, M_MD_SII); mdi->mdio_meta = meta; - i = 0; TAILQ_FOREACH(disk, &sc->sc_disks, d_next) { pd = (struct g_raid_md_sii_perdisk *)disk->d_md_data; if (disk->d_state != G_RAID_DISK_S_ACTIVE) @@ -1607,12 +1602,10 @@ g_raid_md_fail_disk_sii(struct g_raid_md struct g_raid_subdisk *tsd, struct g_raid_disk *tdisk) { struct g_raid_softc *sc; - struct g_raid_md_sii_object *mdi; struct g_raid_md_sii_perdisk *pd; struct g_raid_subdisk *sd; sc = md->mdo_softc; - mdi = (struct g_raid_md_sii_object *)md; pd = (struct g_raid_md_sii_perdisk *)tdisk->d_md_data; /* We can't fail disk that is not a part of array now. */ Modified: stable/8/sys/geom/raid/tr_raid1.c ============================================================================== --- head/sys/geom/raid/tr_raid1.c Thu Mar 24 21:31:32 2011 (r219974) +++ stable/8/sys/geom/raid/tr_raid1.c Fri Jun 17 06:59:49 2011 (r223177) @@ -549,7 +549,6 @@ g_raid_tr_iostart_raid1_read(struct g_ra static void g_raid_tr_iostart_raid1_write(struct g_raid_tr_object *tr, struct bio *bp) { - struct g_raid_softc *sc; struct g_raid_volume *vol; struct g_raid_subdisk *sd; struct bio_queue_head queue; @@ -557,7 +556,6 @@ g_raid_tr_iostart_raid1_write(struct g_r int i; vol = tr->tro_volume; - sc = vol->v_softc; /* * Allocate all bios before sending any request, so we can return @@ -720,8 +718,6 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_ bp->bio_error); bp->bio_cmd = BIO_WRITE; bp->bio_cflags = G_RAID_BIO_FLAG_SYNC; - bp->bio_offset = bp->bio_offset; - bp->bio_length = bp->bio_length; G_RAID_LOGREQ(4, bp, "Queueing rebuild write."); g_raid_subdisk_iostart(trs->trso_failed_sd, bp); } else { Modified: stable/8/sys/geom/raid/tr_raid1e.c ============================================================================== --- head/sys/geom/raid/tr_raid1e.c Thu Mar 24 21:31:32 2011 (r219974) +++ stable/8/sys/geom/raid/tr_raid1e.c Fri Jun 17 06:59:49 2011 (r223177) @@ -196,13 +196,11 @@ g_raid_tr_taste_raid1e(struct g_raid_tr_ static int g_raid_tr_update_state_raid1e_even(struct g_raid_volume *vol) { - struct g_raid_tr_raid1e_object *trs; struct g_raid_softc *sc; struct g_raid_subdisk *sd, *bestsd, *worstsd; int i, j, state, sstate; sc = vol->v_softc; - trs = (struct g_raid_tr_raid1e_object *)vol->v_tr; state = G_RAID_VOLUME_S_OPTIMAL; for (i = 0; i < vol->v_disks_count / N; i++) { bestsd = &vol->v_subdisks[i * N]; @@ -251,13 +249,11 @@ g_raid_tr_update_state_raid1e_even(struc static int g_raid_tr_update_state_raid1e_odd(struct g_raid_volume *vol) { - struct g_raid_tr_raid1e_object *trs; struct g_raid_softc *sc; struct g_raid_subdisk *sd, *bestsd, *worstsd; int i, j, state, sstate; sc = vol->v_softc; - trs = (struct g_raid_tr_raid1e_object *)vol->v_tr; if (g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_ACTIVE) == vol->v_disks_count) return (G_RAID_VOLUME_S_OPTIMAL); Modified: stable/8/sys/modules/geom/Makefile ============================================================================== --- stable/8/sys/modules/geom/Makefile Fri Jun 17 06:23:58 2011 (r223176) +++ stable/8/sys/modules/geom/Makefile Fri Jun 17 06:59:49 2011 (r223177) @@ -17,6 +17,7 @@ SUBDIR= geom_bde \ geom_nop \ geom_part \ geom_pc98 \ + geom_raid \ geom_raid3 \ geom_sched \ geom_shsec \ From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 07:03:42 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C32D106564A; Fri, 17 Jun 2011 07:03:42 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7C5928FC0C; Fri, 17 Jun 2011 07:03:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H73gAu065655; Fri, 17 Jun 2011 07:03:42 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H73gks065653; Fri, 17 Jun 2011 07:03:42 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201106170703.p5H73gks065653@svn.freebsd.org> From: Michael Tuexen Date: Fri, 17 Jun 2011 07:03:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223178 - head/lib/libc/net X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 07:03:42 -0000 Author: tuexen Date: Fri Jun 17 07:03:42 2011 New Revision: 223178 URL: http://svn.freebsd.org/changeset/base/223178 Log: Update the list of supported socket options for sctp_opt_info(). MFC after: 1 month. Modified: head/lib/libc/net/sctp_sys_calls.c Modified: head/lib/libc/net/sctp_sys_calls.c ============================================================================== --- head/lib/libc/net/sctp_sys_calls.c Fri Jun 17 06:59:49 2011 (r223177) +++ head/lib/libc/net/sctp_sys_calls.c Fri Jun 17 07:03:42 2011 (r223178) @@ -365,9 +365,6 @@ sctp_opt_info(int sd, sctp_assoc_t id, i case SCTP_DEFAULT_SEND_PARAM: ((struct sctp_assocparams *)arg)->sasoc_assoc_id = id; break; - case SCTP_SET_PEER_PRIMARY_ADDR: - ((struct sctp_setpeerprim *)arg)->sspp_assoc_id = id; - break; case SCTP_PRIMARY_ADDR: ((struct sctp_setprim *)arg)->ssp_assoc_id = id; break; @@ -407,6 +404,12 @@ sctp_opt_info(int sd, sctp_assoc_t id, i case SCTP_EVENT: ((struct sctp_event *)arg)->se_assoc_id = id; break; + case SCTP_DEFAULT_SNDINFO: + ((struct sctp_sndinfo *)arg)->snd_assoc_id = id; + break; + case SCTP_DEFAULT_PRINFO: + ((struct sctp_default_prinfo *)arg)->pr_assoc_id = id; + break; default: break; } From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 07:05:48 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 283ED106566B; Fri, 17 Jun 2011 07:05:48 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0D4838FC0C; Fri, 17 Jun 2011 07:05:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H75lKM065751; Fri, 17 Jun 2011 07:05:47 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H75l9O065748; Fri, 17 Jun 2011 07:05:47 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201106170705.p5H75l9O065748@svn.freebsd.org> From: Alexander Motin Date: Fri, 17 Jun 2011 07:05:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223179 - in stable/8/sbin/geom: class/sched core X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 07:05:48 -0000 Author: mav Date: Fri Jun 17 07:05:47 2011 New Revision: 223179 URL: http://svn.freebsd.org/changeset/base/223179 Log: MFC r219969: Make `geom XXX list` and `geom XXX status` outputs more consistent: Add -a options to print all geoms, not only ones with providers. Add -g option for `status` to report geom's names, not provider's. Make `status` by default report provider's status (if present), not geom's. Make `status` report consumer's statuses, not only "synchronized" field. Modified: stable/8/sbin/geom/core/geom.8 stable/8/sbin/geom/core/geom.c Directory Properties: stable/8/sbin/geom/ (props changed) stable/8/sbin/geom/class/multipath/ (props changed) stable/8/sbin/geom/class/part/ (props changed) stable/8/sbin/geom/class/sched/gsched.8 (props changed) stable/8/sbin/geom/class/stripe/ (props changed) Modified: stable/8/sbin/geom/core/geom.8 ============================================================================== --- stable/8/sbin/geom/core/geom.8 Fri Jun 17 07:03:42 2011 (r223178) +++ stable/8/sbin/geom/core/geom.8 Fri Jun 17 07:05:47 2011 (r223179) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 5, 2008 +.Dd January 5, 2011 .Dt GEOM 8 .Os .Sh NAME @@ -37,11 +37,12 @@ .Nm .Ar class .Cm list +.Op Fl a .Op Ar name ... .Nm .Ar class .Cm status -.Op Fl s +.Op Fl ags .Op Ar name ... .Nm .Ar class @@ -69,6 +70,11 @@ List all available commands for the give Print detailed information (within the given class) about all geoms (if no additional arguments were specified) or the given geoms. This command is only available if the given class exists in the kernel. +Additional options include: +.Bl -tag -width ".Fl a" +.It Fl a +Print information for geoms without providers. +.El .It Cm status Print general information (within the given class) about all geoms (if no additional arguments were specified) or the given geoms. @@ -76,6 +82,10 @@ This command is only available if the gi .Pp Additional options include: .Bl -tag -width ".Fl s" +.It Fl a +When used with -g, print status for geoms without providers. +.It Fl g +Report statuses for geoms instead of providers. .It Fl s Produce script-friendly output. .El @@ -126,6 +136,8 @@ NOP .It PART .It +RAID +.It RAID3 .It SHSEC Modified: stable/8/sbin/geom/core/geom.c ============================================================================== --- stable/8/sbin/geom/core/geom.c Fri Jun 17 07:03:42 2011 (r223178) +++ stable/8/sbin/geom/core/geom.c Fri Jun 17 07:05:47 2011 (r223179) @@ -76,15 +76,21 @@ static void std_unload(struct gctl_req * struct g_command std_commands[] = { { "help", 0, std_help, G_NULL_OPTS, NULL, NULL }, - { "list", 0, std_list, G_NULL_OPTS, NULL, - "[name ...]" + { "list", 0, std_list, + { + { 'a', "all", NULL, G_TYPE_BOOL }, + G_OPT_SENTINEL + }, + NULL, "[-a] [name ...]" }, { "status", 0, std_status, { + { 'a', "all", NULL, G_TYPE_BOOL }, + { 'g', "geoms", NULL, G_TYPE_BOOL }, { 's', "script", NULL, G_TYPE_BOOL }, G_OPT_SENTINEL }, - NULL, "[-s] [name ...]" + NULL, "[-ags] [name ...]" }, { "load", G_FLAG_VERBOSE | G_FLAG_LOADKLD, std_load, G_NULL_OPTS, NULL, NULL }, @@ -800,7 +806,7 @@ std_list(struct gctl_req *req, unsigned struct gclass *classp; struct ggeom *gp; const char *name; - int error, i, nargs; + int all, error, i, nargs; error = geom_gettree(&mesh); if (error != 0) @@ -811,18 +817,18 @@ std_list(struct gctl_req *req, unsigned errx(EXIT_FAILURE, "Class %s not found.", gclass_name); } nargs = gctl_get_int(req, "nargs"); + all = gctl_get_int(req, "all"); if (nargs > 0) { for (i = 0; i < nargs; i++) { name = gctl_get_ascii(req, "arg%d", i); gp = find_geom(classp, name); - if (gp != NULL) - list_one_geom(gp); - else + if (gp == NULL) errx(EXIT_FAILURE, "No such geom: %s.", name); + list_one_geom(gp); } } else { LIST_FOREACH(gp, &classp->lg_geom, lg_geom) { - if (LIST_EMPTY(&gp->lg_provider)) + if (LIST_EMPTY(&gp->lg_provider) && !all) continue; list_one_geom(gp); } @@ -841,7 +847,6 @@ std_status_available(void) static void status_update_len(struct ggeom *gp, int *name_len, int *status_len) { - struct gprovider *pp; struct gconfig *conf; int len; @@ -849,11 +854,7 @@ status_update_len(struct ggeom *gp, int assert(name_len != NULL); assert(status_len != NULL); - pp = LIST_FIRST(&gp->lg_provider); - if (pp != NULL) - len = strlen(pp->lg_name); - else - len = strlen(gp->lg_name); + len = strlen(gp->lg_name); if (*name_len < len) *name_len = len; LIST_FOREACH(conf, &gp->lg_config, lg_config) { @@ -865,25 +866,67 @@ status_update_len(struct ggeom *gp, int } } +static void +status_update_len_prs(struct ggeom *gp, int *name_len, int *status_len) +{ + struct gprovider *pp; + struct gconfig *conf; + int len, glen; + + assert(gp != NULL); + assert(name_len != NULL); + assert(status_len != NULL); + + glen = 0; + LIST_FOREACH(conf, &gp->lg_config, lg_config) { + if (strcasecmp(conf->lg_name, "state") == 0) { + glen = strlen(conf->lg_val); + break; + } + } + LIST_FOREACH(pp, &gp->lg_provider, lg_provider) { + len = strlen(pp->lg_name); + if (*name_len < len) + *name_len = len; + len = glen; + LIST_FOREACH(conf, &pp->lg_config, lg_config) { + if (strcasecmp(conf->lg_name, "state") == 0) { + len = strlen(conf->lg_val); + break; + } + } + if (*status_len < len) + *status_len = len; + } +} + static char * status_one_consumer(struct gconsumer *cp) { static char buf[256]; struct gprovider *pp; struct gconfig *conf; + const char *state, *syncr; pp = cp->lg_provider; if (pp == NULL) return (NULL); + state = NULL; + syncr = NULL; LIST_FOREACH(conf, &cp->lg_config, lg_config) { + if (strcasecmp(conf->lg_name, "state") == 0) + state = conf->lg_val; if (strcasecmp(conf->lg_name, "synchronized") == 0) - break; + syncr = conf->lg_val; } - if (conf == NULL) + if (state == NULL && syncr == NULL) snprintf(buf, sizeof(buf), "%s", pp->lg_name); - else { + else if (state != NULL && syncr != NULL) { + snprintf(buf, sizeof(buf), "%s (%s, %s)", pp->lg_name, + state, syncr); + } else { snprintf(buf, sizeof(buf), "%s (%s)", pp->lg_name, - conf->lg_val); + state ? state : syncr); } return (buf); } @@ -891,25 +934,19 @@ status_one_consumer(struct gconsumer *cp static void status_one_geom(struct ggeom *gp, int script, int name_len, int status_len) { - struct gprovider *pp; struct gconsumer *cp; struct gconfig *conf; const char *name, *status, *component; int gotone; - pp = LIST_FIRST(&gp->lg_provider); - if (pp != NULL) - name = pp->lg_name; - else - name = gp->lg_name; + name = gp->lg_name; + status = "N/A"; LIST_FOREACH(conf, &gp->lg_config, lg_config) { - if (strcasecmp(conf->lg_name, "state") == 0) + if (strcasecmp(conf->lg_name, "state") == 0) { + status = conf->lg_val; break; + } } - if (conf == NULL) - status = "N/A"; - else - status = conf->lg_val; gotone = 0; LIST_FOREACH(cp, &gp->lg_consumer, lg_consumer) { component = status_one_consumer(cp); @@ -928,6 +965,48 @@ status_one_geom(struct ggeom *gp, int sc } static void +status_one_geom_prs(struct ggeom *gp, int script, int name_len, int status_len) +{ + struct gprovider *pp; + struct gconsumer *cp; + struct gconfig *conf; + const char *name, *status, *component; + int gotone; + + LIST_FOREACH(pp, &gp->lg_provider, lg_provider) { + name = pp->lg_name; + status = "N/A"; + LIST_FOREACH(conf, &gp->lg_config, lg_config) { + if (strcasecmp(conf->lg_name, "state") == 0) { + status = conf->lg_val; + break; + } + } + LIST_FOREACH(conf, &pp->lg_config, lg_config) { + if (strcasecmp(conf->lg_name, "state") == 0) { + status = conf->lg_val; + break; + } + } + gotone = 0; + LIST_FOREACH(cp, &gp->lg_consumer, lg_consumer) { + component = status_one_consumer(cp); + if (component == NULL) + continue; + gotone = 1; + printf("%*s %*s %s\n", name_len, name, + status_len, status, component); + if (!script) + name = status = ""; + } + if (!gotone) { + printf("%*s %*s %s\n", name_len, name, + status_len, status, "N/A"); + } + } +} + +static void std_status(struct gctl_req *req, unsigned flags __unused) { struct gmesh mesh; @@ -935,7 +1014,7 @@ std_status(struct gctl_req *req, unsigne struct ggeom *gp; const char *name; int name_len, status_len; - int error, i, n, nargs, script; + int all, error, geoms, i, n, nargs, script; error = geom_gettree(&mesh); if (error != 0) @@ -944,28 +1023,45 @@ std_status(struct gctl_req *req, unsigne if (classp == NULL) errx(EXIT_FAILURE, "Class %s not found.", gclass_name); nargs = gctl_get_int(req, "nargs"); + all = gctl_get_int(req, "all"); + geoms = gctl_get_int(req, "geoms"); script = gctl_get_int(req, "script"); - name_len = strlen("Name"); - status_len = strlen("Status"); + if (script) { + name_len = 0; + status_len = 0; + } else { + name_len = strlen("Name"); + status_len = strlen("Status"); + } if (nargs > 0) { for (i = 0, n = 0; i < nargs; i++) { name = gctl_get_ascii(req, "arg%d", i); gp = find_geom(classp, name); if (gp == NULL) errx(EXIT_FAILURE, "No such geom: %s.", name); - else { - status_update_len(gp, &name_len, &status_len); - n++; + if (geoms) { + status_update_len(gp, + &name_len, &status_len); + } else { + status_update_len_prs(gp, + &name_len, &status_len); } + n++; } if (n == 0) goto end; } else { n = 0; LIST_FOREACH(gp, &classp->lg_geom, lg_geom) { - if (LIST_EMPTY(&gp->lg_provider)) + if (LIST_EMPTY(&gp->lg_provider) && !all) continue; - status_update_len(gp, &name_len, &status_len); + if (geoms) { + status_update_len(gp, + &name_len, &status_len); + } else { + status_update_len_prs(gp, + &name_len, &status_len); + } n++; } if (n == 0) @@ -979,16 +1075,27 @@ std_status(struct gctl_req *req, unsigne for (i = 0; i < nargs; i++) { name = gctl_get_ascii(req, "arg%d", i); gp = find_geom(classp, name); - if (gp != NULL) { + if (gp == NULL) + continue; + if (geoms) { status_one_geom(gp, script, name_len, status_len); + } else { + status_one_geom_prs(gp, script, name_len, + status_len); } } } else { LIST_FOREACH(gp, &classp->lg_geom, lg_geom) { - if (LIST_EMPTY(&gp->lg_provider)) + if (LIST_EMPTY(&gp->lg_provider) && !all) continue; - status_one_geom(gp, script, name_len, status_len); + if (geoms) { + status_one_geom(gp, script, name_len, + status_len); + } else { + status_one_geom_prs(gp, script, name_len, + status_len); + } } } end: From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 07:06:42 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B9C7B106566B; Fri, 17 Jun 2011 07:06:42 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A9FFB8FC0C; Fri, 17 Jun 2011 07:06:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H76gPY065824; Fri, 17 Jun 2011 07:06:42 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H76gEx065822; Fri, 17 Jun 2011 07:06:42 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201106170706.p5H76gEx065822@svn.freebsd.org> From: Michael Tuexen Date: Fri, 17 Jun 2011 07:06:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223180 - head/lib/libc/net X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 07:06:42 -0000 Author: tuexen Date: Fri Jun 17 07:06:42 2011 New Revision: 223180 URL: http://svn.freebsd.org/changeset/base/223180 Log: Add SCTP_MAX_BURST support to sctp_opt_info(). This only applies to 9.0 and higher, since the type of the values has changed since we introduced it. So it can't be MFCed. Modified: head/lib/libc/net/sctp_sys_calls.c Modified: head/lib/libc/net/sctp_sys_calls.c ============================================================================== --- head/lib/libc/net/sctp_sys_calls.c Fri Jun 17 07:05:47 2011 (r223179) +++ head/lib/libc/net/sctp_sys_calls.c Fri Jun 17 07:06:42 2011 (r223180) @@ -410,6 +410,9 @@ sctp_opt_info(int sd, sctp_assoc_t id, i case SCTP_DEFAULT_PRINFO: ((struct sctp_default_prinfo *)arg)->pr_assoc_id = id; break; + case SCTP_MAX_BURST: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; default: break; } From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 07:07:27 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 94C0E106564A; Fri, 17 Jun 2011 07:07:27 +0000 (UTC) (envelope-from trociny@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6B7298FC1B; Fri, 17 Jun 2011 07:07:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H77Rtl065884; Fri, 17 Jun 2011 07:07:27 GMT (envelope-from trociny@svn.freebsd.org) Received: (from trociny@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H77R4H065881; Fri, 17 Jun 2011 07:07:27 GMT (envelope-from trociny@svn.freebsd.org) Message-Id: <201106170707.p5H77R4H065881@svn.freebsd.org> From: Mikolaj Golub Date: Fri, 17 Jun 2011 07:07:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223181 - head/sbin/hastd X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 07:07:27 -0000 Author: trociny Date: Fri Jun 17 07:07:26 2011 New Revision: 223181 URL: http://svn.freebsd.org/changeset/base/223181 Log: In HAST we use two sockets - one for only sending the data and one for only receiving the data. In r220271 the unused directions were disabled using shutdown(2). Unfortunately, this broke automatic receive buffer sizing, which currently works only for connections in ETASBLISHED state. It was a root cause of the issue reported by users, when connection between primary and secondary could get stuck. Disable the code introduced in r220271 until the issue with automatic buffer sizing is not resolved. Reported by: Daniel Kalchev , danger, sobomax Tested by: Daniel Kalchev , danger Approved by: pjd (mentor) MFC after: 1 week Modified: head/sbin/hastd/primary.c head/sbin/hastd/secondary.c Modified: head/sbin/hastd/primary.c ============================================================================== --- head/sbin/hastd/primary.c Fri Jun 17 07:06:42 2011 (r223180) +++ head/sbin/hastd/primary.c Fri Jun 17 07:07:26 2011 (r223181) @@ -726,11 +726,13 @@ init_remote(struct hast_resource *res, s (void)hast_activemap_flush(res); } nv_free(nvin); +#ifdef notyet /* Setup directions. */ if (proto_send(out, NULL, 0) == -1) pjdlog_errno(LOG_WARNING, "Unable to set connection direction"); if (proto_recv(in, NULL, 0) == -1) pjdlog_errno(LOG_WARNING, "Unable to set connection direction"); +#endif pjdlog_info("Connected to %s.", res->hr_remoteaddr); if (inp != NULL && outp != NULL) { *inp = in; Modified: head/sbin/hastd/secondary.c ============================================================================== --- head/sbin/hastd/secondary.c Fri Jun 17 07:06:42 2011 (r223180) +++ head/sbin/hastd/secondary.c Fri Jun 17 07:07:26 2011 (r223181) @@ -183,9 +183,11 @@ init_remote(struct hast_resource *res, s unsigned char *map; size_t mapsize; +#ifdef notyet /* Setup direction. */ if (proto_send(res->hr_remoteout, NULL, 0) == -1) pjdlog_errno(LOG_WARNING, "Unable to set connection direction"); +#endif map = NULL; mapsize = 0; @@ -351,9 +353,11 @@ init_remote(struct hast_resource *res, s if (map != NULL) free(map); nv_free(nvout); +#ifdef notyet /* Setup direction. */ if (proto_recv(res->hr_remotein, NULL, 0) == -1) pjdlog_errno(LOG_WARNING, "Unable to set connection direction"); +#endif if (res->hr_secondary_localcnt > res->hr_primary_remotecnt && res->hr_primary_localcnt > res->hr_secondary_remotecnt) { /* Exit on split-brain. */ From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 07:30:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B5CC31065673; Fri, 17 Jun 2011 07:30:56 +0000 (UTC) (envelope-from pluknet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A59138FC14; Fri, 17 Jun 2011 07:30:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5H7UupK070718; Fri, 17 Jun 2011 07:30:56 GMT (envelope-from pluknet@svn.freebsd.org) Received: (from pluknet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5H7Uux5070716; Fri, 17 Jun 2011 07:30:56 GMT (envelope-from pluknet@svn.freebsd.org) Message-Id: <201106170730.p5H7Uux5070716@svn.freebsd.org> From: Sergey Kandaurov Date: Fri, 17 Jun 2011 07:30:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223182 - head/sys/compat/linprocfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 07:30:56 -0000 Author: pluknet Date: Fri Jun 17 07:30:56 2011 New Revision: 223182 URL: http://svn.freebsd.org/changeset/base/223182 Log: Return empty cmdline/environ string for processes with kernel address space. This is consistent with the behavior in linux. PR: kern/157871 Reported by: Petr Salinger Verified on: GNU/kFreeBSD debian 8.2-1-amd64 (by reporter) Reviewed by: kib (some time ago) MFC after: 2 weeks Modified: head/sys/compat/linprocfs/linprocfs.c Modified: head/sys/compat/linprocfs/linprocfs.c ============================================================================== --- head/sys/compat/linprocfs/linprocfs.c Fri Jun 17 07:07:26 2011 (r223181) +++ head/sys/compat/linprocfs/linprocfs.c Fri Jun 17 07:30:56 2011 (r223182) @@ -1049,6 +1049,15 @@ linprocfs_doproccmdline(PFS_FILL_ARGS) PROC_UNLOCK(p); return (ret); } + + /* + * Mimic linux behavior and pass only processes with usermode + * address space as valid. Return zero silently otherwize. + */ + if (p->p_vmspace == &vmspace0) { + PROC_UNLOCK(p); + return (0); + } if (p->p_args != NULL) { sbuf_bcpy(sb, p->p_args->ar_args, p->p_args->ar_length); PROC_UNLOCK(p); @@ -1073,6 +1082,15 @@ linprocfs_doprocenviron(PFS_FILL_ARGS) PROC_UNLOCK(p); return (ret); } + + /* + * Mimic linux behavior and pass only processes with usermode + * address space as valid. Return zero silently otherwize. + */ + if (p->p_vmspace == &vmspace0) { + PROC_UNLOCK(p); + return (0); + } PROC_UNLOCK(p); ret = linprocfs_doargv(td, p, sb, ps_string_env); From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 10:21:25 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1B030106564A; Fri, 17 Jun 2011 10:21:25 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E506B8FC15; Fri, 17 Jun 2011 10:21:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HALOuv082517; Fri, 17 Jun 2011 10:21:24 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HALO75082513; Fri, 17 Jun 2011 10:21:24 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106171021.p5HALO75082513@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 17 Jun 2011 10:21:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223183 - in head: bin/sh tools/regression/bin/sh/builtins X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 10:21:25 -0000 Author: jilles Date: Fri Jun 17 10:21:24 2011 New Revision: 223183 URL: http://svn.freebsd.org/changeset/base/223183 Log: sh: Skip variables with invalid names in "set", "export -p", "readonly -p". This ensures the output of these commands is valid shell input. Added: head/tools/regression/bin/sh/builtins/export1.0 (contents, props changed) head/tools/regression/bin/sh/builtins/set2.0 (contents, props changed) Modified: head/bin/sh/var.c Modified: head/bin/sh/var.c ============================================================================== --- head/bin/sh/var.c Fri Jun 17 07:30:56 2011 (r223182) +++ head/bin/sh/var.c Fri Jun 17 10:21:24 2011 (r223183) @@ -612,6 +612,12 @@ showvarscmd(int argc __unused, char **ar qsort(vars, n, sizeof(*vars), var_compare); for (i = 0; i < n; i++) { + /* + * Skip improper variable names so the output remains usable as + * shell input. + */ + if (!isassignment(vars[i])) + continue; s = strchr(vars[i], '='); s++; outbin(vars[i], s - vars[i], out1); @@ -683,6 +689,13 @@ exportcmd(int argc, char **argv) for (vp = *vpp ; vp ; vp = vp->next) { if (vp->flags & flag) { if (values) { + /* + * Skip improper variable names + * so the output remains usable + * as shell input. + */ + if (!isassignment(vp->text)) + continue; out1str(cmdname); out1c(' '); } Added: head/tools/regression/bin/sh/builtins/export1.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/export1.0 Fri Jun 17 10:21:24 2011 (r223183) @@ -0,0 +1,3 @@ +# $FreeBSD$ + +env @badness=1 ${SH} -c 'v=`export -p`; eval "$v"' Added: head/tools/regression/bin/sh/builtins/set2.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/set2.0 Fri Jun 17 10:21:24 2011 (r223183) @@ -0,0 +1,3 @@ +# $FreeBSD$ + +! env @badness=1 ${SH} -c 'v=`set`; eval "$v"' 2>&1 | grep @badness From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 12:12:52 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6A6311065676; Fri, 17 Jun 2011 12:12:52 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5A6388FC12; Fri, 17 Jun 2011 12:12:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HCCqm2090615; Fri, 17 Jun 2011 12:12:52 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HCCqSP090613; Fri, 17 Jun 2011 12:12:52 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201106171212.p5HCCqSP090613@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 17 Jun 2011 12:12:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223185 - head/sbin/ipfw X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 12:12:52 -0000 Author: glebius Date: Fri Jun 17 12:12:52 2011 New Revision: 223185 URL: http://svn.freebsd.org/changeset/base/223185 Log: - Fix my braino in the 220835, when I used strtok(). It isn't applicable here, since modifies the string. Switch to strchr(). - Restore support for undocumented optional parameters of redir_port and redir_proto, that were disabled in 220835. - While here, change !isalpha() checks on optinal parameters for isdigit(). Submitted by: Alexander V. Chernikov PR: kern/143653 Modified: head/sbin/ipfw/nat.c Modified: head/sbin/ipfw/nat.c ============================================================================== --- head/sbin/ipfw/nat.c Fri Jun 17 11:13:37 2011 (r223184) +++ head/sbin/ipfw/nat.c Fri Jun 17 12:12:52 2011 (r223185) @@ -315,14 +315,19 @@ static int estimate_redir_addr(int *ac, char ***av) { size_t space = sizeof(struct cfg_redir); - char *sep; + char *sep = **av; + u_int c = 0; - if ((sep = strtok(**av, ",")) != NULL) { - space += sizeof(struct cfg_spool); - while ((sep = strtok(NULL, ",")) != NULL) - space += sizeof(struct cfg_spool); + while ((sep = strchr(sep, ',')) != NULL) { + c++; + sep++; } + if (c > 0) + c++; + + space += c * sizeof(struct cfg_spool); + return (space); } @@ -370,14 +375,19 @@ static int estimate_redir_port(int *ac, char ***av) { size_t space = sizeof(struct cfg_redir); - char *sep; + char *sep = **av; + u_int c = 0; - if ((sep = strtok(**av, ",")) != NULL) { - space += sizeof(struct cfg_spool); - while ((sep = strtok(NULL, ",")) != NULL) - space += sizeof(struct cfg_spool); + while ((sep = strchr(sep, ',')) != NULL) { + c++; + sep++; } + if (c > 0) + c++; + + space += c * sizeof(struct cfg_spool); + return (space); } @@ -465,10 +475,10 @@ setup_redir_port(char *buf, int *ac, cha * Extract remote address and optionally port. */ /* - * NB: isalpha(**av) => we've to check that next parameter is really an + * NB: isdigit(**av) => we've to check that next parameter is really an * option for this redirect entry, else stop here processing arg[cv]. */ - if (*ac != 0 && !isalpha(***av)) { + if (*ac != 0 && isdigit(***av)) { if ((sep = strchr(**av, ':')) != NULL) { if (StrToAddrAndPortRange(**av, &r->raddr, protoName, &portRange) != 0) @@ -584,7 +594,7 @@ setup_redir_proto(char *buf, int *ac, ch r->raddr.s_addr = INADDR_ANY; } else { /* see above in setup_redir_port() */ - if (!isalpha(***av)) { + if (isdigit(***av)) { StrToAddr(**av, &r->paddr); (*av)++; (*ac)--; @@ -592,7 +602,7 @@ setup_redir_proto(char *buf, int *ac, ch * Extract optional remote address. */ /* see above in setup_redir_port() */ - if (*ac != 0 && !isalpha(***av)) { + if (*ac != 0 && isdigit(***av)) { StrToAddr(**av, &r->raddr); (*av)++; (*ac)--; } @@ -774,6 +784,9 @@ ipfw_config_nat(int ac, char **av) av1++; ac1--; len += estimate_redir_port(&ac1, &av1); av1 += 2; ac1 -= 2; + /* Skip optional remoteIP/port */ + if (ac1 != 0 && isdigit(**av1)) + av1++; ac1--; break; case TOK_REDIR_PROTO: if (ac1 < 2) @@ -781,6 +794,11 @@ ipfw_config_nat(int ac, char **av) "not enough arguments"); len += sizeof(struct cfg_redir); av1 += 2; ac1 -= 2; + /* Skip optional remoteIP/port */ + if (ac1 != 0 && isdigit(**av1)) + av1++; ac1--; + if (ac1 != 0 && isdigit(**av1)) + av1++; ac1--; break; default: errx(EX_DATAERR, "unrecognised option ``%s''", av1[-1]); From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 13:03:49 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D7166106566B; Fri, 17 Jun 2011 13:03:49 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C68D68FC1C; Fri, 17 Jun 2011 13:03:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HD3nfM092057; Fri, 17 Jun 2011 13:03:49 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HD3nto092050; Fri, 17 Jun 2011 13:03:49 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106171303.p5HD3nto092050@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 17 Jun 2011 13:03:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223186 - in head: bin/sh tools/regression/bin/sh/builtins X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 13:03:49 -0000 Author: jilles Date: Fri Jun 17 13:03:49 2011 New Revision: 223186 URL: http://svn.freebsd.org/changeset/base/223186 Log: sh: Add case statement fallthrough (with ';&' instead of ';;'). Replacing ;; with the new control operator ;& will cause the next list to be executed as well without checking its pattern, continuing until a list ends with ;; or until the end of the case statement. This is like omitting "break" in a C "switch" statement. The sequence ;& was formerly invalid. This feature is proposed for the next POSIX issue in Austin Group issue #449. Added: head/tools/regression/bin/sh/builtins/case9.0 (contents, props changed) Modified: head/bin/sh/eval.c head/bin/sh/mktokens head/bin/sh/nodetypes head/bin/sh/parser.c head/bin/sh/sh.1 Modified: head/bin/sh/eval.c ============================================================================== --- head/bin/sh/eval.c Fri Jun 17 12:12:52 2011 (r223185) +++ head/bin/sh/eval.c Fri Jun 17 13:03:49 2011 (r223186) @@ -386,6 +386,14 @@ evalcase(union node *n, int flags) for (cp = n->ncase.cases ; cp && evalskip == 0 ; cp = cp->nclist.next) { for (patp = cp->nclist.pattern ; patp ; patp = patp->narg.next) { if (casematch(patp, arglist.list->text)) { + while (cp->nclist.next && + cp->type == NCLISTFALLTHRU) { + if (evalskip != 0) + break; + evaltree(cp->nclist.body, + flags & ~EV_EXIT); + cp = cp->nclist.next; + } if (evalskip == 0) { evaltree(cp->nclist.body, flags); } Modified: head/bin/sh/mktokens ============================================================================== --- head/bin/sh/mktokens Fri Jun 17 12:12:52 2011 (r223185) +++ head/bin/sh/mktokens Fri Jun 17 13:03:49 2011 (r223186) @@ -50,6 +50,7 @@ TPIPE 0 "|" TLP 0 "(" TRP 1 ")" TENDCASE 1 ";;" +TFALLTHRU 1 ";&" TREDIR 0 redirection TWORD 0 word TIF 0 "if" Modified: head/bin/sh/nodetypes ============================================================================== --- head/bin/sh/nodetypes Fri Jun 17 12:12:52 2011 (r223185) +++ head/bin/sh/nodetypes Fri Jun 17 13:03:49 2011 (r223186) @@ -96,12 +96,13 @@ NCASE ncase # a case statement expr nodeptr # the word to switch on cases nodeptr # the list of cases (NCLIST nodes) -NCLIST nclist # a case +NCLIST nclist # a case ending with ;; type int next nodeptr # the next case in list pattern nodeptr # list of patterns for this case body nodeptr # code to execute for this case +NCLISTFALLTHRU nclist # a case ending with ;& NDEFUN narg # define a function. The "next" field contains # the body of the function. Modified: head/bin/sh/parser.c ============================================================================== --- head/bin/sh/parser.c Fri Jun 17 12:12:52 2011 (r223185) +++ head/bin/sh/parser.c Fri Jun 17 13:03:49 2011 (r223186) @@ -542,10 +542,13 @@ TRACE(("expecting DO got %s %s\n", tokna checkkwd = CHKNL | CHKKWD | CHKALIAS; if ((t = readtoken()) != TESAC) { - if (t != TENDCASE) - synexpect(TENDCASE); + if (t == TENDCASE) + ; + else if (t == TFALLTHRU) + cp->type = NCLISTFALLTHRU; else - checkkwd = CHKNL | CHKKWD, readtoken(); + synexpect(TENDCASE); + checkkwd = CHKNL | CHKKWD, readtoken(); } cpp = &cp->nclist.next; } @@ -931,8 +934,11 @@ xxreadtoken(void) pungetc(); RETURN(TPIPE); case ';': - if (pgetc() == ';') + c = pgetc(); + if (c == ';') RETURN(TENDCASE); + else if (c == '&') + RETURN(TFALLTHRU); pungetc(); RETURN(TSEMI); case '(': Modified: head/bin/sh/sh.1 ============================================================================== --- head/bin/sh/sh.1 Fri Jun 17 12:12:52 2011 (r223185) +++ head/bin/sh/sh.1 Fri Jun 17 13:03:49 2011 (r223186) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd June 15, 2011 +.Dd June 17, 2011 .Dt SH 1 .Os .Sh NAME @@ -372,7 +372,7 @@ The following is a list of valid operato .It Control operators: .Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact .It Li & Ta Li && Ta Li ( Ta Li ) Ta Li \en -.It Li ;; Ta Li ; Ta Li | Ta Li || +.It Li ;; Ta Li ;& Ta Li ; Ta Li | Ta Li || .El .It Redirection operators: .Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact @@ -990,6 +990,11 @@ described later), separated by .Ql \&| characters. +If the selected list is terminated by the control operator +.Ql ;& +instead of +.Ql ;; , +execution continues with the next list. The exit code of the .Ic case command is the exit code of the last command executed in the list or Added: head/tools/regression/bin/sh/builtins/case9.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/case9.0 Fri Jun 17 13:03:49 2011 (r223186) @@ -0,0 +1,39 @@ +# $FreeBSD$ + +errors=0 + +f() { + result= + case $1 in + a) result=${result}a ;; + b) result=${result}b ;& + c) result=${result}c ;& + d) result=${result}d ;; + e) result=${result}e ;& + esac +} + +check() { + f "$1" + if [ "$result" != "$2" ]; then + printf "For %s, expected %s got %s\n" "$1" "$2" "$result" + errors=$((errors + 1)) + fi +} + +check '' '' +check a a +check b bcd +check c cd +check d d +check e e + +if ! (case 1 in + 1) false ;& + 2) true ;; +esac) then + echo "Subshell bad" + errors=$((errors + 1)) +fi + +exit $((errors != 0)) From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 16:03:01 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 419AD1065673; Fri, 17 Jun 2011 16:03:01 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 276338FC14; Fri, 17 Jun 2011 16:03:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HG31IP097301; Fri, 17 Jun 2011 16:03:01 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HG31df097299; Fri, 17 Jun 2011 16:03:01 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201106171603.p5HG31df097299@svn.freebsd.org> From: Rick Macklem Date: Fri, 17 Jun 2011 16:03:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223187 - stable/8/usr.sbin/rpc.lockd X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 16:03:01 -0000 Author: rmacklem Date: Fri Jun 17 16:03:00 2011 New Revision: 223187 URL: http://svn.freebsd.org/changeset/base/223187 Log: MFC: r222624 Fix the nfs related daemons so that they don't intermittently fail with "bind: address already in use". This problem was reported to the freebsd-stable@ mailing list on Feb. 19 under the subject heading "statd/lockd startup failure" by george+freebsd at m5p dot com. The problem is that the first combination of {udp,tcp X ipv4,ipv6} would select a port# dynamically, but one of the other three combinations would have that port# already in use. The patch is somewhat involved because it was requested by dougb@ that the four combinations use the same port# wherever possible. The patch splits the create_service() function into two functions. The first goes as far as bind(2) in a loop for up to GETPORT_MAXTRY - 1 times, attempting to use the same port# for all four cases. If these attempts fail, the last attempt allows the 4 cases to use different port #s. After this function has succeeded, the second function, called complete_service(), does the rest of what create_service() did. The three daemons mountd, rpc.lockd and rpc.statd all have a create_service() function that is patched in a similar way. However, create_service() has non-trivial differences for the three daemons that made it impractical to share the same functions between them. Modified: stable/8/usr.sbin/rpc.lockd/lockd.c Directory Properties: stable/8/usr.sbin/rpc.lockd/ (props changed) Modified: stable/8/usr.sbin/rpc.lockd/lockd.c ============================================================================== --- stable/8/usr.sbin/rpc.lockd/lockd.c Fri Jun 17 13:03:49 2011 (r223186) +++ stable/8/usr.sbin/rpc.lockd/lockd.c Fri Jun 17 16:03:00 2011 (r223187) @@ -74,6 +74,8 @@ __RCSID("$NetBSD: lockd.c,v 1.7 2000/08/ #include "lockd.h" #include +#define GETPORT_MAXTRY 20 /* Max tries to get a port # */ + int debug_level = 0; /* 0 = no debugging syslog() calls */ int _rpcsvcdirty = 0; @@ -84,12 +86,18 @@ int kernel_lockd_client; pid_t client_pid; struct mon mon_host; char **hosts, *svcport_str = NULL; +static int mallocd_svcport = 0; +static int *sock_fd; +static int sock_fdcnt; +static int sock_fdpos; int nhosts = 0; int xcreated = 0; char **addrs; /* actually (netid, uaddr) pairs */ int naddrs; /* count of how many (netid, uaddr) pairs */ -void create_service(struct netconfig *nconf); +static int create_service(struct netconfig *nconf); +static void complete_service(struct netconfig *nconf, char *port_str); +static void clearout_service(void); void lookup_addresses(struct netconfig *nconf); void init_nsm(void); void nlm_prog_0(struct svc_req *, SVCXPRT *); @@ -118,6 +126,8 @@ main(int argc, char **argv) int have_v6 = 1; int maxrec = RPC_MAXDATASIZE; in_port_t svcport = 0; + int attempt_cnt, port_len, port_pos, ret; + char **port_list; while ((ch = getopt(argc, argv, "d:g:h:p:")) != (-1)) { switch (ch) { @@ -308,6 +318,11 @@ main(int argc, char **argv) } endnetconfig(nc_handle); } else { + attempt_cnt = 1; + sock_fdcnt = 0; + sock_fd = NULL; + port_list = NULL; + port_len = 0; nc_handle = setnetconfig(); while ((nconf = getnetconfig(nc_handle))) { /* We want to listen only on udp6, tcp6, udp, tcp transports */ @@ -316,11 +331,96 @@ main(int argc, char **argv) if (have_v6 == 0 && strcmp(nconf->nc_protofmly, "inet6") == 0) { /* DO NOTHING */ } else { - create_service(nconf); + ret = create_service(nconf); + if (ret == 1) + /* Ignore this call */ + continue; + if (ret < 0) { + /* + * Failed to bind port, so close + * off all sockets created and + * try again if the port# was + * dynamically assigned via + * bind(2). + */ + clearout_service(); + if (mallocd_svcport != 0 && + attempt_cnt < + GETPORT_MAXTRY) { + free(svcport_str); + svcport_str = NULL; + mallocd_svcport = 0; + } else { + errno = EADDRINUSE; + syslog(LOG_ERR, + "bindresvport_sa: %m"); + exit(1); + } + + /* + * Start over at the first + * service. + */ + free(sock_fd); + sock_fdcnt = 0; + sock_fd = NULL; + nc_handle = setnetconfig(); + attempt_cnt++; + } else if (mallocd_svcport != 0 && + attempt_cnt == GETPORT_MAXTRY) { + /* + * For the last attempt, allow + * different port #s for each + * nconf by saving the + * svcport_str and setting it + * back to NULL. + */ + port_list = realloc(port_list, + (port_len + 1) * + sizeof(char *)); + if (port_list == NULL) + out_of_mem(); + port_list[port_len++] = + svcport_str; + svcport_str = NULL; + mallocd_svcport = 0; + } } } } + + /* + * Successfully bound the ports, so call complete_service() to + * do the rest of the setup on the service(s). + */ + sock_fdpos = 0; + port_pos = 0; + nc_handle = setnetconfig(); + while ((nconf = getnetconfig(nc_handle))) { + /* We want to listen only on udp6, tcp6, udp, tcp transports */ + if (nconf->nc_flag & NC_VISIBLE) { + /* Skip if there's no IPv6 support */ + if (have_v6 == 0 && strcmp(nconf->nc_protofmly, "inet6") == 0) { + /* DO NOTHING */ + } else if (port_list != NULL) { + if (port_pos >= port_len) { + syslog(LOG_ERR, + "too many port#s"); + exit(1); + } + complete_service(nconf, + port_list[port_pos++]); + } else + complete_service(nconf, svcport_str); + } + } endnetconfig(nc_handle); + free(sock_fd); + if (port_list != NULL) { + for (port_pos = 0; port_pos < port_len; port_pos++) + free(port_list[port_pos]); + free(port_list); + } } /* @@ -385,29 +485,30 @@ main(int argc, char **argv) /* * This routine creates and binds sockets on the appropriate - * addresses. It gets called one time for each transport and - * registrates the service with rpcbind on that trasport. + * addresses. It gets called one time for each transport. + * It returns 0 upon success, 1 for ingore the call and -1 to indicate + * bind failed with EADDRINUSE. + * Any file descriptors that have been created are stored in sock_fd and + * the total count of them is maintained in sock_fdcnt. */ -void +static int create_service(struct netconfig *nconf) { struct addrinfo hints, *res = NULL; struct sockaddr_in *sin; struct sockaddr_in6 *sin6; struct __rpc_sockinfo si; - struct netbuf servaddr; - SVCXPRT *transp = NULL; int aicode; int fd; int nhostsbak; int r; - int registered = 0; u_int32_t host_addr[4]; /* IPv4 or IPv6 */ + int mallocd_res; if ((nconf->nc_semantics != NC_TPI_CLTS) && (nconf->nc_semantics != NC_TPI_COTS) && (nconf->nc_semantics != NC_TPI_COTS_ORD)) - return; /* not my type */ + return (1); /* not my type */ /* * XXX - using RPC library internal functions. @@ -415,7 +516,7 @@ create_service(struct netconfig *nconf) if (!__rpc_nconf2sockinfo(nconf, &si)) { syslog(LOG_ERR, "cannot get information for %s", nconf->nc_netid); - return; + return (1); } /* Get rpc.statd's address on this transport */ @@ -431,6 +532,11 @@ create_service(struct netconfig *nconf) nhostsbak = nhosts; while (nhostsbak > 0) { --nhostsbak; + sock_fd = realloc(sock_fd, (sock_fdcnt + 1) * sizeof(int)); + if (sock_fd == NULL) + out_of_mem(); + sock_fd[sock_fdcnt++] = -1; /* Set invalid for now. */ + mallocd_res = 0; /* * XXX - using RPC library internal functions. @@ -445,7 +551,7 @@ create_service(struct netconfig *nconf) case AF_INET: if (inet_pton(AF_INET, hosts[nhostsbak], host_addr) == 1) { - hints.ai_flags &= AI_NUMERICHOST; + hints.ai_flags |= AI_NUMERICHOST; } else { /* * Skip if we have an AF_INET6 address. @@ -460,7 +566,7 @@ create_service(struct netconfig *nconf) case AF_INET6: if (inet_pton(AF_INET6, hosts[nhostsbak], host_addr) == 1) { - hints.ai_flags &= AI_NUMERICHOST; + hints.ai_flags |= AI_NUMERICHOST; } else { /* * Skip if we have an AF_INET address. @@ -484,6 +590,7 @@ create_service(struct netconfig *nconf) res = malloc(sizeof(struct addrinfo)); if (res == NULL) out_of_mem(); + mallocd_res = 1; res->ai_flags = hints.ai_flags; res->ai_family = hints.ai_family; res->ai_protocol = hints.ai_protocol; @@ -497,7 +604,7 @@ create_service(struct netconfig *nconf) sin->sin_addr.s_addr = htonl(INADDR_ANY); res->ai_addr = (struct sockaddr*) sin; res->ai_addrlen = (socklen_t) - sizeof(res->ai_addr); + sizeof(struct sockaddr_in); break; case AF_INET6: sin6 = malloc(sizeof(struct sockaddr_in6)); @@ -507,10 +614,14 @@ create_service(struct netconfig *nconf) sin6->sin6_port = htons(0); sin6->sin6_addr = in6addr_any; res->ai_addr = (struct sockaddr*) sin6; - res->ai_addrlen = (socklen_t) sizeof(res->ai_addr); + res->ai_addrlen = (socklen_t) + sizeof(struct sockaddr_in6); break; default: - break; + syslog(LOG_ERR, + "bad addr fam %d", + res->ai_family); + exit(1); } } else { if ((aicode = getaddrinfo(NULL, svcport_str, @@ -519,6 +630,7 @@ create_service(struct netconfig *nconf) "cannot get local address for %s: %s", nconf->nc_netid, gai_strerror(aicode)); + close(fd); continue; } } @@ -528,16 +640,92 @@ create_service(struct netconfig *nconf) syslog(LOG_ERR, "cannot get local address for %s: %s", nconf->nc_netid, gai_strerror(aicode)); + close(fd); continue; } } + + /* Store the fd. */ + sock_fd[sock_fdcnt - 1] = fd; + + /* Now, attempt the bind. */ r = bindresvport_sa(fd, res->ai_addr); if (r != 0) { + if (errno == EADDRINUSE && mallocd_svcport != 0) { + if (mallocd_res != 0) { + free(res->ai_addr); + free(res); + } else + freeaddrinfo(res); + return (-1); + } syslog(LOG_ERR, "bindresvport_sa: %m"); exit(1); } + if (svcport_str == NULL) { + svcport_str = malloc(NI_MAXSERV * sizeof(char)); + if (svcport_str == NULL) + out_of_mem(); + mallocd_svcport = 1; + + if (getnameinfo(res->ai_addr, + res->ai_addr->sa_len, NULL, NI_MAXHOST, + svcport_str, NI_MAXSERV * sizeof(char), + NI_NUMERICHOST | NI_NUMERICSERV)) + errx(1, "Cannot get port number"); + } + if (mallocd_res != 0) { + free(res->ai_addr); + free(res); + } else + freeaddrinfo(res); + res = NULL; + } + return (0); +} + +/* + * Called after all the create_service() calls have succeeded, to complete + * the setup and registration. + */ +static void +complete_service(struct netconfig *nconf, char *port_str) +{ + struct addrinfo hints, *res = NULL; + struct __rpc_sockinfo si; + struct netbuf servaddr; + SVCXPRT *transp = NULL; + int aicode, fd, nhostsbak; + int registered = 0; + + if ((nconf->nc_semantics != NC_TPI_CLTS) && + (nconf->nc_semantics != NC_TPI_COTS) && + (nconf->nc_semantics != NC_TPI_COTS_ORD)) + return; /* not my type */ + + /* + * XXX - using RPC library internal functions. + */ + if (!__rpc_nconf2sockinfo(nconf, &si)) { + syslog(LOG_ERR, "cannot get information for %s", + nconf->nc_netid); + return; + } + + nhostsbak = nhosts; + while (nhostsbak > 0) { + --nhostsbak; + if (sock_fdpos >= sock_fdcnt) { + /* Should never happen. */ + syslog(LOG_ERR, "Ran out of socket fd's"); + return; + } + fd = sock_fd[sock_fdpos++]; + if (fd < 0) + continue; + if (nconf->nc_semantics != NC_TPI_CLTS) listen(fd, SOMAXCONN); @@ -581,19 +769,7 @@ create_service(struct netconfig *nconf) hints.ai_socktype = si.si_socktype; hints.ai_protocol = si.si_proto; - if (svcport_str == NULL) { - svcport_str = malloc(NI_MAXSERV * sizeof(char)); - if (svcport_str == NULL) - out_of_mem(); - - if (getnameinfo(res->ai_addr, - res->ai_addr->sa_len, NULL, NI_MAXHOST, - svcport_str, NI_MAXSERV * sizeof(char), - NI_NUMERICHOST | NI_NUMERICSERV)) - errx(1, "Cannot get port number"); - } - - if((aicode = getaddrinfo(NULL, svcport_str, &hints, + if ((aicode = getaddrinfo(NULL, port_str, &hints, &res)) != 0) { syslog(LOG_ERR, "cannot get local address: %s", gai_strerror(aicode)); @@ -616,6 +792,23 @@ create_service(struct netconfig *nconf) } /* + * Clear out sockets after a failure to bind one of them, so that the + * cycle of socket creation/binding can start anew. + */ +static void +clearout_service(void) +{ + int i; + + for (i = 0; i < sock_fdcnt; i++) { + if (sock_fd[i] >= 0) { + shutdown(sock_fd[i], SHUT_RDWR); + close(sock_fd[i]); + } + } +} + +/* * Look up addresses for the kernel to create transports for. */ void From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 16:23:50 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 70125106564A; Fri, 17 Jun 2011 16:23:50 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5E5FA8FC14; Fri, 17 Jun 2011 16:23:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HGNoaX098060; Fri, 17 Jun 2011 16:23:50 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HGNoaQ098058; Fri, 17 Jun 2011 16:23:50 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201106171623.p5HGNoaQ098058@svn.freebsd.org> From: Rick Macklem Date: Fri, 17 Jun 2011 16:23:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223191 - stable/8/usr.sbin/rpc.statd X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 16:23:50 -0000 Author: rmacklem Date: Fri Jun 17 16:23:50 2011 New Revision: 223191 URL: http://svn.freebsd.org/changeset/base/223191 Log: MFC: r222627 Fix the nfs related daemons so that they don't intermittently fail with "bind: address already in use". This problem was reported to the freebsd-stable@ mailing list on Feb. 19 under the subject heading "statd/lockd startup failure" by george+freebsd at m5p dot com. The problem is that the first combination of {udp,tcp X ipv4,ipv6} would select a port# dynamically, but one of the other three combinations would have that port# already in use. The patch is somewhat involved because it was requested by dougb@ that the four combinations use the same port# wherever possible. The patch splits the create_service() function into two functions. The first goes as far as bind(2) in a loop for up to GETPORT_MAXTRY - 1 times, attempting to use the same port# for all four cases. If these attempts fail, the last attempt allows the 4 cases to use different port #s. After this function has succeeded, the second function, called complete_service(), does the rest of what create_service() did. The three daemons mountd, rpc.lockd and rpc.statd all have a create_service() function that is patched in a similar way. However, create_service() has non-trivial differences for the three daemons that made it impractical to share the same functions between them. Modified: stable/8/usr.sbin/rpc.statd/statd.c Directory Properties: stable/8/usr.sbin/rpc.statd/ (props changed) Modified: stable/8/usr.sbin/rpc.statd/statd.c ============================================================================== --- stable/8/usr.sbin/rpc.statd/statd.c Fri Jun 17 16:21:03 2011 (r223190) +++ stable/8/usr.sbin/rpc.statd/statd.c Fri Jun 17 16:23:50 2011 (r223191) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include #include @@ -55,13 +56,21 @@ __FBSDID("$FreeBSD$"); #include #include "statd.h" +#define GETPORT_MAXTRY 20 /* Max tries to get a port # */ + int debug = 0; /* Controls syslog() calls for debug messages */ char **hosts, *svcport_str = NULL; int nhosts = 0; int xcreated = 0; - -void create_service(struct netconfig *nconf); +static int mallocd_svcport = 0; +static int *sock_fd; +static int sock_fdcnt; +static int sock_fdpos; + +static int create_service(struct netconfig *nconf); +static void complete_service(struct netconfig *nconf, char *port_str); +static void clearout_service(void); static void handle_sigchld(int sig); void out_of_mem(void); @@ -78,6 +87,8 @@ main(int argc, char **argv) char *endptr, **hosts_bak; int have_v6 = 1; int maxrec = RPC_MAXDATASIZE; + int attempt_cnt, port_len, port_pos, ret; + char **port_list; while ((ch = getopt(argc, argv, "dh:p:")) != -1) switch (ch) { @@ -176,6 +187,11 @@ main(int argc, char **argv) hosts[nhosts - 1] = "127.0.0.1"; } + attempt_cnt = 1; + sock_fdcnt = 0; + sock_fd = NULL; + port_list = NULL; + port_len = 0; nc_handle = setnetconfig(); while ((nconf = getnetconfig(nc_handle))) { /* We want to listen only on udp6, tcp6, udp, tcp transports */ @@ -184,11 +200,87 @@ main(int argc, char **argv) if (have_v6 == 0 && strcmp(nconf->nc_protofmly, "inet6") == 0) { /* DO NOTHING */ } else { - create_service(nconf); + ret = create_service(nconf); + if (ret == 1) + /* Ignore this call */ + continue; + if (ret < 0) { + /* + * Failed to bind port, so close off + * all sockets created and try again + * if the port# was dynamically + * assigned via bind(2). + */ + clearout_service(); + if (mallocd_svcport != 0 && + attempt_cnt < GETPORT_MAXTRY) { + free(svcport_str); + svcport_str = NULL; + mallocd_svcport = 0; + } else { + errno = EADDRINUSE; + syslog(LOG_ERR, + "bindresvport_sa: %m"); + exit(1); + } + + /* Start over at the first service. */ + free(sock_fd); + sock_fdcnt = 0; + sock_fd = NULL; + nc_handle = setnetconfig(); + attempt_cnt++; + } else if (mallocd_svcport != 0 && + attempt_cnt == GETPORT_MAXTRY) { + /* + * For the last attempt, allow + * different port #s for each nconf + * by saving the svcport_str and + * setting it back to NULL. + */ + port_list = realloc(port_list, + (port_len + 1) * sizeof(char *)); + if (port_list == NULL) + out_of_mem(); + port_list[port_len++] = svcport_str; + svcport_str = NULL; + mallocd_svcport = 0; + } } } } + + /* + * Successfully bound the ports, so call complete_service() to + * do the rest of the setup on the service(s). + */ + sock_fdpos = 0; + port_pos = 0; + nc_handle = setnetconfig(); + while ((nconf = getnetconfig(nc_handle))) { + /* We want to listen only on udp6, tcp6, udp, tcp transports */ + if (nconf->nc_flag & NC_VISIBLE) { + /* Skip if there's no IPv6 support */ + if (have_v6 == 0 && strcmp(nconf->nc_protofmly, "inet6") == 0) { + /* DO NOTHING */ + } else if (port_list != NULL) { + if (port_pos >= port_len) { + syslog(LOG_ERR, "too many port#s"); + exit(1); + } + complete_service(nconf, port_list[port_pos++]); + } else + complete_service(nconf, svcport_str); + } + } endnetconfig(nc_handle); + free(sock_fd); + if (port_list != NULL) { + for (port_pos = 0; port_pos < port_len; port_pos++) + free(port_list[port_pos]); + free(port_list); + } + init_file("/var/db/statd.status"); /* Note that it is NOT sensible to run this program from inetd - the */ @@ -215,29 +307,30 @@ main(int argc, char **argv) /* * This routine creates and binds sockets on the appropriate - * addresses. It gets called one time for each transport and - * registrates the service with rpcbind on that trasport. + * addresses. It gets called one time for each transport. + * It returns 0 upon success, 1 for ingore the call and -1 to indicate + * bind failed with EADDRINUSE. + * Any file descriptors that have been created are stored in sock_fd and + * the total count of them is maintained in sock_fdcnt. */ -void +static int create_service(struct netconfig *nconf) { struct addrinfo hints, *res = NULL; struct sockaddr_in *sin; struct sockaddr_in6 *sin6; struct __rpc_sockinfo si; - struct netbuf servaddr; - SVCXPRT *transp = NULL; int aicode; int fd; int nhostsbak; int r; - int registered = 0; u_int32_t host_addr[4]; /* IPv4 or IPv6 */ + int mallocd_res; if ((nconf->nc_semantics != NC_TPI_CLTS) && (nconf->nc_semantics != NC_TPI_COTS) && (nconf->nc_semantics != NC_TPI_COTS_ORD)) - return; /* not my type */ + return (1); /* not my type */ /* * XXX - using RPC library internal functions. @@ -245,7 +338,7 @@ create_service(struct netconfig *nconf) if (!__rpc_nconf2sockinfo(nconf, &si)) { syslog(LOG_ERR, "cannot get information for %s", nconf->nc_netid); - return; + return (1); } /* Get rpc.statd's address on this transport */ @@ -261,6 +354,11 @@ create_service(struct netconfig *nconf) nhostsbak = nhosts; while (nhostsbak > 0) { --nhostsbak; + sock_fd = realloc(sock_fd, (sock_fdcnt + 1) * sizeof(int)); + if (sock_fd == NULL) + out_of_mem(); + sock_fd[sock_fdcnt++] = -1; /* Set invalid for now. */ + mallocd_res = 0; /* * XXX - using RPC library internal functions. @@ -274,7 +372,7 @@ create_service(struct netconfig *nconf) case AF_INET: if (inet_pton(AF_INET, hosts[nhostsbak], host_addr) == 1) { - hints.ai_flags &= AI_NUMERICHOST; + hints.ai_flags |= AI_NUMERICHOST; } else { /* * Skip if we have an AF_INET6 address. @@ -289,7 +387,7 @@ create_service(struct netconfig *nconf) case AF_INET6: if (inet_pton(AF_INET6, hosts[nhostsbak], host_addr) == 1) { - hints.ai_flags &= AI_NUMERICHOST; + hints.ai_flags |= AI_NUMERICHOST; } else { /* * Skip if we have an AF_INET address. @@ -313,6 +411,7 @@ create_service(struct netconfig *nconf) res = malloc(sizeof(struct addrinfo)); if (res == NULL) out_of_mem(); + mallocd_res = 1; res->ai_flags = hints.ai_flags; res->ai_family = hints.ai_family; res->ai_protocol = hints.ai_protocol; @@ -326,7 +425,7 @@ create_service(struct netconfig *nconf) sin->sin_addr.s_addr = htonl(INADDR_ANY); res->ai_addr = (struct sockaddr*) sin; res->ai_addrlen = (socklen_t) - sizeof(res->ai_addr); + sizeof(struct sockaddr_in); break; case AF_INET6: sin6 = malloc(sizeof(struct sockaddr_in6)); @@ -336,10 +435,13 @@ create_service(struct netconfig *nconf) sin6->sin6_port = htons(0); sin6->sin6_addr = in6addr_any; res->ai_addr = (struct sockaddr*) sin6; - res->ai_addrlen = (socklen_t) sizeof(res->ai_addr); + res->ai_addrlen = (socklen_t) + sizeof(struct sockaddr_in6); break; default: - break; + syslog(LOG_ERR, "bad addr fam %d", + res->ai_family); + exit(1); } } else { if ((aicode = getaddrinfo(NULL, svcport_str, @@ -348,6 +450,7 @@ create_service(struct netconfig *nconf) "cannot get local address for %s: %s", nconf->nc_netid, gai_strerror(aicode)); + close(fd); continue; } } @@ -357,16 +460,91 @@ create_service(struct netconfig *nconf) syslog(LOG_ERR, "cannot get local address for %s: %s", nconf->nc_netid, gai_strerror(aicode)); + close(fd); continue; } } + /* Store the fd. */ + sock_fd[sock_fdcnt - 1] = fd; + + /* Now, attempt the bind. */ r = bindresvport_sa(fd, res->ai_addr); if (r != 0) { + if (errno == EADDRINUSE && mallocd_svcport != 0) { + if (mallocd_res != 0) { + free(res->ai_addr); + free(res); + } else + freeaddrinfo(res); + return (-1); + } syslog(LOG_ERR, "bindresvport_sa: %m"); exit(1); } + if (svcport_str == NULL) { + svcport_str = malloc(NI_MAXSERV * sizeof(char)); + if (svcport_str == NULL) + out_of_mem(); + mallocd_svcport = 1; + + if (getnameinfo(res->ai_addr, + res->ai_addr->sa_len, NULL, NI_MAXHOST, + svcport_str, NI_MAXSERV * sizeof(char), + NI_NUMERICHOST | NI_NUMERICSERV)) + errx(1, "Cannot get port number"); + } + if (mallocd_res != 0) { + free(res->ai_addr); + free(res); + } else + freeaddrinfo(res); + res = NULL; + } + return (0); +} + +/* + * Called after all the create_service() calls have succeeded, to complete + * the setup and registration. + */ +static void +complete_service(struct netconfig *nconf, char *port_str) +{ + struct addrinfo hints, *res = NULL; + struct __rpc_sockinfo si; + struct netbuf servaddr; + SVCXPRT *transp = NULL; + int aicode, fd, nhostsbak; + int registered = 0; + + if ((nconf->nc_semantics != NC_TPI_CLTS) && + (nconf->nc_semantics != NC_TPI_COTS) && + (nconf->nc_semantics != NC_TPI_COTS_ORD)) + return; /* not my type */ + + /* + * XXX - using RPC library internal functions. + */ + if (!__rpc_nconf2sockinfo(nconf, &si)) { + syslog(LOG_ERR, "cannot get information for %s", + nconf->nc_netid); + return; + } + + nhostsbak = nhosts; + while (nhostsbak > 0) { + --nhostsbak; + if (sock_fdpos >= sock_fdcnt) { + /* Should never happen. */ + syslog(LOG_ERR, "Ran out of socket fd's"); + return; + } + fd = sock_fd[sock_fdpos++]; + if (fd < 0) + continue; + if (nconf->nc_semantics != NC_TPI_CLTS) listen(fd, SOMAXCONN); @@ -397,19 +575,8 @@ create_service(struct netconfig *nconf) hints.ai_socktype = si.si_socktype; hints.ai_protocol = si.si_proto; - if (svcport_str == NULL) { - svcport_str = malloc(NI_MAXSERV * sizeof(char)); - if (svcport_str == NULL) - out_of_mem(); - - if (getnameinfo(res->ai_addr, - res->ai_addr->sa_len, NULL, NI_MAXHOST, - svcport_str, NI_MAXSERV * sizeof(char), - NI_NUMERICHOST | NI_NUMERICSERV)) - errx(1, "Cannot get port number"); - } - if((aicode = getaddrinfo(NULL, svcport_str, &hints, + if ((aicode = getaddrinfo(NULL, port_str, &hints, &res)) != 0) { syslog(LOG_ERR, "cannot get local address: %s", gai_strerror(aicode)); @@ -428,6 +595,23 @@ create_service(struct netconfig *nconf) } /* end while */ } +/* + * Clear out sockets after a failure to bind one of them, so that the + * cycle of socket creation/binding can start anew. + */ +static void +clearout_service(void) +{ + int i; + + for (i = 0; i < sock_fdcnt; i++) { + if (sock_fd[i] >= 0) { + shutdown(sock_fd[i], SHUT_RDWR); + close(sock_fd[i]); + } + } +} + static void usage() { From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 18:16:23 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CC5DD1065674; Fri, 17 Jun 2011 18:16:23 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BBA5E8FC21; Fri, 17 Jun 2011 18:16:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HIGN6L001630; Fri, 17 Jun 2011 18:16:23 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HIGNaH001628; Fri, 17 Jun 2011 18:16:23 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201106171816.p5HIGNaH001628@svn.freebsd.org> From: Dmitry Chagin Date: Fri, 17 Jun 2011 18:16:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223194 - stable/8/usr.bin/kdump X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 18:16:23 -0000 Author: dchagin Date: Fri Jun 17 18:16:23 2011 New Revision: 223194 URL: http://svn.freebsd.org/changeset/base/223194 Log: MFC r222768: Fix regex for ptraceopname(). PR: bin/157663 Submitted by: jason wright Modified: stable/8/usr.bin/kdump/mksubr Directory Properties: stable/8/usr.bin/kdump/ (props changed) Modified: stable/8/usr.bin/kdump/mksubr ============================================================================== --- stable/8/usr.bin/kdump/mksubr Fri Jun 17 17:55:37 2011 (r223193) +++ stable/8/usr.bin/kdump/mksubr Fri Jun 17 18:16:23 2011 (r223194) @@ -343,7 +343,7 @@ auto_if_type "sockfamilyname" "AF_[[:aln auto_if_type "sockipprotoname" "IPPROTO_[[:alnum:]]+[[:space:]]+" "netinet/in.h" auto_switch_type "sockoptname" "SO_[A-Z]+[[:space:]]+0x[0-9]+" "sys/socket.h" auto_switch_type "socktypename" "SOCK_[A-Z]+[[:space:]]+[1-9]+[0-9]*" "sys/socket.h" -auto_switch_type "ptraceopname" "PT_[[:alnum:]]+[[:space:]]+[0-9]+" "sys/ptrace.h" +auto_switch_type "ptraceopname" "PT_[[:alnum:]_]+[[:space:]]+[0-9]+" "sys/ptrace.h" cat <<_EOF_ /* From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 18:56:51 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5F3FD1065670; Fri, 17 Jun 2011 18:56:51 +0000 (UTC) (envelope-from joerg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4F43C8FC0A; Fri, 17 Jun 2011 18:56:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HIupDD002931; Fri, 17 Jun 2011 18:56:51 GMT (envelope-from joerg@svn.freebsd.org) Received: (from joerg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HIuplN002929; Fri, 17 Jun 2011 18:56:51 GMT (envelope-from joerg@svn.freebsd.org) Message-Id: <201106171856.p5HIuplN002929@svn.freebsd.org> From: Joerg Wunsch Date: Fri, 17 Jun 2011 18:56:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223197 - head/usr.sbin/fdread X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 18:56:51 -0000 Author: joerg Date: Fri Jun 17 18:56:51 2011 New Revision: 223197 URL: http://svn.freebsd.org/changeset/base/223197 Log: Open the floppy disk device with O_RDONLY rather than O_RDWR. After all, this is the fd*read* command, and thus should be able to read even write-protected disks. MFC after: 1 week Modified: head/usr.sbin/fdread/fdread.c Modified: head/usr.sbin/fdread/fdread.c ============================================================================== --- head/usr.sbin/fdread/fdread.c Fri Jun 17 18:49:59 2011 (r223196) +++ head/usr.sbin/fdread/fdread.c Fri Jun 17 18:56:51 2011 (r223197) @@ -149,7 +149,7 @@ main(int argc, char **argv) err(EX_OSERR, "cannot create output file %s", fname); } - if ((fd = open(_devname, O_RDWR)) == -1) + if ((fd = open(_devname, O_RDONLY)) == -1) err(EX_OSERR, "cannot open device %s", _devname); return (numids? doreadid(fd, numids, trackno): doread(fd, of, _devname)); From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 19:40:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1233) id C4E081065677; Fri, 17 Jun 2011 19:40:16 +0000 (UTC) Date: Fri, 17 Jun 2011 19:40:16 +0000 From: Alexander Best To: Joerg Wunsch Message-ID: <20110617194016.GA67349@freebsd.org> References: <201106171856.p5HIuplN002929@svn.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201106171856.p5HIuplN002929@svn.freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223197 - head/usr.sbin/fdread X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 19:40:16 -0000 On Fri Jun 17 11, Joerg Wunsch wrote: > Author: joerg > Date: Fri Jun 17 18:56:51 2011 > New Revision: 223197 > URL: http://svn.freebsd.org/changeset/base/223197 any thoughts about switching the default from WITH_FLOPPY to WITHOUT_FLOPPY? i don't think too many people are using floppy disks nowadays. cheers. alex > > Log: > Open the floppy disk device with O_RDONLY rather than O_RDWR. After > all, this is the fd*read* command, and thus should be able to read > even write-protected disks. > > MFC after: 1 week > > Modified: > head/usr.sbin/fdread/fdread.c > > Modified: head/usr.sbin/fdread/fdread.c > ============================================================================== > --- head/usr.sbin/fdread/fdread.c Fri Jun 17 18:49:59 2011 (r223196) > +++ head/usr.sbin/fdread/fdread.c Fri Jun 17 18:56:51 2011 (r223197) > @@ -149,7 +149,7 @@ main(int argc, char **argv) > err(EX_OSERR, "cannot create output file %s", fname); > } > > - if ((fd = open(_devname, O_RDWR)) == -1) > + if ((fd = open(_devname, O_RDONLY)) == -1) > err(EX_OSERR, "cannot open device %s", _devname); > > return (numids? doreadid(fd, numids, trackno): doread(fd, of, _devname)); -- a13x From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 20:06:52 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BFDAA106564A; Fri, 17 Jun 2011 20:06:52 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AFAB38FC13; Fri, 17 Jun 2011 20:06:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HK6qrc005003; Fri, 17 Jun 2011 20:06:52 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HK6qZs005000; Fri, 17 Jun 2011 20:06:52 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201106172006.p5HK6qZs005000@svn.freebsd.org> From: John Baldwin Date: Fri, 17 Jun 2011 20:06:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223198 - head/sys/dev/e1000 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 20:06:52 -0000 Author: jhb Date: Fri Jun 17 20:06:52 2011 New Revision: 223198 URL: http://svn.freebsd.org/changeset/base/223198 Log: - Use a dedicated task to handle deferred transmits from the if_transmit method instead of reusing the existing per-queue interrupt task. Reusing the per-queue interrupt task could result in both an interrupt thread and the taskqueue thread trying to handle received packets on a single queue resulting in out-of-order packet processing. - Don't define igb_start() at all on 8.0 and where if_transmit is used. Replace last remaining call to igb_start() with a loop to kick off transmit on each queue instead. - Call ether_ifdetach() earlier in igb_detach(). - Drain tasks and free taskqueues during igb_detach(). Reviewed by: jfv MFC after: 1 week Modified: head/sys/dev/e1000/if_igb.c head/sys/dev/e1000/if_igb.h Modified: head/sys/dev/e1000/if_igb.c ============================================================================== --- head/sys/dev/e1000/if_igb.c Fri Jun 17 18:56:51 2011 (r223197) +++ head/sys/dev/e1000/if_igb.c Fri Jun 17 20:06:52 2011 (r223198) @@ -170,13 +170,15 @@ static int igb_detach(device_t); static int igb_shutdown(device_t); static int igb_suspend(device_t); static int igb_resume(device_t); -static void igb_start(struct ifnet *); -static void igb_start_locked(struct tx_ring *, struct ifnet *ifp); #if __FreeBSD_version >= 800000 static int igb_mq_start(struct ifnet *, struct mbuf *); static int igb_mq_start_locked(struct ifnet *, struct tx_ring *, struct mbuf *); static void igb_qflush(struct ifnet *); +static void igb_deferred_mq_start(void *, int); +#else +static void igb_start(struct ifnet *); +static void igb_start_locked(struct tx_ring *, struct ifnet *ifp); #endif static int igb_ioctl(struct ifnet *, u_long, caddr_t); static void igb_init(void *); @@ -693,6 +695,8 @@ igb_detach(device_t dev) return (EBUSY); } + ether_ifdetach(adapter->ifp); + if (adapter->led_dev != NULL) led_destroy(adapter->led_dev); @@ -724,8 +728,6 @@ igb_detach(device_t dev) if (adapter->vlan_detach != NULL) EVENTHANDLER_DEREGISTER(vlan_unconfig, adapter->vlan_detach); - ether_ifdetach(adapter->ifp); - callout_drain(&adapter->timer); igb_free_pci_resources(adapter); @@ -784,14 +786,27 @@ igb_resume(device_t dev) { struct adapter *adapter = device_get_softc(dev); struct ifnet *ifp = adapter->ifp; +#if __FreeBSD_version >= 800000 + struct tx_ring *txr = adapter->tx_rings; +#endif IGB_CORE_LOCK(adapter); igb_init_locked(adapter); igb_init_manageability(adapter); if ((ifp->if_flags & IFF_UP) && - (ifp->if_drv_flags & IFF_DRV_RUNNING)) + (ifp->if_drv_flags & IFF_DRV_RUNNING)) { +#if __FreeBSD_version < 800000 igb_start(ifp); +#else + for (int i = 0; i < adapter->num_queues; i++, txr++) { + IGB_TX_LOCK(txr); + if (!drbr_empty(ifp, txr->br)) + igb_mq_start_locked(ifp, txr, NULL); + IGB_TX_UNLOCK(txr); + } +#endif + } IGB_CORE_UNLOCK(adapter); @@ -799,6 +814,7 @@ igb_resume(device_t dev) } +#if __FreeBSD_version < 800000 /********************************************************************* * Transmit entry point * @@ -875,7 +891,7 @@ igb_start(struct ifnet *ifp) return; } -#if __FreeBSD_version >= 800000 +#else /* __FreeBSD_version >= 800000 */ /* ** Multiqueue Transmit driver ** @@ -900,7 +916,7 @@ igb_mq_start(struct ifnet *ifp, struct m IGB_TX_UNLOCK(txr); } else { err = drbr_enqueue(ifp, txr->br, m); - taskqueue_enqueue(que->tq, &que->que_task); + taskqueue_enqueue(que->tq, &txr->txq_task); } return (err); @@ -961,6 +977,22 @@ igb_mq_start_locked(struct ifnet *ifp, s } /* + * Called from a taskqueue to drain queued transmit packets. + */ +static void +igb_deferred_mq_start(void *arg, int pending) +{ + struct tx_ring *txr = arg; + struct adapter *adapter = txr->adapter; + struct ifnet *ifp = adapter->ifp; + + IGB_TX_LOCK(txr); + if (!drbr_empty(ifp, txr->br)) + igb_mq_start_locked(ifp, txr, NULL); + IGB_TX_UNLOCK(txr); +} + +/* ** Flush all ring buffers */ static void @@ -978,7 +1010,7 @@ igb_qflush(struct ifnet *ifp) } if_qflush(ifp); } -#endif /* __FreeBSD_version >= 800000 */ +#endif /* __FreeBSD_version < 800000 */ /********************************************************************* * Ioctl entry point @@ -2180,6 +2212,7 @@ igb_allocate_legacy(struct adapter *adap { device_t dev = adapter->dev; struct igb_queue *que = adapter->queues; + struct tx_ring *txr = adapter->tx_rings; int error, rid = 0; /* Turn off all interrupts */ @@ -2198,6 +2231,10 @@ igb_allocate_legacy(struct adapter *adap return (ENXIO); } +#if __FreeBSD_version >= 800000 + TASK_INIT(&txr->txq_task, 0, igb_deferred_mq_start, txr); +#endif + /* * Try allocating a fast interrupt and the associated deferred * processing contexts. @@ -2268,9 +2305,13 @@ igb_allocate_msix(struct adapter *adapte */ if (adapter->num_queues > 1) bus_bind_intr(dev, que->res, i); +#if __FreeBSD_version >= 800000 + TASK_INIT(&que->txr->txq_task, 0, igb_deferred_mq_start, + que->txr); +#endif /* Make tasklet for deferred handling */ TASK_INIT(&que->que_task, 0, igb_handle_que, que); - que->tq = taskqueue_create_fast("igb_que", M_NOWAIT, + que->tq = taskqueue_create("igb_que", M_NOWAIT, taskqueue_thread_enqueue, &que->tq); taskqueue_start_threads(&que->tq, 1, PI_NET, "%s que", device_get_nameunit(adapter->dev)); @@ -2477,13 +2518,24 @@ igb_free_pci_resources(struct adapter *a else (adapter->msix != 0) ? (rid = 1):(rid = 0); + que = adapter->queues; if (adapter->tag != NULL) { + taskqueue_drain(que->tq, &adapter->link_task); bus_teardown_intr(dev, adapter->res, adapter->tag); adapter->tag = NULL; } if (adapter->res != NULL) bus_release_resource(dev, SYS_RES_IRQ, rid, adapter->res); + for (int i = 0; i < adapter->num_queues; i++, que++) { + if (que->tq != NULL) { +#if __FreeBSD_version >= 800000 + taskqueue_drain(que->tq, &que->txr->txq_task); +#endif + taskqueue_drain(que->tq, &que->que_task); + taskqueue_free(que->tq); + } + } mem: if (adapter->msix) pci_release_msi(dev); @@ -2744,10 +2796,11 @@ igb_setup_interface(device_t dev, struct ifp->if_softc = adapter; ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ifp->if_ioctl = igb_ioctl; - ifp->if_start = igb_start; #if __FreeBSD_version >= 800000 ifp->if_transmit = igb_mq_start; ifp->if_qflush = igb_qflush; +#else + ifp->if_start = igb_start; #endif IFQ_SET_MAXLEN(&ifp->if_snd, adapter->num_tx_desc - 1); ifp->if_snd.ifq_drv_maxlen = adapter->num_tx_desc - 1; Modified: head/sys/dev/e1000/if_igb.h ============================================================================== --- head/sys/dev/e1000/if_igb.h Fri Jun 17 18:56:51 2011 (r223197) +++ head/sys/dev/e1000/if_igb.h Fri Jun 17 20:06:52 2011 (r223198) @@ -297,6 +297,7 @@ struct tx_ring { struct buf_ring *br; #endif bus_dma_tag_t txtag; + struct task txq_task; u32 bytes; u32 packets; From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 20:25:40 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6DC9C106564A; Fri, 17 Jun 2011 20:25:40 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 4547B8FC18; Fri, 17 Jun 2011 20:25:40 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id EBC1C46B1A; Fri, 17 Jun 2011 16:25:39 -0400 (EDT) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 7BCA38A01F; Fri, 17 Jun 2011 16:25:39 -0400 (EDT) From: John Baldwin To: src-committers@freebsd.org Date: Fri, 17 Jun 2011 16:25:02 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110325; KDE/4.5.5; amd64; ; ) References: <201106172006.p5HK6qZs005000@svn.freebsd.org> In-Reply-To: <201106172006.p5HK6qZs005000@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201106171625.03191.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Fri, 17 Jun 2011 16:25:39 -0400 (EDT) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org Subject: Re: svn commit: r223198 - head/sys/dev/e1000 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 20:25:40 -0000 On Friday, June 17, 2011 4:06:52 pm John Baldwin wrote: > Author: jhb > Date: Fri Jun 17 20:06:52 2011 > New Revision: 223198 > URL: http://svn.freebsd.org/changeset/base/223198 > > Log: > - Use a dedicated task to handle deferred transmits from the if_transmit > method instead of reusing the existing per-queue interrupt task. > Reusing the per-queue interrupt task could result in both an interrupt > thread and the taskqueue thread trying to handle received packets on a > single queue resulting in out-of-order packet processing. > - Don't define igb_start() at all on 8.0 and where if_transmit is used. > Replace last remaining call to igb_start() with a loop to kick off > transmit on each queue instead. > - Call ether_ifdetach() earlier in igb_detach(). > - Drain tasks and free taskqueues during igb_detach(). > > Reviewed by: jfv > MFC after: 1 week > > Modified: > head/sys/dev/e1000/if_igb.c > head/sys/dev/e1000/if_igb.h FYI, I ran into a workload where the concurrent reception of packets was breaking TCP. Specifically, the two threads could both attempt to process ACKs for a connection in the syncache. The first thread would "win" and create a connection, but the second thread had already done a pcb lookup and found the listen socket before waiting for a write lock on the TCP pcbinfo. As a result, the second thread also attempted to create a new connection based on the syncookie. However, it failed in in_pcbconnect_setup() with EADDRINUSE when it found the first connection in the PCB hash. When it failed, it dropped the ACK and sent a RST to the remote end causing the other end to drop the connection silently. Unfortunately, the first thread had created a valid socket which was returned to userland via accept(). That socket contained all the inflight data sent by the remote end before it received the RST. The net effect was that a user app would see a connection that only sent part of its data and then returned EOF. Note that a truly bidirectional application-level protocol would still break in this case with an EPIPE/SIGPIPE. However, if the remote peer is just opening a socket, dumping some data into it and then closing it without reading any data, it may close the socket before the RST arrives and thus encounter no errors completely unaware that the data it just sent over TCP was partially (or completely) lost. Note that that can still happen when using the syncache since we may fail to create a socket when expanding a syncache entry due to resource exhaustion giving similarly unpleasant failure semantics (i.e. the remote user app doesn't get an error and has no clue that their data is in fact lost). -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 20:47:44 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E6C73106566C; Fri, 17 Jun 2011 20:47:44 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BCAEC8FC08; Fri, 17 Jun 2011 20:47:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HKli06006340; Fri, 17 Jun 2011 20:47:44 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HKli7L006335; Fri, 17 Jun 2011 20:47:44 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201106172047.p5HKli7L006335@svn.freebsd.org> From: Ed Schouten Date: Fri, 17 Jun 2011 20:47:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223201 - in head: etc/periodic/monthly tools/build/mk tools/build/options usr.sbin X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 20:47:45 -0000 Author: ed Date: Fri Jun 17 20:47:44 2011 New Revision: 223201 URL: http://svn.freebsd.org/changeset/base/223201 Log: Don't omit ac(8) as part of WITHOUT_ACCT. The WITHOUT_ACCT switch is supposed to omit tools related to process accounting, namely accton and sa. ac(8) is just a simple tool that prints statistics based on data in the utx.log database. It has nothing to do with the former. Modified: head/etc/periodic/monthly/Makefile head/tools/build/mk/OptionalObsoleteFiles.inc head/tools/build/options/WITHOUT_ACCT head/usr.sbin/Makefile Modified: head/etc/periodic/monthly/Makefile ============================================================================== --- head/etc/periodic/monthly/Makefile Fri Jun 17 20:19:11 2011 (r223200) +++ head/etc/periodic/monthly/Makefile Fri Jun 17 20:47:44 2011 (r223201) @@ -2,12 +2,7 @@ .include -FILES= 999.local - -# NB: keep these sorted by MK_* knobs - -.if ${MK_ACCT} != "no" -FILES+= 200.accounting -.endif +FILES= 200.accounting \ + 999.local .include Modified: head/tools/build/mk/OptionalObsoleteFiles.inc ============================================================================== --- head/tools/build/mk/OptionalObsoleteFiles.inc Fri Jun 17 20:19:11 2011 (r223200) +++ head/tools/build/mk/OptionalObsoleteFiles.inc Fri Jun 17 20:47:44 2011 (r223201) @@ -8,10 +8,8 @@ .if ${MK_ACCT} == no OLD_FILES+=etc/periodic/daily/310.accounting OLD_FILES+=etc/periodic/monthly/200.accounting -OLD_FILES+=usr/sbin/ac OLD_FILES+=usr/sbin/accton OLD_FILES+=usr/sbin/sa -OLD_FILES+=usr/share/man/man8/ac.8.gz OLD_FILES+=usr/share/man/man8/accton.8.gz OLD_FILES+=usr/share/man/man8/sa.8.gz .endif Modified: head/tools/build/options/WITHOUT_ACCT ============================================================================== --- head/tools/build/options/WITHOUT_ACCT Fri Jun 17 20:19:11 2011 (r223200) +++ head/tools/build/options/WITHOUT_ACCT Fri Jun 17 20:47:44 2011 (r223201) @@ -1,5 +1,5 @@ .\" $FreeBSD$ Set to not build process accounting tools such as -.Xr ac 8 +.Xr accton 8 and -.Xr accton 8 . +.Xr sa 8 . Modified: head/usr.sbin/Makefile ============================================================================== --- head/usr.sbin/Makefile Fri Jun 17 20:19:11 2011 (r223200) +++ head/usr.sbin/Makefile Fri Jun 17 20:47:44 2011 (r223201) @@ -3,7 +3,8 @@ .include -SUBDIR= adduser \ +SUBDIR= ac \ + adduser \ arp \ bootparamd \ burncd \ @@ -99,7 +100,6 @@ SUBDIR= adduser \ # NB: keep these sorted by MK_* knobs .if ${MK_ACCT} != "no" -SUBDIR+= ac SUBDIR+= accton SUBDIR+= sa .endif From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 20:49:30 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 60AD81065670; Fri, 17 Jun 2011 20:49:30 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 50F2F8FC1D; Fri, 17 Jun 2011 20:49:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HKnUuR006423; Fri, 17 Jun 2011 20:49:30 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HKnU49006421; Fri, 17 Jun 2011 20:49:30 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201106172049.p5HKnU49006421@svn.freebsd.org> From: Ed Schouten Date: Fri, 17 Jun 2011 20:49:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223202 - head/share/man/man5 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 20:49:30 -0000 Author: ed Date: Fri Jun 17 20:49:30 2011 New Revision: 223202 URL: http://svn.freebsd.org/changeset/base/223202 Log: Update manpage. Modified: head/share/man/man5/src.conf.5 Modified: head/share/man/man5/src.conf.5 ============================================================================== --- head/share/man/man5/src.conf.5 Fri Jun 17 20:47:44 2011 (r223201) +++ head/share/man/man5/src.conf.5 Fri Jun 17 20:49:30 2011 (r223202) @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. .\" from FreeBSD: head/tools/build/options/makeman 221733 2011-05-10 13:01:11Z ru .\" $FreeBSD$ -.Dd May 22, 2011 +.Dd June 17, 2011 .Dt SRC.CONF 5 .Os .Sh NAME @@ -78,11 +78,11 @@ The following list provides a name and s that can be used for source builds. .Bl -tag -width indent .It Va WITHOUT_ACCT -.\" from FreeBSD: head/tools/build/options/WITHOUT_ACCT 221540 2011-05-06 19:13:03Z ru +.\" from FreeBSD: head/tools/build/options/WITHOUT_ACCT 223201 2011-06-17 20:47:44Z ed Set to not build process accounting tools such as -.Xr ac 8 +.Xr accton 8 and -.Xr accton 8 . +.Xr sa 8 . .It Va WITHOUT_ACPI .\" from FreeBSD: head/tools/build/options/WITHOUT_ACPI 156932 2006-03-21 07:50:50Z ru Set to not build @@ -225,8 +225,8 @@ Set to not build the boot blocks and loa Set to not build the BSD licensed version of cpio based on .Xr libarchive 3 . .It Va WITH_BSD_GREP -.\" from FreeBSD: head/tools/build/options/WITH_BSD_GREP 211701 2010-08-23 10:04:26Z gabor -Build BSD-licensed grep instead of GNU grep. +.\" from FreeBSD: head/tools/build/options/WITH_BSD_GREP 222273 2011-05-25 01:04:12Z obrien +Install BSD-licensed grep as '[ef]grep' instead of GNU grep. .It Va WITHOUT_BSNMP .\" from FreeBSD: head/tools/build/options/WITHOUT_BSNMP 183306 2008-09-23 16:15:42Z sam Set to not build or install From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 21:16:28 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D373A1065670; Fri, 17 Jun 2011 21:16:27 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C33218FC0C; Fri, 17 Jun 2011 21:16:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HLGRiG007407; Fri, 17 Jun 2011 21:16:27 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HLGRnM007405; Fri, 17 Jun 2011 21:16:27 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106172116.p5HLGRnM007405@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 17 Jun 2011 21:16:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223206 - head/lib/libc/gen X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 21:16:28 -0000 Author: jilles Date: Fri Jun 17 21:16:27 2011 New Revision: 223206 URL: http://svn.freebsd.org/changeset/base/223206 Log: posix_spawn(3): Document r222511 (trying to close already closed fd). MFC after: 1 week Modified: head/lib/libc/gen/posix_spawn.3 Modified: head/lib/libc/gen/posix_spawn.3 ============================================================================== --- head/lib/libc/gen/posix_spawn.3 Fri Jun 17 21:03:21 2011 (r223205) +++ head/lib/libc/gen/posix_spawn.3 Fri Jun 17 21:16:27 2011 (r223206) @@ -34,7 +34,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 24, 2008 +.Dd June 17, 2011 .Dt POSIX_SPAWN 3 .Os .Sh NAME @@ -384,29 +384,28 @@ the child process exits with exit status .It If the .Fa file_actions -argument is not NULL, and specifies any close, dup2, or open actions to be +argument is not NULL, and specifies any dup2 or open actions to be performed, and if .Fn posix_spawn or .Fn posix_spawnp fails for any of the reasons that would cause -.Fn close , -.Fn dup2 , +.Fn dup2 or .Fn open to fail, an error value is returned as described by -.Fn close , -.Fn dup2 , +.Fn dup2 and .Fn open , respectively (or, if the error occurs after the calling process successfully returns, the child process exits with exit status 127). An open file action may, by itself, result in any of the errors described by -.Fn close -or .Fn dup2 , in addition to those described by .Fn open . +This implementation ignores any errors from +.Fn close , +including trying to close a descriptor that is not open. .El .Sh SEE ALSO .Xr close 2 , @@ -443,7 +442,13 @@ The and .Fn posix_spawnp functions conform to -.St -p1003.1-2001 . +.St -p1003.1-2001 , +except that they ignore all errors from +.Fn close . +A future update of the Standard is expected to require that these functions +not fail because a file descriptor to be closed (via +.Fn posix_spawn_file_actions_addclose ) +is not open. .Sh HISTORY The .Fn posix_spawn From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 21:19:02 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3188B1065677; Fri, 17 Jun 2011 21:19:02 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2100F8FC0C; Fri, 17 Jun 2011 21:19:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HLJ2sA007535; Fri, 17 Jun 2011 21:19:02 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HLJ1TM007532; Fri, 17 Jun 2011 21:19:01 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201106172119.p5HLJ1TM007532@svn.freebsd.org> From: John Baldwin Date: Fri, 17 Jun 2011 21:19:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223207 - head/sys/dev/acpica X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 21:19:02 -0000 Author: jhb Date: Fri Jun 17 21:19:01 2011 New Revision: 223207 URL: http://svn.freebsd.org/changeset/base/223207 Log: Don't create a device_t object or parse current resources (via _CRS) for ACPI Device() objects that do not have any device IDs available via the _HID or _CID methods. Without a device ID a device driver cannot attach to the device anyway. Namespace objects that are devices but not of type ACPI_TYPE_DEVICE are not affected. A few BIOSes have also attached a _CRS method to a PCI device to allocate resources that are not managed via a BAR. With the previous code those resources are allocated from acpi0 directly which can interfere with the new PCI-PCI bridge driver (since the PCI device in question may be behind a bridge and its resources should be allocated from that bridge's windows instead). The resources were also orphaned and and would end up associated with some other random device whose device_t reused the pointer of the original ACPI-enumerated device (after it was free'd by the ACPI PCI bus driver) in devinfo output which was confusing. If we want to handle _CRS on PCI devices we can adjust the ACPI PCI bus driver to do that in the future and associate the resources with the proper device object respecting PCI-PCI bridges, etc. Note that with this change the ACPI PCI bus driver no longer has to delete ACPI-enumerated device_t devices that mirror PCI devices since they should in general not exist. There are rare cases when a BIOS will give a PCI device a _HID (e.g. I've seen a PCI-ISA bridge given a _HID for a system resource device). In that case we leave both the ACPI and PCI-enumerated device_t objects around just as in the previous code. Modified: head/sys/dev/acpica/acpi.c head/sys/dev/acpica/acpi_pci.c Modified: head/sys/dev/acpica/acpi.c ============================================================================== --- head/sys/dev/acpica/acpi.c Fri Jun 17 21:16:27 2011 (r223206) +++ head/sys/dev/acpica/acpi.c Fri Jun 17 21:19:01 2011 (r223207) @@ -151,6 +151,7 @@ static ACPI_STATUS acpi_sleep_disable(st static ACPI_STATUS acpi_EnterSleepState(struct acpi_softc *sc, int state); static void acpi_shutdown_final(void *arg, int howto); static void acpi_enable_fixed_events(struct acpi_softc *sc); +static BOOLEAN acpi_has_hid(ACPI_HANDLE handle); static int acpi_wake_sleep_prep(ACPI_HANDLE handle, int sstate); static int acpi_wake_run_prep(ACPI_HANDLE handle, int sstate); static int acpi_wake_prep_walk(int sstate); @@ -1855,6 +1856,13 @@ acpi_probe_child(ACPI_HANDLE handle, UIN break; if (acpi_parse_prw(handle, &prw) == 0) AcpiSetupGpeForWake(handle, prw.gpe_handle, prw.gpe_bit); + + /* + * Ignore devices that do not have a _HID or _CID. They should + * be discovered by other buses (e.g. the PCI bus driver). + */ + if (!acpi_has_hid(handle)) + break; /* FALLTHROUGH */ case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_THERMAL: @@ -2043,6 +2051,30 @@ acpi_BatteryIsPresent(device_t dev) } /* + * Returns true if a device has at least one valid device ID. + */ +static BOOLEAN +acpi_has_hid(ACPI_HANDLE h) +{ + ACPI_DEVICE_INFO *devinfo; + BOOLEAN ret; + + if (h == NULL || + ACPI_FAILURE(AcpiGetObjectInfo(h, &devinfo))) + return (FALSE); + + ret = FALSE; + if ((devinfo->Valid & ACPI_VALID_HID) != 0) + ret = TRUE; + else if ((devinfo->Valid & ACPI_VALID_CID) != 0) + if (devinfo->CompatibleIdList.Count > 0) + ret = TRUE; + + AcpiOsFree(devinfo); + return (ret); +} + +/* * Match a HID string against a handle */ BOOLEAN Modified: head/sys/dev/acpica/acpi_pci.c ============================================================================== --- head/sys/dev/acpica/acpi_pci.c Fri Jun 17 21:16:27 2011 (r223206) +++ head/sys/dev/acpica/acpi_pci.c Fri Jun 17 21:19:01 2011 (r223207) @@ -209,38 +209,24 @@ acpi_pci_update_device(ACPI_HANDLE handl device_t child; /* - * Lookup and remove the unused device that acpi0 creates when it walks - * the namespace creating devices. + * Occasionally a PCI device may show up as an ACPI device + * with a _HID. (For example, the TabletPC TC1000 has a + * second PCI-ISA bridge that has a _HID for an + * acpi_sysresource device.) In that case, leave ACPI-CA's + * device data pointing at the ACPI-enumerated device. */ child = acpi_get_device(handle); if (child != NULL) { - if (device_is_alive(child)) { - /* - * The TabletPC TC1000 has a second PCI-ISA bridge - * that has a _HID for an acpi_sysresource device. - * In that case, leave ACPI-CA's device data pointing - * at the ACPI-enumerated device. - */ - device_printf(child, - "Conflicts with PCI device %d:%d:%d\n", - pci_get_bus(pci_child), pci_get_slot(pci_child), - pci_get_function(pci_child)); - return; - } KASSERT(device_get_parent(child) == devclass_get_device(devclass_find("acpi"), 0), ("%s: child (%s)'s parent is not acpi0", __func__, acpi_name(handle))); - device_delete_child(device_get_parent(child), child); + return; } /* * Update ACPI-CA to use the PCI enumerated device_t for this handle. */ - status = AcpiDetachData(handle, acpi_fake_objhandler); - if (ACPI_FAILURE(status)) - printf("WARNING: Unable to detach object data from %s - %s\n", - acpi_name(handle), AcpiFormatException(status)); status = AcpiAttachData(handle, acpi_fake_objhandler, pci_child); if (ACPI_FAILURE(status)) printf("WARNING: Unable to attach object data to %s - %s\n", From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 21:20:42 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 02C85106566C; Fri, 17 Jun 2011 21:20:42 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E71F58FC19; Fri, 17 Jun 2011 21:20:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HLKfvV007631; Fri, 17 Jun 2011 21:20:41 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HLKfVo007628; Fri, 17 Jun 2011 21:20:41 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201106172120.p5HLKfVo007628@svn.freebsd.org> From: Ed Schouten Date: Fri, 17 Jun 2011 21:20:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223208 - head/tools/build/mk X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 21:20:42 -0000 Author: ed Date: Fri Jun 17 21:20:41 2011 New Revision: 223208 URL: http://svn.freebsd.org/changeset/base/223208 Log: Don't remove the periodic script for ac(8) when setting WITHOUT_ACCT. Modified: head/tools/build/mk/OptionalObsoleteFiles.inc Modified: head/tools/build/mk/OptionalObsoleteFiles.inc ============================================================================== --- head/tools/build/mk/OptionalObsoleteFiles.inc Fri Jun 17 21:19:01 2011 (r223207) +++ head/tools/build/mk/OptionalObsoleteFiles.inc Fri Jun 17 21:20:41 2011 (r223208) @@ -7,7 +7,6 @@ .if ${MK_ACCT} == no OLD_FILES+=etc/periodic/daily/310.accounting -OLD_FILES+=etc/periodic/monthly/200.accounting OLD_FILES+=usr/sbin/accton OLD_FILES+=usr/sbin/sa OLD_FILES+=usr/share/man/man8/accton.8.gz From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 21:30:21 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B3A1B1065673; Fri, 17 Jun 2011 21:30:21 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9925D8FC18; Fri, 17 Jun 2011 21:30:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HLULoU008150; Fri, 17 Jun 2011 21:30:21 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HLULOm008143; Fri, 17 Jun 2011 21:30:21 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201106172130.p5HLULOm008143@svn.freebsd.org> From: Ed Schouten Date: Fri, 17 Jun 2011 21:30:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223209 - in head: etc/periodic/monthly share/mk tools/build/mk tools/build/options usr.bin usr.sbin X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 21:30:21 -0000 Author: ed Date: Fri Jun 17 21:30:21 2011 New Revision: 223209 URL: http://svn.freebsd.org/changeset/base/223209 Log: Add WITHOUT_UTMPX switch to the build system. This knob removes the tools that are exclusively used to view and maintain the databases maintained by utmpx, namely last, users, who, wtmpcvt, ac, lastlogin and utxrm. The tool w is not in this list, because it has some other functionality which is unrelated to utmpx; it is hardlinked to the uptime tool. Added: head/tools/build/options/WITHOUT_UTMPX (contents, props changed) Modified: head/etc/periodic/monthly/Makefile head/share/mk/bsd.own.mk head/tools/build/mk/OptionalObsoleteFiles.inc head/usr.bin/Makefile head/usr.sbin/Makefile Modified: head/etc/periodic/monthly/Makefile ============================================================================== --- head/etc/periodic/monthly/Makefile Fri Jun 17 21:20:41 2011 (r223208) +++ head/etc/periodic/monthly/Makefile Fri Jun 17 21:30:21 2011 (r223209) @@ -2,7 +2,12 @@ .include -FILES= 200.accounting \ - 999.local +FILES= 999.local + +# NB: keep these sorted by MK_* knobs + +.if ${MK_UTMPX} != "no" +FILES+= 200.accounting +.endif .include Modified: head/share/mk/bsd.own.mk ============================================================================== --- head/share/mk/bsd.own.mk Fri Jun 17 21:20:41 2011 (r223208) +++ head/share/mk/bsd.own.mk Fri Jun 17 21:30:21 2011 (r223209) @@ -383,6 +383,7 @@ __DEFAULT_YES_OPTIONS = \ TEXTPROC \ TOOLCHAIN \ USB \ + UTMPX \ WIRELESS \ WPA_SUPPLICANT_EAPOL \ ZFS \ Modified: head/tools/build/mk/OptionalObsoleteFiles.inc ============================================================================== --- head/tools/build/mk/OptionalObsoleteFiles.inc Fri Jun 17 21:20:41 2011 (r223208) +++ head/tools/build/mk/OptionalObsoleteFiles.inc Fri Jun 17 21:30:21 2011 (r223209) @@ -3326,6 +3326,24 @@ OLD_FILES+=usr/share/man/man8/telnetd.8. # to be filled in #.endif +.if ${MK_UTMPX} == no +OLD_FILES+=etc/periodic/monthly/200.accounting +OLD_FILES+=usr/bin/last +OLD_FILES+=usr/bin/users +OLD_FILES+=usr/bin/who +OLD_FILES+=usr/bin/wtmpcvt +OLD_FILES+=usr/sbin/ac +OLD_FILES+=usr/sbin/lastlogin +OLD_FILES+=usr/sbin/utxrm +OLD_FILES+=usr/share/man/man1/last.1.gz +OLD_FILES+=usr/share/man/man1/users.1.gz +OLD_FILES+=usr/share/man/man1/who.1.gz +OLD_FILES+=usr/share/man/man1/wtmpcvt.1.gz +OLD_FILES+=usr/share/man/man8/ac.8.gz +OLD_FILES+=usr/share/man/man8/lastlogin.8.gz +OLD_FILES+=usr/share/man/man8/utxrm.8.gz +.endif + .if ${MK_WIRELESS} == no OLD_FILES+=etc/regdomain.xml OLD_FILES+=usr/sbin/ancontrol Added: head/tools/build/options/WITHOUT_UTMPX ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/build/options/WITHOUT_UTMPX Fri Jun 17 21:30:21 2011 (r223209) @@ -0,0 +1,10 @@ +.\" $FreeBSD$ +Set to not build user accounting tools such as +.Xr last 1 , +.Xr users 1 , +.Xr who 1 , +.Xr wtmpcvt 1 , +.Xr ac 8 , +.Xr lastlogin 8 +and +.Xr utxrm 8 . Modified: head/usr.bin/Makefile ============================================================================== --- head/usr.bin/Makefile Fri Jun 17 21:20:41 2011 (r223208) +++ head/usr.bin/Makefile Fri Jun 17 21:30:21 2011 (r223209) @@ -74,7 +74,6 @@ SUBDIR= alias \ ktrace \ ktrdump \ lam \ - last \ lastcomm \ ldd \ leave \ @@ -170,7 +169,6 @@ SUBDIR= alias \ unzip \ units \ unvis \ - users \ uudecode \ uuencode \ vi \ @@ -182,10 +180,8 @@ SUBDIR= alias \ what \ whereis \ which \ - who \ whois \ write \ - wtmpcvt \ xargs \ xinstall \ ${_xlint} \ @@ -338,6 +334,13 @@ SUBDIR+= usbhidaction SUBDIR+= usbhidctl .endif +.if ${MK_UTMPX} != "no" +SUBDIR+= last +SUBDIR+= users +SUBDIR+= who +SUBDIR+= wtmpcvt +.endif + .include SUBDIR:= ${SUBDIR:O} Modified: head/usr.sbin/Makefile ============================================================================== --- head/usr.sbin/Makefile Fri Jun 17 21:20:41 2011 (r223208) +++ head/usr.sbin/Makefile Fri Jun 17 21:30:21 2011 (r223209) @@ -3,8 +3,7 @@ .include -SUBDIR= ac \ - adduser \ +SUBDIR= adduser \ arp \ bootparamd \ burncd \ @@ -35,7 +34,6 @@ SUBDIR= ac \ inetd \ iostat \ kldxref \ - lastlogin \ mailwrapper \ makefs \ manctl \ @@ -90,7 +88,6 @@ SUBDIR= ac \ trpt \ tzsetup \ ugidfw \ - utxrm \ vipw \ wake \ watch \ @@ -299,6 +296,12 @@ SUBDIR+= usbconfig SUBDIR+= usbdump .endif +.if ${MK_UTMPX} != "no" +SUBDIR+= ac +SUBDIR+= lastlogin +SUBDIR+= utxrm +.endif + .if ${MK_WIRELESS} != "no" SUBDIR+= ancontrol SUBDIR+= wlandebug From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 21:31:14 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F3F9106566C; Fri, 17 Jun 2011 21:31:14 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4BF598FC16; Fri, 17 Jun 2011 21:31:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HLVEJi008315; Fri, 17 Jun 2011 21:31:14 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HLVErZ008313; Fri, 17 Jun 2011 21:31:14 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201106172131.p5HLVErZ008313@svn.freebsd.org> From: Ed Schouten Date: Fri, 17 Jun 2011 21:31:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223210 - head/share/man/man5 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 21:31:14 -0000 Author: ed Date: Fri Jun 17 21:31:13 2011 New Revision: 223210 URL: http://svn.freebsd.org/changeset/base/223210 Log: Regenerate src.conf.5. Modified: head/share/man/man5/src.conf.5 Modified: head/share/man/man5/src.conf.5 ============================================================================== --- head/share/man/man5/src.conf.5 Fri Jun 17 21:30:21 2011 (r223209) +++ head/share/man/man5/src.conf.5 Fri Jun 17 21:31:13 2011 (r223210) @@ -916,6 +916,17 @@ When set, it also enforces the following .It Va WITHOUT_USB .\" from FreeBSD: head/tools/build/options/WITHOUT_USB 156932 2006-03-21 07:50:50Z ru Set to not build USB-related programs and libraries. +.It Va WITHOUT_UTMPX +.\" from FreeBSD: head/tools/build/options/WITHOUT_UTMPX 223209 2011-06-17 21:30:21Z ed +Set to not build user accounting tools such as +.Xr last 1 , +.Xr users 1 , +.Xr who 1 , +.Xr wtmpcvt 1 , +.Xr ac 8 , +.Xr lastlogin 8 +and +.Xr utxrm 8 . .It Va WITHOUT_WIRELESS .\" from FreeBSD: head/tools/build/options/WITHOUT_WIRELESS 183242 2008-09-21 22:02:26Z sam Set to not build programs used for 802.11 wireless networks; especially From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 21:41:06 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A105B106564A; Fri, 17 Jun 2011 21:41:06 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 912378FC18; Fri, 17 Jun 2011 21:41:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HLf6rI009156; Fri, 17 Jun 2011 21:41:06 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HLf6Rx009154; Fri, 17 Jun 2011 21:41:06 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201106172141.p5HLf6Rx009154@svn.freebsd.org> From: Jung-uk Kim Date: Fri, 17 Jun 2011 21:41:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223211 - head/sys/x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 21:41:06 -0000 Author: jkim Date: Fri Jun 17 21:41:06 2011 New Revision: 223211 URL: http://svn.freebsd.org/changeset/base/223211 Log: Teach the compiler how to shift TSC value efficiently. As noted in r220631, some times compiler inserts redundant instructions to preserve unused upper 32 bits even when it is casted to a 32-bit value. Unfortunately, it seems the problem becomes more serious when it is shifted, especially on amd64. Modified: head/sys/x86/x86/tsc.c Modified: head/sys/x86/x86/tsc.c ============================================================================== --- head/sys/x86/x86/tsc.c Fri Jun 17 21:31:13 2011 (r223210) +++ head/sys/x86/x86/tsc.c Fri Jun 17 21:41:06 2011 (r223211) @@ -461,7 +461,7 @@ init_TSC_tc(void) tsc_timecounter.tc_quality = 1000; init: - for (shift = 0; shift < 32 && (tsc_freq >> shift) > max_freq; shift++) + for (shift = 0; shift < 31 && (tsc_freq >> shift) > max_freq; shift++) ; if (shift > 0) { tsc_timecounter.tc_get_timecount = tsc_get_timecount_low; @@ -579,6 +579,9 @@ tsc_get_timecount(struct timecounter *tc static u_int tsc_get_timecount_low(struct timecounter *tc) { + uint32_t rv; - return (rdtsc() >> (int)(intptr_t)tc->tc_priv); + __asm __volatile("rdtsc; shrd %%cl, %%edx, %0" + : "=a" (rv) : "c" ((int)(intptr_t)tc->tc_priv) : "edx"); + return (rv); } From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 21:44:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C2765106566C; Fri, 17 Jun 2011 21:44:13 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B269E8FC0A; Fri, 17 Jun 2011 21:44:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5HLiDfo009297; Fri, 17 Jun 2011 21:44:13 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5HLiDdP009295; Fri, 17 Jun 2011 21:44:13 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201106172144.p5HLiDdP009295@svn.freebsd.org> From: "David E. O'Brien" Date: Fri, 17 Jun 2011 21:44:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223212 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 21:44:13 -0000 Author: obrien Date: Fri Jun 17 21:44:13 2011 New Revision: 223212 URL: http://svn.freebsd.org/changeset/base/223212 Log: Add comment from CSRG rev 7.27 (1992/06/23 19:56:55; author: mckusick) Modified: head/sys/kern/sys_process.c Modified: head/sys/kern/sys_process.c ============================================================================== --- head/sys/kern/sys_process.c Fri Jun 17 21:41:06 2011 (r223211) +++ head/sys/kern/sys_process.c Fri Jun 17 21:44:13 2011 (r223212) @@ -829,6 +829,15 @@ kern_ptrace(struct thread *td, int req, case PT_ATTACH: /* security check done above */ + /* + * It would be nice if the tracing relationship was separate + * from the parent relationship but that would require + * another set of links in the proc struct or for "wait" + * to scan the entire proc table. To make life easier, + * we just re-parent the process we're trying to trace. + * The old parent is remembered so we can put things back + * on a "detach". + */ p->p_flag |= P_TRACED; p->p_oppid = p->p_pptr->p_pid; if (p->p_pptr != td->td_proc) { From owner-svn-src-all@FreeBSD.ORG Fri Jun 17 23:18:02 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DBE521065672; Fri, 17 Jun 2011 23:18:02 +0000 (UTC) (envelope-from peterjeremy@acm.org) Received: from mail17.syd.optusnet.com.au (mail17.syd.optusnet.com.au [211.29.132.198]) by mx1.freebsd.org (Postfix) with ESMTP id 6EF348FC15; Fri, 17 Jun 2011 23:18:02 +0000 (UTC) Received: from server.vk2pj.dyndns.org (c220-239-116-103.belrs4.nsw.optusnet.com.au [220.239.116.103]) by mail17.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p5HNHxtg028220 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 18 Jun 2011 09:18:00 +1000 X-Bogosity: Ham, spamicity=0.000000 Received: from server.vk2pj.dyndns.org (localhost.vk2pj.dyndns.org [127.0.0.1]) by server.vk2pj.dyndns.org (8.14.4/8.14.4) with ESMTP id p5HNHwFQ040546; Sat, 18 Jun 2011 09:17:58 +1000 (EST) (envelope-from peter@server.vk2pj.dyndns.org) Received: (from peter@localhost) by server.vk2pj.dyndns.org (8.14.4/8.14.4/Submit) id p5HNHw66040545; Sat, 18 Jun 2011 09:17:58 +1000 (EST) (envelope-from peter) Date: Sat, 18 Jun 2011 09:17:57 +1000 From: Peter Jeremy To: Nathan Whitehorn Message-ID: <20110617231757.GA40286@server.vk2pj.dyndns.org> References: <201106152338.p5FNcFlN003175@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="3V7upXqbjpZ4EhLz" Content-Disposition: inline In-Reply-To: <201106152338.p5FNcFlN003175@svn.freebsd.org> X-PGP-Key: http://members.optusnet.com.au/peterjeremy/pubkey.asc User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r223129 - head/release X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jun 2011 23:18:02 -0000 --3V7upXqbjpZ4EhLz Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 2011-Jun-15 23:38:15 +0000, Nathan Whitehorn wr= ote: >Log: > Do not install the rescue tools onto the install CD. Since it is read > only, they are very unlikely to be needed and take up a great deal of > space. If I've correctly understood this change, I'm not sure this is a positive move. Based on a quick test, removing /rescue saves about 4MB (in reality, the saving should be less because /rescue removes the need for /stand). OTOH, it renders the install CD useless as a recovery "fixit" disk - whilst the CD is unlikely to need recovery itself, it was useful for recovering hard disks --=20 Peter Jeremy --3V7upXqbjpZ4EhLz Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (FreeBSD) iEYEARECAAYFAk374KUACgkQ/opHv/APuIdDNgCeOVhnEU436v4sByDeMW6WNefF VNoAoKaJ7iJjIVlE0mXV00k/mmdwgIZd =D1ro -----END PGP SIGNATURE----- --3V7upXqbjpZ4EhLz-- From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 00:10:21 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 690351065673; Sat, 18 Jun 2011 00:10:21 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 58CE88FC1B; Sat, 18 Jun 2011 00:10:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I0ALAX013798; Sat, 18 Jun 2011 00:10:21 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I0ALTH013796; Sat, 18 Jun 2011 00:10:21 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201106180010.p5I0ALTH013796@svn.freebsd.org> From: Xin LI Date: Sat, 18 Jun 2011 00:10:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223214 - head/lib/libc/db/man X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 00:10:21 -0000 Author: delphij Date: Sat Jun 18 00:10:21 2011 New Revision: 223214 URL: http://svn.freebsd.org/changeset/base/223214 Log: The flags argument of mpool_get() is meaningful, document it. MFC after: 2 weeks Modified: head/lib/libc/db/man/mpool.3 Modified: head/lib/libc/db/man/mpool.3 ============================================================================== --- head/lib/libc/db/man/mpool.3 Fri Jun 17 22:01:10 2011 (r223213) +++ head/lib/libc/db/man/mpool.3 Sat Jun 18 00:10:21 2011 (r223214) @@ -28,7 +28,7 @@ .\" @(#)mpool.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd February 25, 1999 +.Dd June 17, 2011 .Dt MPOOL 3 .Os .Sh NAME @@ -147,7 +147,14 @@ is returned and is set. The .Fa flags -argument is not currently used. +argument is specified by +.Em or Ns 'ing +any of the following values: +.Bl -tag -width indent +.It Dv MPOOL_IGNOREPIN +The page returned is not pinned; +page will otherwise be pinned on return. +.El .Pp The .Fn mpool_put From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 00:29:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B5EDB1065676; Sat, 18 Jun 2011 00:29:10 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A5C368FC13; Sat, 18 Jun 2011 00:29:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I0TAjd014360; Sat, 18 Jun 2011 00:29:10 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I0TACr014358; Sat, 18 Jun 2011 00:29:10 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201106180029.p5I0TACr014358@svn.freebsd.org> From: Xin LI Date: Sat, 18 Jun 2011 00:29:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223215 - head/lib/libc/gen X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 00:29:10 -0000 Author: delphij Date: Sat Jun 18 00:29:10 2011 New Revision: 223215 URL: http://svn.freebsd.org/changeset/base/223215 Log: Sync with OpenBSD (zap rcsid). MFC after: 2 weeks Modified: head/lib/libc/gen/ftw.c Modified: head/lib/libc/gen/ftw.c ============================================================================== --- head/lib/libc/gen/ftw.c Sat Jun 18 00:10:21 2011 (r223214) +++ head/lib/libc/gen/ftw.c Sat Jun 18 00:29:10 2011 (r223215) @@ -1,4 +1,4 @@ -/* $OpenBSD: ftw.c,v 1.4 2004/07/07 16:05:23 millert Exp $ */ +/* $OpenBSD: ftw.c,v 1.5 2005/08/08 08:05:34 espie Exp $ */ /* * Copyright (c) 2003, 2004 Todd C. Miller @@ -20,12 +20,6 @@ * Materiel Command, USAF, under agreement number F39502-99-1-0512. */ -#if 0 -#if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = "$OpenBSD: ftw.c,v 1.4 2004/07/07 16:05:23 millert Exp $"; -#endif /* LIBC_SCCS and not lint */ -#endif - #include __FBSDID("$FreeBSD$"); From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 00:33:35 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 03C45106566B; Sat, 18 Jun 2011 00:33:35 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E679C8FC08; Sat, 18 Jun 2011 00:33:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I0XYoa014535; Sat, 18 Jun 2011 00:33:34 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I0XYuc014532; Sat, 18 Jun 2011 00:33:34 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201106180033.p5I0XYuc014532@svn.freebsd.org> From: Xin LI Date: Sat, 18 Jun 2011 00:33:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223216 - head/lib/libc/gen X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 00:33:35 -0000 Author: delphij Date: Sat Jun 18 00:33:34 2011 New Revision: 223216 URL: http://svn.freebsd.org/changeset/base/223216 Log: Sync with OpenBSD, primarily make the code easier to read, and a license change to standard OpenBSD ISC license. Obtained from: OpenBSD MFC after: 2 weeks Modified: head/lib/libc/gen/basename.3 head/lib/libc/gen/basename.c Modified: head/lib/libc/gen/basename.3 ============================================================================== --- head/lib/libc/gen/basename.3 Sat Jun 18 00:29:10 2011 (r223215) +++ head/lib/libc/gen/basename.3 Sat Jun 18 00:33:34 2011 (r223216) @@ -1,33 +1,22 @@ +.\" $OpenBSD: basename.3,v 1.20 2007/05/31 19:19:28 jmc Exp $ .\" .\" Copyright (c) 1997 Todd C. Miller -.\" 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. The name of the author may not be used to endorse or promote products -.\" derived from this software without specific prior written permission. +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies. .\" -.\" THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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. +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.\" $OpenBSD: basename.3,v 1.12 2000/04/18 03:01:25 aaron Exp $ .\" $FreeBSD$ .\" -.Dd October 6, 2009 +.Dd March 31, 2010 .Dt BASENAME 3 .Os .Sh NAME @@ -42,8 +31,7 @@ .Sh DESCRIPTION The .Fn basename -function -returns the last component from the pathname pointed to by +function returns the last component from the pathname pointed to by .Fa path , deleting any trailing .Sq \&/ @@ -111,4 +99,15 @@ function first appeared in and .Fx 4.2 . .Sh AUTHORS -.An "Todd C. Miller" Aq Todd.Miller@courtesan.com +.An Todd C. Miller +.Sh CAVEATS +.Fn basename +returns a pointer to internal static storage space that will be overwritten +by subsequent calls. +.Pp +Other vendor implementations of +.Fn basename +may modify the contents of the string passed to +.Fn basename ; +this should be taken into account when writing code which calls this function +if portability is desired. Modified: head/lib/libc/gen/basename.c ============================================================================== --- head/lib/libc/gen/basename.c Sat Jun 18 00:29:10 2011 (r223215) +++ head/lib/libc/gen/basename.c Sat Jun 18 00:33:34 2011 (r223216) @@ -1,35 +1,21 @@ +/* $OpenBSD: basename.c,v 1.14 2005/08/08 08:05:33 espie Exp $ */ + /* - * Copyright (c) 1997 Todd C. Miller - * All rights reserved. + * Copyright (c) 1997, 2004 Todd C. Miller * - * 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. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. * - * THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#if 0 -#ifndef lint -static char rcsid[] = "$OpenBSD: basename.c,v 1.4 1999/05/30 17:10:30 espie Exp $"; -#endif /* not lint */ -#endif #include __FBSDID("$FreeBSD$"); @@ -40,27 +26,28 @@ __FBSDID("$FreeBSD$"); #include char * -basename_r(path, bname) - const char *path; - char *bname; +basename_r(const char *path, char *bname) { const char *endp, *startp; + size_t len; /* Empty or NULL string gets treated as "." */ if (path == NULL || *path == '\0') { - (void)strcpy(bname, "."); - return(bname); + bname[0] = '.'; + bname[1] = '\0'; + return (bname); } - /* Strip trailing slashes */ + /* Strip any trailing slashes */ endp = path + strlen(path) - 1; while (endp > path && *endp == '/') endp--; /* All slashes becomes "/" */ if (endp == path && *endp == '/') { - (void)strcpy(bname, "/"); - return(bname); + bname[0] = '/'; + bname[1] = '\0'; + return (bname); } /* Find the start of the base */ @@ -68,18 +55,18 @@ basename_r(path, bname) while (startp > path && *(startp - 1) != '/') startp--; - if (endp - startp + 2 > MAXPATHLEN) { + len = endp - startp + 1; + if (len >= MAXPATHLEN) { errno = ENAMETOOLONG; - return(NULL); + return (NULL); } - (void)strncpy(bname, startp, endp - startp + 1); - bname[endp - startp + 1] = '\0'; - return(bname); + memcpy(bname, startp, len); + bname[len] = '\0'; + return (bname); } char * -basename(path) - const char *path; +basename(const char *path) { static char *bname = NULL; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 00:53:51 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A72D6106564A; Sat, 18 Jun 2011 00:53:51 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 96E2F8FC15; Sat, 18 Jun 2011 00:53:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I0rppu015268; Sat, 18 Jun 2011 00:53:51 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I0rpBi015266; Sat, 18 Jun 2011 00:53:51 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201106180053.p5I0rpBi015266@svn.freebsd.org> From: "David E. O'Brien" Date: Sat, 18 Jun 2011 00:53:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223217 - head/lib/libc/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 00:53:51 -0000 Author: obrien Date: Sat Jun 18 00:53:51 2011 New Revision: 223217 URL: http://svn.freebsd.org/changeset/base/223217 Log: Note how wait(3) is implemented. Modified: head/lib/libc/sys/wait.2 Modified: head/lib/libc/sys/wait.2 ============================================================================== --- head/lib/libc/sys/wait.2 Sat Jun 18 00:33:34 2011 (r223216) +++ head/lib/libc/sys/wait.2 Sat Jun 18 00:53:51 2011 (r223217) @@ -66,6 +66,19 @@ the .Fa status area contains termination information about the process that exited as defined below. +The +.Fn wait +call is the same as +.Fn wait4 +with a +.Fa wpid +value of -1, +with an +.Fa options +value of zero, +and a +.Fa rusage +value of zero. .Pp The .Fn wait4 From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 02:25:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8926E106566B; Sat, 18 Jun 2011 02:25:08 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 608188FC0A; Sat, 18 Jun 2011 02:25:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I2P844018019; Sat, 18 Jun 2011 02:25:08 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I2P8No018017; Sat, 18 Jun 2011 02:25:08 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201106180225.p5I2P8No018017@svn.freebsd.org> From: Warner Losh Date: Sat, 18 Jun 2011 02:25:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223218 - head/sys/dev/pccbb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 02:25:08 -0000 Author: imp Date: Sat Jun 18 02:25:08 2011 New Revision: 223218 URL: http://svn.freebsd.org/changeset/base/223218 Log: After we get a good power signal, always wait about 10ms before proceeding. On boot, some laptops with certain cards in them sometimes fail on boot, but if the card is inserted after boot it works. Experiments show that small delays here makes things more reliable. It is believed that some combinations need a little more time before the power on the card is really stable enough to be reliable once the power is stable in the bridge. Modified: head/sys/dev/pccbb/pccbb.c Modified: head/sys/dev/pccbb/pccbb.c ============================================================================== --- head/sys/dev/pccbb/pccbb.c Sat Jun 18 00:53:51 2011 (r223217) +++ head/sys/dev/pccbb/pccbb.c Sat Jun 18 02:25:08 2011 (r223218) @@ -800,24 +800,36 @@ cbb_power(device_t brdev, int volts) * We have a shortish timeout of 500ms here. Some bridges do * not generate a POWER_CYCLE event for 16-bit cards. In * those cases, we have to cope the best we can, and having - * only a short delay is better than the alternatives. + * only a short delay is better than the alternatives. Others + * raise the power cycle a smidge before it is really ready. + * We deal with those below. */ sane = 10; while (!(cbb_get(sc, CBB_SOCKET_STATE) & CBB_STATE_POWER_CYCLE) && cnt == sc->powerintr && sane-- > 0) msleep(&sc->powerintr, &sc->mtx, 0, "-", hz / 20); mtx_unlock(&sc->mtx); + + /* + * Relax for 10ms. Some bridges appear to assert this signal + * right away, but before the card has stabilized. Other + * cards need need more time to cope up reliabily. + * Experiments with troublesome setups show this to be a + * "cheap" way to enhance reliabilty. We need not do this for + * "off" since we don't touch the card after we turn it off. + */ + pause("cbbPwr", min(hz / 100, 1)); + /* * The TOPIC95B requires a little bit extra time to get its * act together, so delay for an additional 100ms. Also as * documented below, it doesn't seem to set the POWER_CYCLE * bit, so don't whine if it never came on. */ - if (sc->chipset == CB_TOPIC95) { + if (sc->chipset == CB_TOPIC95) pause("cbb95B", hz / 10); - } else if (sane <= 0) { + else if (sane <= 0) device_printf(sc->dev, "power timeout, doom?\n"); - } } /* From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 03:16:51 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D4B9D106566C; Sat, 18 Jun 2011 03:16:51 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C4F298FC12; Sat, 18 Jun 2011 03:16:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I3Gpr0019804; Sat, 18 Jun 2011 03:16:51 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I3Gp6o019802; Sat, 18 Jun 2011 03:16:51 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201106180316.p5I3Gp6o019802@svn.freebsd.org> From: Warner Losh Date: Sat, 18 Jun 2011 03:16:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223219 - head/sys/dev/pccbb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 03:16:51 -0000 Author: imp Date: Sat Jun 18 03:16:51 2011 New Revision: 223219 URL: http://svn.freebsd.org/changeset/base/223219 Log: More expeirmentation suggests that 10ms isn't as reliable as previously thought, but 100ms seems to be. Likely there's a good middle ground, but for now be conservative. Modified: head/sys/dev/pccbb/pccbb.c Modified: head/sys/dev/pccbb/pccbb.c ============================================================================== --- head/sys/dev/pccbb/pccbb.c Sat Jun 18 02:25:08 2011 (r223218) +++ head/sys/dev/pccbb/pccbb.c Sat Jun 18 03:16:51 2011 (r223219) @@ -811,14 +811,14 @@ cbb_power(device_t brdev, int volts) mtx_unlock(&sc->mtx); /* - * Relax for 10ms. Some bridges appear to assert this signal + * Relax for 100ms. Some bridges appear to assert this signal * right away, but before the card has stabilized. Other * cards need need more time to cope up reliabily. * Experiments with troublesome setups show this to be a * "cheap" way to enhance reliabilty. We need not do this for * "off" since we don't touch the card after we turn it off. */ - pause("cbbPwr", min(hz / 100, 1)); + pause("cbbPwr", min(hz / 10, 1)); /* * The TOPIC95B requires a little bit extra time to get its From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 05:12:55 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 25E6A1065673; Sat, 18 Jun 2011 05:12:55 +0000 (UTC) (envelope-from jh@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 155E58FC0C; Sat, 18 Jun 2011 05:12:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I5CsjY023276; Sat, 18 Jun 2011 05:12:54 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I5CskW023274; Sat, 18 Jun 2011 05:12:54 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201106180512.p5I5CskW023274@svn.freebsd.org> From: Jaakko Heinonen Date: Sat, 18 Jun 2011 05:12:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223220 - stable/8/lib/libgeom X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 05:12:55 -0000 Author: jh Date: Sat Jun 18 05:12:54 2011 New Revision: 223220 URL: http://svn.freebsd.org/changeset/base/223220 Log: MFC r216177: Remove stale link. PR: 151252 Modified: stable/8/lib/libgeom/libgeom.3 Directory Properties: stable/8/lib/libgeom/ (props changed) Modified: stable/8/lib/libgeom/libgeom.3 ============================================================================== --- stable/8/lib/libgeom/libgeom.3 Sat Jun 18 03:16:51 2011 (r223219) +++ stable/8/lib/libgeom/libgeom.3 Sat Jun 18 05:12:54 2011 (r223220) @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd January 16, 2010 +.Dd December 4, 2010 .Dt LIBGEOM 3 .Os .Sh NAME @@ -382,8 +382,6 @@ if (errstr != NULL) err(1, "could not destroy ccd: %s", errstr); gctl_free(H); .Ed -.Sh SEE ALSO -.Pa http://ezine.daemonnews.org/200308/blueprints.html .Sh HISTORY The .Nm geom From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 05:13:48 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C82291065672; Sat, 18 Jun 2011 05:13:48 +0000 (UTC) (envelope-from jh@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B7FA28FC08; Sat, 18 Jun 2011 05:13:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I5DmpY023338; Sat, 18 Jun 2011 05:13:48 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I5DmQ5023336; Sat, 18 Jun 2011 05:13:48 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201106180513.p5I5DmQ5023336@svn.freebsd.org> From: Jaakko Heinonen Date: Sat, 18 Jun 2011 05:13:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223221 - stable/7/lib/libgeom X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 05:13:48 -0000 Author: jh Date: Sat Jun 18 05:13:48 2011 New Revision: 223221 URL: http://svn.freebsd.org/changeset/base/223221 Log: MFC r216177: Remove stale link. PR: 151252 Modified: stable/7/lib/libgeom/libgeom.3 Directory Properties: stable/7/lib/libgeom/ (props changed) Modified: stable/7/lib/libgeom/libgeom.3 ============================================================================== --- stable/7/lib/libgeom/libgeom.3 Sat Jun 18 05:12:54 2011 (r223220) +++ stable/7/lib/libgeom/libgeom.3 Sat Jun 18 05:13:48 2011 (r223221) @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 6, 2007 +.Dd December 4, 2010 .Dt LIBGEOM 3 .Os .Sh NAME @@ -345,8 +345,6 @@ if (errstr != NULL) err(1, "could not destroy ccd: %s", errstr); gctl_free(H); .Ed -.Sh SEE ALSO -.Pa http://ezine.daemonnews.org/200308/blueprints.html .Sh HISTORY The .Nm geom From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 07:47:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 23672106566C; Sat, 18 Jun 2011 07:47:16 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1409F8FC08; Sat, 18 Jun 2011 07:47:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I7lFk9027800; Sat, 18 Jun 2011 07:47:15 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I7lFsQ027798; Sat, 18 Jun 2011 07:47:15 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201106180747.p5I7lFsQ027798@svn.freebsd.org> From: Ed Schouten Date: Sat, 18 Jun 2011 07:47:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223222 - head/usr.bin/users X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 07:47:16 -0000 Author: ed Date: Sat Jun 18 07:47:15 2011 New Revision: 223222 URL: http://svn.freebsd.org/changeset/base/223222 Log: Let the size of the namebuf depend on the size of the ut_user field. Modified: head/usr.bin/users/users.c Modified: head/usr.bin/users/users.c ============================================================================== --- head/usr.bin/users/users.c Sat Jun 18 05:13:48 2011 (r223221) +++ head/usr.bin/users/users.c Sat Jun 18 07:47:15 2011 (r223222) @@ -50,7 +50,7 @@ static const char rcsid[] = #include #include -typedef char namebuf[MAXLOGNAME]; +typedef char namebuf[sizeof(((struct utmpx *)0)->ut_user) + 1]; int scmp(const void *, const void *); static void usage(void); From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 09:34:04 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 14E18106566C; Sat, 18 Jun 2011 09:34:04 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 04BB98FC16; Sat, 18 Jun 2011 09:34:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I9Y34g030927; Sat, 18 Jun 2011 09:34:03 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I9Y3KG030924; Sat, 18 Jun 2011 09:34:03 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106180934.p5I9Y3KG030924@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 18 Jun 2011 09:34:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223223 - head/sys/net X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 09:34:04 -0000 Author: bz Date: Sat Jun 18 09:34:03 2011 New Revision: 223223 URL: http://svn.freebsd.org/changeset/base/223223 Log: gre(4) was using a field in the softc to detect possible recursion. On MP systems this is not a usable solution anymore and could easily lead to false positives triggering enough logging that even using the console was no longer usable (multiple parallel ping -f can do). Switch to the suggested solution of using mbuf tags to carry per packet state between gre_output() invocations. Contrary to the proposed solution modelled after gif(4) only allocate one mbuf tag per packet rather than per packet and per gre_output() pass through. As the sysctl to control the possible valid (gre in gre) nestings does no sanity checks, make sure to always allocate space in the mbuf tag for at least one, and at most 255 possible gre interfaces to detect loops in addition to the counter. Submitted by: Cristian KLEIN (cristi net.utcluj.ro) (original version) PR: kern/114714 Reviewed by: Cristian KLEIN (cristi net.utcluj.ro) Reviewed bu: Wooseog Choi (ben_choi hotmail.com) Sponsored by: Sandvine Incorporated MFC after: 1 week Modified: head/sys/net/if_gre.c head/sys/net/if_gre.h Modified: head/sys/net/if_gre.c ============================================================================== --- head/sys/net/if_gre.c Sat Jun 18 07:47:15 2011 (r223222) +++ head/sys/net/if_gre.c Sat Jun 18 09:34:03 2011 (r223223) @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -91,6 +92,14 @@ #define GRENAME "gre" +#define MTAG_COOKIE_GRE 1307983903 +#define MTAG_GRE_NESTING 1 +struct mtag_gre_nesting { + uint16_t count; + uint16_t max; + struct ifnet *ifp[]; +}; + /* * gre_mtx protects all global variables in if_gre.c. * XXX: gre_softc data not protected yet. @@ -196,7 +205,6 @@ gre_clone_create(ifc, unit, params) sc->g_proto = IPPROTO_GRE; GRE2IFP(sc)->if_flags |= IFF_LINK0; sc->encap = NULL; - sc->called = 0; sc->gre_fibnum = curthread->td_proc->p_fibnum; sc->wccp_ver = WCCP_V1; sc->key = 0; @@ -240,23 +248,77 @@ gre_output(struct ifnet *ifp, struct mbu struct gre_softc *sc = ifp->if_softc; struct greip *gh; struct ip *ip; + struct m_tag *mtag; + struct mtag_gre_nesting *gt; + size_t len; u_short gre_ip_id = 0; uint8_t gre_ip_tos = 0; u_int16_t etype = 0; struct mobile_h mob_h; u_int32_t af; - int extra = 0; + int extra = 0, max; /* - * gre may cause infinite recursion calls when misconfigured. - * We'll prevent this by introducing upper limit. + * gre may cause infinite recursion calls when misconfigured. High + * nesting level may cause stack exhaustion. We'll prevent this by + * detecting loops and by introducing upper limit. */ - if (++(sc->called) > max_gre_nesting) { - printf("%s: gre_output: recursively called too many " - "times(%d)\n", if_name(GRE2IFP(sc)), sc->called); - m_freem(m); - error = EIO; /* is there better errno? */ - goto end; + mtag = m_tag_locate(m, MTAG_COOKIE_GRE, MTAG_GRE_NESTING, NULL); + if (mtag != NULL) { + struct ifnet **ifp2; + + gt = (struct mtag_gre_nesting *)(mtag + 1); + gt->count++; + if (gt->count > min(gt->max,max_gre_nesting)) { + printf("%s: hit maximum recursion limit %u on %s\n", + __func__, gt->count - 1, ifp->if_xname); + m_freem(m); + error = EIO; /* is there better errno? */ + goto end; + } + + ifp2 = gt->ifp; + for (max = gt->count - 1; max > 0; max--) { + if (*ifp2 == ifp) + break; + ifp2++; + } + if (*ifp2 == ifp) { + printf("%s: detected loop with nexting %u on %s\n", + __func__, gt->count-1, ifp->if_xname); + m_freem(m); + error = EIO; /* is there better errno? */ + goto end; + } + *ifp2 = ifp; + + } else { + /* + * Given that people should NOT increase max_gre_nesting beyond + * their real needs, we allocate once per packet rather than + * allocating an mtag once per passing through gre. + * + * Note: the sysctl does not actually check for saneness, so we + * limit the maximum numbers of possible recursions here. + */ + max = imin(max_gre_nesting, 256); + /* If someone sets the sysctl <= 0, we want at least 1. */ + max = imax(max, 1); + len = sizeof(struct mtag_gre_nesting) + + max * sizeof(struct ifnet *); + mtag = m_tag_alloc(MTAG_COOKIE_GRE, MTAG_GRE_NESTING, len, + M_NOWAIT); + if (mtag == NULL) { + m_freem(m); + error = ENOMEM; + goto end; + } + gt = (struct mtag_gre_nesting *)(mtag + 1); + bzero(gt, len); + gt->count = 1; + gt->max = max; + *gt->ifp = ifp; + m_tag_prepend(m, mtag); } if (!((ifp->if_flags & IFF_UP) && @@ -444,7 +506,6 @@ gre_output(struct ifnet *ifp, struct mbu error = ip_output(m, NULL, &sc->route, IP_FORWARDING, (struct ip_moptions *)NULL, (struct inpcb *)NULL); end: - sc->called = 0; if (error) ifp->if_oerrors++; return (error); Modified: head/sys/net/if_gre.h ============================================================================== --- head/sys/net/if_gre.h Sat Jun 18 07:47:15 2011 (r223222) +++ head/sys/net/if_gre.h Sat Jun 18 09:34:03 2011 (r223223) @@ -61,8 +61,6 @@ struct gre_softc { const struct encaptab *encap; /* encapsulation cookie */ - int called; /* infinite recursion preventer */ - uint32_t key; /* key included in outgoing GRE packets */ /* zero means none */ From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 09:46:40 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 111BF106564A; Sat, 18 Jun 2011 09:46:40 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 014F88FC16; Sat, 18 Jun 2011 09:46:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5I9kdSV031325; Sat, 18 Jun 2011 09:46:39 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5I9kdFA031323; Sat, 18 Jun 2011 09:46:39 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106180946.p5I9kdFA031323@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 18 Jun 2011 09:46:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223224 - head/usr.sbin/jls X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 09:46:40 -0000 Author: bz Date: Sat Jun 18 09:46:39 2011 New Revision: 223224 URL: http://svn.freebsd.org/changeset/base/223224 Log: Add a missing ',' to separate arguments lost for r222465 only found in case a complete world is built without INET support. MFC after: 10 days X-MFC with: 222465 Modified: head/usr.sbin/jls/jls.c Modified: head/usr.sbin/jls/jls.c ============================================================================== --- head/usr.sbin/jls/jls.c Sat Jun 18 09:34:03 2011 (r223223) +++ head/usr.sbin/jls/jls.c Sat Jun 18 09:46:39 2011 (r223224) @@ -404,7 +404,7 @@ print_jail(int pflags, int jflags) (!ip4_ok || params[1].jp_valuelen == 0) ? "-" : inet_ntoa(*(struct in_addr *)params[1].jp_value), #else - "-" + "-", #endif (char *)params[2-!ip4_ok].jp_value, (char *)params[3-!ip4_ok].jp_value); From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 10:36:06 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 56C751065672; Sat, 18 Jun 2011 10:36:06 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4651C8FC15; Sat, 18 Jun 2011 10:36:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IAa6wK036232; Sat, 18 Jun 2011 10:36:06 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IAa695036230; Sat, 18 Jun 2011 10:36:06 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201106181036.p5IAa695036230@svn.freebsd.org> From: Michael Tuexen Date: Sat, 18 Jun 2011 10:36:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223225 - head/lib/libc/net X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 10:36:06 -0000 Author: tuexen Date: Sat Jun 18 10:36:05 2011 New Revision: 223225 URL: http://svn.freebsd.org/changeset/base/223225 Log: Document the latest changes to sctp_opt_info() in the code. This makes sctp_opt_info() compiliant with the latest version of the socket API ID. Modified: head/lib/libc/net/sctp_opt_info.3 Modified: head/lib/libc/net/sctp_opt_info.3 ============================================================================== --- head/lib/libc/net/sctp_opt_info.3 Sat Jun 18 09:46:39 2011 (r223224) +++ head/lib/libc/net/sctp_opt_info.3 Sat Jun 18 10:36:05 2011 (r223225) @@ -32,7 +32,7 @@ .\" From: @(#)send.2 8.2 (Berkeley) 2/21/94 .\" $FreeBSD$ .\" -.Dd December 15, 2006 +.Dd June 18, 2011 .Dt SCTP_OPT_INFO 3 .Os .Sh NAME @@ -76,14 +76,30 @@ socket options. .Pp .Dv SCTP_PRIMARY_ADDR .Pp -.Dv SCTP_SET_PEER_PRIMARY_ADDR +.Dv SCTP_PEER_ADDR_PARAMS .Pp -.Dv SCTP_STATUS +.Dv SCTP_DEFAULT_SEND_PARAM .Pp -.Dv SCTP_GET_PEER_ADDR_INFO +.Dv SCTP_MAX_SEG .Pp .Dv SCTP_AUTH_ACTIVE_KEY .Pp +.Dv SCTP_DELAYED_SACK +.Pp +.Dv SCTP_MAX_BURST +.Pp +.Dv SCTP_CONTEXT +.Pp +.Dv SCTP_EVENT +.Pp +.Dv SCTP_DEFAULT_SNDINFO +.Pp +.Dv SCTP_DEFAULT_PRINFO +.Pp +.Dv SCTP_STATUS +.Pp +.Dv SCTP_GET_PEER_ADDR_INFO +.Pp .Dv SCTP_PEER_AUTH_CHUNKS .Pp .Dv SCTP_LOCAL_AUTH_CHUNKS @@ -115,3 +131,14 @@ is not a socket. .Sh SEE ALSO .Xr getsockopt 2 , .Xr sctp 4 +.Sh BUGS +Because the structure used for +.Fa arg +of the +.Dv SCTP_MAX_BURST +socket option has changed in FreeBSD 9.0 and higher, +using +.Dv SCTP_MAX_BURST +as +.Fa opt +is only supported in FreeBSD 9.0 and higher. From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 10:48:00 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BD2EC106564A; Sat, 18 Jun 2011 10:48:00 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ACE078FC12; Sat, 18 Jun 2011 10:48:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IAm0ms036634; Sat, 18 Jun 2011 10:48:00 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IAm0R8036632; Sat, 18 Jun 2011 10:48:00 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201106181048.p5IAm0R8036632@svn.freebsd.org> From: Marius Strobl Date: Sat, 18 Jun 2011 10:48:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223226 - head X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 10:48:00 -0000 Author: marius Date: Sat Jun 18 10:48:00 2011 New Revision: 223226 URL: http://svn.freebsd.org/changeset/base/223226 Log: Add an entry for r221407 forgotten in said revision. Modified: head/UPDATING Modified: head/UPDATING ============================================================================== --- head/UPDATING Sat Jun 18 10:36:05 2011 (r223225) +++ head/UPDATING Sat Jun 18 10:48:00 2011 (r223226) @@ -52,6 +52,18 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. 20110513: Support for sun4v architecture is officially dropped +20110503: + Several KPI breaking changes have been committed to the mii(4) layer, + the PHY drivers and consequently some Ethernet drivers using mii(4). + This means that miibus.ko and the modules of the affected Ethernet + drivers need to be recompiled. + + Note to kernel developers: Given that the OUI bit reversion problem + was fixed as part of these changes all mii(4) commits related to OUIs, + i.e. to sys/dev/mii/miidevs, PHY driver probing and vendor specific + handling, no longer can be merged verbatim to stable/8 and previous + branches. + 20110430: Users of the Atheros AR71xx SoC code now need to add 'device ar71xx_pci' into their kernel configurations along with 'device pci'. From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:05:30 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7951C106566B; Sat, 18 Jun 2011 11:05:30 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 690618FC14; Sat, 18 Jun 2011 11:05:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IB5UjX037236; Sat, 18 Jun 2011 11:05:30 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IB5UbI037234; Sat, 18 Jun 2011 11:05:30 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106181105.p5IB5UbI037234@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 18 Jun 2011 11:05:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223227 - head/etc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:05:30 -0000 Author: jilles Date: Sat Jun 18 11:05:30 2011 New Revision: 223227 URL: http://svn.freebsd.org/changeset/base/223227 Log: rc.subr: Eliminate about 100 forks from the boot sequence. With the current sh, placing eval in a command substitution always results in a fork(), even if it is the only command and only executes a single simple command. Therefore, avoid it where it can be avoided easily. Side effect: values starting with a hyphen and all whitespace are preserved. The values are defaults and names for rc.conf variables and messages to be given about obsolete ones. MFC after: 2 weeks Modified: head/etc/rc.subr Modified: head/etc/rc.subr ============================================================================== --- head/etc/rc.subr Sat Jun 18 10:48:00 2011 (r223226) +++ head/etc/rc.subr Sat Jun 18 11:05:30 2011 (r223227) @@ -1062,7 +1062,7 @@ load_rc_config() # Set defaults if defined. for _var in $rcvar $rcvars; do - _defval=`eval echo "\\\$${_var}_defval"` + eval _defval=\$${_var}_defval if [ -n "$_defval" ]; then eval : \${$_var:=\$${_var}_defval} fi @@ -1070,9 +1070,9 @@ load_rc_config() # check obsolete rc.conf variables for _var in $rcvars_obsolete; do - _v=`eval echo \\$$_var` - _msg=`eval echo \\$${_var}_obsolete_msg` - _new=`eval echo \\$${_var}_newvar` + eval _v=\$$_var + eval _msg=\$${_var}_obsolete_msg + eval _new=\$${_var}_newvar case $_v in "") ;; @@ -1765,7 +1765,7 @@ check_kern_features() _echoonce() { local _var _msg _mode - _var=`eval echo \\$$1` + eval _var=\$$1 _msg=$2 _mode=$3 From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:07:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 211D31065673; Sat, 18 Jun 2011 11:07:10 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0F9C28FC0A; Sat, 18 Jun 2011 11:07:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IB79iI037327; Sat, 18 Jun 2011 11:07:09 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IB79A0037322; Sat, 18 Jun 2011 11:07:09 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201106181107.p5IB79A0037322@svn.freebsd.org> From: Marius Strobl Date: Sat, 18 Jun 2011 11:07:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223228 - in head/lib/libthr/arch/sparc64: . include sparc64 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:07:10 -0000 Author: marius Date: Sat Jun 18 11:07:09 2011 New Revision: 223228 URL: http://svn.freebsd.org/changeset/base/223228 Log: Merge from r161730: o Set TP using inline assembly to avoid dead code elimination. o Eliminate _tcb. Merge from r161840: Stylize: avoid using a global register variable. Merge from r157461: Simplify _get_curthread() and _tcb_ctor because libc and rtld now already allocate thread pointer space in tls block for initial thread. Merge from r177853: Replace function _umtx_op with _umtx_op_err, the later function directly returns errno, because errno can be mucked by user's signal handler and most of pthread api heavily depends on errno to be correct, this change should improve stability of the thread library. MFC after: 1 week Added: head/lib/libthr/arch/sparc64/sparc64/_umtx_op_err.S (contents, props changed) Modified: head/lib/libthr/arch/sparc64/Makefile.inc head/lib/libthr/arch/sparc64/include/pthread_md.h head/lib/libthr/arch/sparc64/sparc64/pthread_md.c Modified: head/lib/libthr/arch/sparc64/Makefile.inc ============================================================================== --- head/lib/libthr/arch/sparc64/Makefile.inc Sat Jun 18 11:05:30 2011 (r223227) +++ head/lib/libthr/arch/sparc64/Makefile.inc Sat Jun 18 11:07:09 2011 (r223228) @@ -1,3 +1,3 @@ # $FreeBSD$ -SRCS+= pthread_md.c +SRCS+= _umtx_op_err.S pthread_md.c Modified: head/lib/libthr/arch/sparc64/include/pthread_md.h ============================================================================== --- head/lib/libthr/arch/sparc64/include/pthread_md.h Sat Jun 18 11:05:30 2011 (r223227) +++ head/lib/libthr/arch/sparc64/include/pthread_md.h Sat Jun 18 11:07:09 2011 (r223228) @@ -50,10 +50,6 @@ struct tcb { void *tcb_spare[1]; }; -register struct tcb *_tp __asm("%g7"); - -#define _tcb (_tp) - /* * The tcb constructors. */ @@ -64,26 +60,25 @@ void _tcb_dtor(struct tcb *); static __inline void _tcb_set(struct tcb *tcb) { - _tp = tcb; + + __asm __volatile("mov %0, %%g7" : : "r" (tcb)); } -/* - * Get the current tcb. - */ static __inline struct tcb * _tcb_get(void) { - return (_tcb); -} + register struct tcb *tp __asm("%g7"); -extern struct pthread *_thr_initial; + return (tp); +} static __inline struct pthread * _get_curthread(void) { - if (_thr_initial) - return (_tcb->tcb_thread); - return (NULL); + + return (_tcb_get()->tcb_thread); } +#define HAS__UMTX_OP_ERR 1 + #endif /* _PTHREAD_MD_H_ */ Added: head/lib/libthr/arch/sparc64/sparc64/_umtx_op_err.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libthr/arch/sparc64/sparc64/_umtx_op_err.S Sat Jun 18 11:07:09 2011 (r223228) @@ -0,0 +1,38 @@ +/*- + * Copyright (c) 2011 Marius Strobl + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +#include + +ENTRY(_umtx_op_err) + mov SYS__umtx_op, %g1 + retl + ta %xcc, ST_SYSCALL +END(_umtx_op_err) Modified: head/lib/libthr/arch/sparc64/sparc64/pthread_md.c ============================================================================== --- head/lib/libthr/arch/sparc64/sparc64/pthread_md.c Sat Jun 18 11:05:30 2011 (r223227) +++ head/lib/libthr/arch/sparc64/sparc64/pthread_md.c Sat Jun 18 11:07:09 2011 (r223228) @@ -24,10 +24,11 @@ * 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. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include #include @@ -37,13 +38,11 @@ struct tcb * _tcb_ctor(struct pthread *thread, int initial) { struct tcb *tcb; - void *oldtls; if (initial) - oldtls = _tp; + tcb = _tcb_get(); else - oldtls = NULL; - tcb = _rtld_allocate_tls(oldtls, sizeof(struct tcb), 16); + tcb = _rtld_allocate_tls(NULL, sizeof(struct tcb), 16); if (tcb) tcb->tcb_thread = thread; return (tcb); @@ -52,5 +51,6 @@ _tcb_ctor(struct pthread *thread, int in void _tcb_dtor(struct tcb *tcb) { + _rtld_free_tls(tcb, sizeof(struct tcb), 16); } From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:08:10 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43D34106566B; Sat, 18 Jun 2011 11:08:10 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail07.syd.optusnet.com.au (mail07.syd.optusnet.com.au [211.29.132.188]) by mx1.freebsd.org (Postfix) with ESMTP id D41578FC0C; Sat, 18 Jun 2011 11:08:09 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail07.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p5IB86gs013726 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 18 Jun 2011 21:08:07 +1000 Date: Sat, 18 Jun 2011 21:08:06 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Jung-uk Kim In-Reply-To: <201106172141.p5HLf6Rx009154@svn.freebsd.org> Message-ID: <20110618195655.M889@besplex.bde.org> References: <201106172141.p5HLf6Rx009154@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r223211 - head/sys/x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:08:10 -0000 On Fri, 17 Jun 2011, Jung-uk Kim wrote: > Log: > Teach the compiler how to shift TSC value efficiently. As noted in r220631, > some times compiler inserts redundant instructions to preserve unused upper > 32 bits even when it is casted to a 32-bit value. Unfortunately, it seems > the problem becomes more serious when it is shifted, especially on amd64. Er, I tried to point out how to optimize this code before (but didn't reply to your reply), and it's not by using more asm. > Modified: head/sys/x86/x86/tsc.c > ============================================================================== > --- head/sys/x86/x86/tsc.c Fri Jun 17 21:31:13 2011 (r223210) > +++ head/sys/x86/x86/tsc.c Fri Jun 17 21:41:06 2011 (r223211) > @@ -461,7 +461,7 @@ init_TSC_tc(void) > tsc_timecounter.tc_quality = 1000; > > init: > - for (shift = 0; shift < 32 && (tsc_freq >> shift) > max_freq; shift++) > + for (shift = 0; shift < 31 && (tsc_freq >> shift) > max_freq; shift++) > ; > if (shift > 0) { > tsc_timecounter.tc_get_timecount = tsc_get_timecount_low; shift == 32 (or even shift == 31) is unreachable. A shift of 31 will shift 2GHz down to 1 Hz, or support physically impossible frequencies like 2**33 GHz. OTOH, shifts of up to 63 are supported by the slow gcc code. > @@ -579,6 +579,9 @@ tsc_get_timecount(struct timecounter *tc > static u_int > tsc_get_timecount_low(struct timecounter *tc) > { > + uint32_t rv; > > - return (rdtsc() >> (int)(intptr_t)tc->tc_priv); > + __asm __volatile("rdtsc; shrd %%cl, %%edx, %0" > + : "=a" (rv) : "c" ((int)(intptr_t)tc->tc_priv) : "edx"); Lexical style bug (indentation of second line of the asm). > + return (rv); > } Just return the shift of the low 32 bits (and change tc_counter_mask to match) like I said. This loses only the accidental ability for the timecounter to work for more than a few seconds when interrupts are stopped by something like ddb, since any shift count that loses too many of the low 32 bits will not work for other reasons. For example, suppose that the TSC frequency is 8G-1Hz, which is unavailable except possible in research labs. This must be shifted by 1 to fit in 32 bits. If we use only the low 32 bits, then we end up with only 31 significant bits and tsc_get_timecount_low() wraps after ~2 seconds instead of after the best possible for this shift of ~4 seconds. If we shift by 7 more, as we do in the SMP case, then if we start with 32 bits then we end up with 24 bits, but the wrap still takes 2 seconds; if we start with 64 bits then we end up with 32 bits and the wrap takes 4*2**7 = 512 seconds. But wrap times longer than 1/HZ times a few are not needed. 2 seconds is already at least 100 or 1000 times longer than needed, depending on HZ. The case where the unscaled frequency is 4G-1Hz and !SMP gives a shift count of 0 and a wrap time of ~4 seconds. Whatever is done to make that case work (say, not allowing a fully tickless kernel with HZ = 0), works almost as well up to an unscaled frequency of 8GHz which is still far off. No one will notice these micro-optimizations, but I agree that the redundant instructions are ugly. I get the following on i386 for the original version with an old source tree: % #APP % rdtsc % #NO_APP % movl 8(%ebp), %ecx % movl 28(%ecx), %ecx % shrdl %edx, %eax % shrl %cl, %edx % testb $32, %cl % je .L3 % movl %edx, %eax % xorl %edx, %edx % .L3: The last 4 instructions are not redundant, but are needed to support shifts of up to 63 (maybe 64). I tried masking the shift count with 0x1f so that the shift count is known to be < 32, this just gave an extra instruction for the masking. It's even worse with rdtsc() converted to u_int first like I want: % movl %ebx, (%esp) % movl %esi, 4(%esp) % #APP % rdtsc % #NO_APP % movl %eax, %ebx % movl 8(%ebp), %eax % movl 4(%esp), %esi % movl 28(%eax), %ecx % movl %ebx, %eax % movl (%esp), %ebx % # some frame pointer epilogue reordered here % shrl %cl, %eax The second case may be what you already fixed on amd64 (only?) -- use rdtsc32() instead of (u_int)rdtsc(). I've always thought that the dynamic shift is overengineered, and now like it even less. The following is efficent and works well enough in all currently physically possible cases: % /* % * Don't really need a separate one for `low', but now it costs less % * (1 shift instruction at runtime and some space). Must change % * tc_counter_mask to match. % */ % u_int % tsc_get_timecount_low(struct timecounter *tc) % { % #ifdef SMP % /* % * Works up to 1024 GHz, assuming that nontemporalness scales with % * freq. I think 8 is too many. But now do extra for SMP indep. % * of freq. % */ % return (((u_int)rdtsc()) >> 8); /* gens rdtsc; shrl $8,%eax */ % #else % /* Works up to 8 GHz. */ % return (((u_int)rdtsc()) >> 1); /* gens rdtsc; shrl %eax */ % #endif % } Bruce From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:17:14 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4DADB1065672; Sat, 18 Jun 2011 11:17:14 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 22FDC8FC15; Sat, 18 Jun 2011 11:17:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBHEVE037680; Sat, 18 Jun 2011 11:17:14 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBHDew037676; Sat, 18 Jun 2011 11:17:13 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181117.p5IBHDew037676@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:17:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223229 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:17:14 -0000 Author: bschmidt Date: Sat Jun 18 11:17:13 2011 New Revision: 223229 URL: http://svn.freebsd.org/changeset/base/223229 Log: MFC r220633: Remove IWN_FLAG_HAS_5GHZ and IWN_PCI_BAR0, both unused. Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnreg.h stable/8/sys/dev/iwn/if_iwnvar.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:07:09 2011 (r223228) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:17:13 2011 (r223229) @@ -1792,7 +1792,6 @@ iwn_read_eeprom_band(struct iwn_softc *s c->ic_freq = ieee80211_ieee2mhz(chan, IEEE80211_CHAN_A); c->ic_flags = IEEE80211_CHAN_A | nflags; - sc->sc_flags |= IWN_FLAG_HAS_5GHZ; } #if 0 /* HT */ /* XXX no constraints on using HT20 */ Modified: stable/8/sys/dev/iwn/if_iwnreg.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 11:07:09 2011 (r223228) +++ stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 11:17:13 2011 (r223229) @@ -50,9 +50,6 @@ #define IWN_HIADDR(paddr) (0) #endif -/* Base Address Register. */ -#define IWN_PCI_BAR0 PCI_MAPREG_START - /* * Control and status registers. */ Modified: stable/8/sys/dev/iwn/if_iwnvar.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 11:07:09 2011 (r223228) +++ stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 11:17:13 2011 (r223229) @@ -215,7 +215,6 @@ struct iwn_softc { struct resource *irq; u_int sc_flags; -#define IWN_FLAG_HAS_5GHZ (1 << 0) #define IWN_FLAG_HAS_OTPROM (1 << 1) #define IWN_FLAG_CALIB_DONE (1 << 2) #define IWN_FLAG_USE_ICT (1 << 3) From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:19:12 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E59CD106564A; Sat, 18 Jun 2011 11:19:12 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D42608FC0A; Sat, 18 Jun 2011 11:19:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBJCjh037780; Sat, 18 Jun 2011 11:19:12 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBJCBr037778; Sat, 18 Jun 2011 11:19:12 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181119.p5IBJCBr037778@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:19:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223230 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:19:13 -0000 Author: bschmidt Date: Sat Jun 18 11:19:12 2011 New Revision: 223230 URL: http://svn.freebsd.org/changeset/base/223230 Log: MFC r220634: Reuse net80211 code: - IWN_TXOP_TO_US is equal to IEEE80211_TXOP_TO_US - use IEEE80211_DUR_TU - ieee80211_add_rates/ieee80211_add_xrates are public, use em - copied ieee80211_add_ssid it is not public Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:17:13 2011 (r223229) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:19:12 2011 (r223230) @@ -198,6 +198,7 @@ static void iwn_tune_sensitivity(struct static int iwn_send_sensitivity(struct iwn_softc *); static int iwn_set_pslevel(struct iwn_softc *, int, int, int); static int iwn_config(struct iwn_softc *); +static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int); static int iwn_scan(struct iwn_softc *); static int iwn_auth(struct iwn_softc *, struct ieee80211vap *vap); static int iwn_run(struct iwn_softc *, struct ieee80211vap *vap); @@ -3636,7 +3637,6 @@ static int iwn_wme_update(struct ieee80211com *ic) { #define IWN_EXP2(x) ((1 << (x)) - 1) /* CWmin = 2^ECWmin - 1 */ -#define IWN_TXOP_TO_US(v) (v<<5) struct iwn_softc *sc = ic->ic_ifp->if_softc; struct iwn_edca_params cmd; int i; @@ -3650,7 +3650,7 @@ iwn_wme_update(struct ieee80211com *ic) cmd.ac[i].cwmin = htole16(IWN_EXP2(wmep->wmep_logcwmin)); cmd.ac[i].cwmax = htole16(IWN_EXP2(wmep->wmep_logcwmax)); cmd.ac[i].txoplimit = - htole16(IWN_TXOP_TO_US(wmep->wmep_txopLimit)); + htole16(IEEE80211_TXOP_TO_US(wmep->wmep_txopLimit)); } IEEE80211_UNLOCK(ic); IWN_LOCK(sc); @@ -3658,7 +3658,6 @@ iwn_wme_update(struct ieee80211com *ic) IWN_UNLOCK(sc); IEEE80211_LOCK(ic); return 0; -#undef IWN_TXOP_TO_US #undef IWN_EXP2 } @@ -3720,7 +3719,7 @@ iwn_set_timing(struct iwn_softc *sc, str cmd.lintval = htole16(10); /* Compute remaining time until next beacon. */ - val = (uint64_t)ni->ni_intval * 1024; /* msecs -> usecs */ + val = (uint64_t)ni->ni_intval * IEEE80211_DUR_TU; mod = le64toh(cmd.tstamp) % val; cmd.binitval = htole32((uint32_t)(val - mod)); @@ -4270,7 +4269,7 @@ iwn_tune_sensitivity(struct iwn_softc *s /* Compute number of false alarms since last call for OFDM. */ fa = le32toh(stats->ofdm.bad_plcp) - calib->bad_plcp_ofdm; fa += le32toh(stats->ofdm.fa) - calib->fa_ofdm; - fa *= 200 * 1024; /* 200TU */ + fa *= 200 * IEEE80211_DUR_TU; /* 200TU */ /* Save counters values for next call. */ calib->bad_plcp_ofdm = le32toh(stats->ofdm.bad_plcp); @@ -4327,7 +4326,7 @@ iwn_tune_sensitivity(struct iwn_softc *s /* Compute number of false alarms since last call for CCK. */ fa = le32toh(stats->cck.bad_plcp) - calib->bad_plcp_cck; fa += le32toh(stats->cck.fa) - calib->fa_cck; - fa *= 200 * 1024; /* 200TU */ + fa *= 200 * IEEE80211_DUR_TU; /* 200TU */ /* Save counters values for next call. */ calib->bad_plcp_cck = le32toh(stats->cck.bad_plcp); @@ -4586,6 +4585,18 @@ iwn_config(struct iwn_softc *sc) return 0; } +/* + * Add an ssid element to a frame. + */ +static uint8_t * +ieee80211_add_ssid(uint8_t *frm, const uint8_t *ssid, u_int len) +{ + *frm++ = IEEE80211_ELEMID_SSID; + *frm++ = len; + memcpy(frm, ssid, len); + return frm + len; +} + static int iwn_scan(struct iwn_softc *sc) { @@ -4599,7 +4610,7 @@ iwn_scan(struct iwn_softc *sc) struct ieee80211_frame *wh; struct ieee80211_rateset *rs; struct ieee80211_channel *c; - int buflen, error, nrates; + int buflen, error; uint16_t rxchain; uint8_t *buf, *frm, txant; @@ -4675,30 +4686,14 @@ iwn_scan(struct iwn_softc *sc) *(uint16_t *)&wh->i_seq[0] = 0; /* filled by HW */ frm = (uint8_t *)(wh + 1); - - /* Add SSID IE. */ - *frm++ = IEEE80211_ELEMID_SSID; - *frm++ = ss->ss_ssid[0].len; - memcpy(frm, ss->ss_ssid[0].ssid, ss->ss_ssid[0].len); - frm += ss->ss_ssid[0].len; - - /* Add supported rates IE. */ - *frm++ = IEEE80211_ELEMID_RATES; - nrates = rs->rs_nrates; - if (nrates > IEEE80211_RATE_SIZE) - nrates = IEEE80211_RATE_SIZE; - *frm++ = nrates; - memcpy(frm, rs->rs_rates, nrates); - frm += nrates; - - /* Add supported xrates IE. */ - if (rs->rs_nrates > IEEE80211_RATE_SIZE) { - nrates = rs->rs_nrates - IEEE80211_RATE_SIZE; - *frm++ = IEEE80211_ELEMID_XRATES; - *frm++ = (uint8_t)nrates; - memcpy(frm, rs->rs_rates + IEEE80211_RATE_SIZE, nrates); - frm += nrates; - } + frm = ieee80211_add_ssid(frm, NULL, 0); + frm = ieee80211_add_rates(frm, rs); + if (rs->rs_nrates > IEEE80211_RATE_SIZE) + frm = ieee80211_add_xrates(frm, rs); +#if 0 /* HT */ + if (ic->ic_flags & IEEE80211_F_HTON) + frm = ieee80211_add_htcaps(frm, ic); +#endif /* Set length of probe request. */ tx->len = htole16(frm - (uint8_t *)wh); From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:21:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D9C1D1065677; Sat, 18 Jun 2011 11:21:56 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C8ADB8FC0A; Sat, 18 Jun 2011 11:21:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBLuhV037915; Sat, 18 Jun 2011 11:21:56 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBLuBW037913; Sat, 18 Jun 2011 11:21:56 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181121.p5IBLuBW037913@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:21:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223231 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:21:57 -0000 Author: bschmidt Date: Sat Jun 18 11:21:56 2011 New Revision: 223231 URL: http://svn.freebsd.org/changeset/base/223231 Log: MFC r220635: iwn_cleanup() is just a wrapper around iwn_detach(), call it directly instead. Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:19:12 2011 (r223230) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:21:56 2011 (r223231) @@ -81,7 +81,6 @@ static struct ieee80211vap *iwn_vap_crea int flags, const uint8_t bssid[IEEE80211_ADDR_LEN], const uint8_t mac[IEEE80211_ADDR_LEN]); static void iwn_vap_delete(struct ieee80211vap *); -static int iwn_cleanup(device_t); static int iwn_detach(device_t); static int iwn_nic_lock(struct iwn_softc *); static int iwn_eeprom_lock(struct iwn_softc *); @@ -684,7 +683,7 @@ iwn_attach(device_t dev) ieee80211_announce(ic); return 0; fail: - iwn_cleanup(dev); + iwn_detach(dev); return error; } @@ -845,7 +844,7 @@ iwn_vap_delete(struct ieee80211vap *vap) } static int -iwn_cleanup(device_t dev) +iwn_detach(device_t dev) { struct iwn_softc *sc = device_get_softc(dev); struct ifnet *ifp = sc->sc_ifp; @@ -895,13 +894,6 @@ iwn_cleanup(device_t dev) } static int -iwn_detach(device_t dev) -{ - iwn_cleanup(dev); - return 0; -} - -static int iwn_nic_lock(struct iwn_softc *sc) { int ntries; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:23:42 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 840FD106564A; Sat, 18 Jun 2011 11:23:42 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 595D68FC0A; Sat, 18 Jun 2011 11:23:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBNgHm038019; Sat, 18 Jun 2011 11:23:42 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBNghb038017; Sat, 18 Jun 2011 11:23:42 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181123.p5IBNghb038017@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:23:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223232 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:23:42 -0000 Author: bschmidt Date: Sat Jun 18 11:23:42 2011 New Revision: 223232 URL: http://svn.freebsd.org/changeset/base/223232 Log: MFC r220636: Instead of trying to figure out which rxon.flags to clear, restart from scratch. Remove htole16() calls, rxon.chan is an uint8_t, ieee80211_chan2ieee() does return an ic_ieee as an int, but I heavily doubt a htole16() will buy us anything here. Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:21:56 2011 (r223231) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:23:42 2011 (r223232) @@ -4757,7 +4757,7 @@ iwn_auth(struct iwn_softc *sc, struct ie /* Update adapter configuration. */ IEEE80211_ADDR_COPY(sc->rxon.bssid, ni->ni_bssid); - sc->rxon.chan = htole16(ieee80211_chan2ieee(ic, ni->ni_chan)); + sc->rxon.chan = ieee80211_chan2ieee(ic, ni->ni_chan); sc->rxon.flags = htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF); if (IEEE80211_IS_CHAN_2GHZ(ni->ni_chan)) sc->rxon.flags |= htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ); @@ -4843,15 +4843,11 @@ iwn_run(struct iwn_softc *sc, struct iee /* Update adapter configuration. */ IEEE80211_ADDR_COPY(sc->rxon.bssid, ni->ni_bssid); - sc->rxon.chan = htole16(ieee80211_chan2ieee(ic, ni->ni_chan)); sc->rxon.associd = htole16(IEEE80211_AID(ni->ni_associd)); - /* Short preamble and slot time are negotiated when associating. */ - sc->rxon.flags &= ~htole32(IWN_RXON_SHPREAMBLE | IWN_RXON_SHSLOT); - sc->rxon.flags |= htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF); + sc->rxon.chan = ieee80211_chan2ieee(ic, ni->ni_chan); + sc->rxon.flags = htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF); if (IEEE80211_IS_CHAN_2GHZ(ni->ni_chan)) sc->rxon.flags |= htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ); - else - sc->rxon.flags &= ~htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ); if (ic->ic_flags & IEEE80211_F_SHSLOT) sc->rxon.flags |= htole32(IWN_RXON_SHSLOT); if (ic->ic_flags & IEEE80211_F_SHPREAMBLE) From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:25:34 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 61C0E106564A; Sat, 18 Jun 2011 11:25:34 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 374BF8FC0A; Sat, 18 Jun 2011 11:25:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBPYTx038123; Sat, 18 Jun 2011 11:25:34 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBPY9e038120; Sat, 18 Jun 2011 11:25:34 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181125.p5IBPY9e038120@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:25:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223233 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:25:34 -0000 Author: bschmidt Date: Sat Jun 18 11:25:33 2011 New Revision: 223233 URL: http://svn.freebsd.org/changeset/base/223233 Log: MFC r220659: Don't timeout when stopping DMA channels. Obtained from: OpenBSD Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnreg.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:23:42 2011 (r223232) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:25:33 2011 (r223233) @@ -4003,7 +4003,7 @@ iwn4965_get_temperature(struct iwn_softc return 0; /* Sign-extend 23-bit R4 value to 32-bit. */ - r4 = (r4 << 8) >> 8; + r4 = ((r4 & 0xffffff) ^ 0x800000) - 0x800000; /* Compute temperature in Kelvin. */ temp = (259 * (r4 - r2)) / (r3 - r1); temp = (temp * 97) / 100 + 8; @@ -6283,7 +6283,6 @@ static void iwn_hw_stop(struct iwn_softc *sc) { const struct iwn_hal *hal = sc->sc_hal; - uint32_t tmp; int chnl, qid, ntries; IWN_WRITE(sc, IWN_RESET, IWN_RESET_NEVO); @@ -6305,8 +6304,7 @@ iwn_hw_stop(struct iwn_softc *sc) for (chnl = 0; chnl < hal->ndmachnls; chnl++) { IWN_WRITE(sc, IWN_FH_TX_CONFIG(chnl), 0); for (ntries = 0; ntries < 200; ntries++) { - tmp = IWN_READ(sc, IWN_FH_TX_STATUS); - if ((tmp & IWN_FH_TX_STATUS_IDLE(chnl)) == + if (IWN_READ(sc, IWN_FH_TX_STATUS) & IWN_FH_TX_STATUS_IDLE(chnl)) break; DELAY(10); Modified: stable/8/sys/dev/iwn/if_iwnreg.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 11:23:42 2011 (r223232) +++ stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 11:25:33 2011 (r223233) @@ -283,8 +283,7 @@ #define IWN_FH_TX_CHICKEN_SCHED_RETRY (1 << 1) /* Possible flags for register IWN_FH_TX_STATUS. */ -#define IWN_FH_TX_STATUS_IDLE(chnl) \ - (1 << ((chnl) + 24) | 1 << ((chnl) + 16)) +#define IWN_FH_TX_STATUS_IDLE(chnl) (1 << ((chnl) + 16)) /* Possible flags for register IWN_FH_RX_CONFIG. */ #define IWN_FH_RX_CONFIG_ENA (1 << 31) From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:27:28 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AAAAA106564A; Sat, 18 Jun 2011 11:27:28 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 999578FC14; Sat, 18 Jun 2011 11:27:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBRSbf038230; Sat, 18 Jun 2011 11:27:28 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBRSte038228; Sat, 18 Jun 2011 11:27:28 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181127.p5IBRSte038228@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:27:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223234 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:27:28 -0000 Author: bschmidt Date: Sat Jun 18 11:27:28 2011 New Revision: 223234 URL: http://svn.freebsd.org/changeset/base/223234 Log: MFC r220660: Only handle beacon misses while in RUN state and not scanning. Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:25:33 2011 (r223233) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:27:28 2011 (r223234) @@ -2463,23 +2463,22 @@ iwn_notif_intr(struct iwn_softc *sc) BUS_DMASYNC_POSTREAD); misses = le32toh(miss->consecutive); - /* XXX not sure why we're notified w/ zero */ - if (misses == 0) - break; DPRINTF(sc, IWN_DEBUG_STATE, "%s: beacons missed %d/%d\n", __func__, misses, le32toh(miss->total)); - /* * If more than 5 consecutive beacons are missed, * reinitialize the sensitivity state machine. */ - if (vap->iv_state == IEEE80211_S_RUN && misses > 5) - (void) iwn_init_sensitivity(sc); - if (misses >= vap->iv_bmissthreshold) { - IWN_UNLOCK(sc); - ieee80211_beacon_miss(ic); - IWN_LOCK(sc); + if (vap->iv_state == IEEE80211_S_RUN && + (ic->ic_flags & IEEE80211_F_SCAN) != 0) { + if (misses > 5) + (void)iwn_init_sensitivity(sc); + if (misses >= vap->iv_bmissthreshold) { + IWN_UNLOCK(sc); + ieee80211_beacon_miss(ic); + IWN_LOCK(sc); + } } break; } From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:27:45 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4FB8C106567B; Sat, 18 Jun 2011 11:27:45 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2599B8FC17; Sat, 18 Jun 2011 11:27:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBRj1B038279; Sat, 18 Jun 2011 11:27:45 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBRjhJ038277; Sat, 18 Jun 2011 11:27:45 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201106181127.p5IBRjhJ038277@svn.freebsd.org> From: Marius Strobl Date: Sat, 18 Jun 2011 11:27:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223235 - head/sys/sparc64/sparc64 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:27:45 -0000 Author: marius Date: Sat Jun 18 11:27:44 2011 New Revision: 223235 URL: http://svn.freebsd.org/changeset/base/223235 Log: - As with stray vector interrupts limit the reporting of stray level interrupts. Bringup on additional machine models repeatedly reveals firmware that enables interrupts behind our back, causing the console to be flooded otherwise. - As with the regular interrupt counters using uint16_t instead of u_long for counting the stray vector interrupts should be more than sufficient. - Cache the interrupt vector in intr_stray_vector(). Modified: head/sys/sparc64/sparc64/intr_machdep.c Modified: head/sys/sparc64/sparc64/intr_machdep.c ============================================================================== --- head/sys/sparc64/sparc64/intr_machdep.c Sat Jun 18 11:27:28 2011 (r223234) +++ head/sys/sparc64/sparc64/intr_machdep.c Sat Jun 18 11:27:44 2011 (r223235) @@ -83,10 +83,11 @@ CTASSERT((1 << IV_SHIFT) == sizeof(struc ih_func_t *intr_handlers[PIL_MAX]; uint16_t pil_countp[PIL_MAX]; +static uint16_t pil_stray_count[PIL_MAX]; struct intr_vector intr_vectors[IV_MAX]; uint16_t intr_countp[IV_MAX]; -static u_long intr_stray_count[IV_MAX]; +static uint16_t intr_stray_count[IV_MAX]; static const char *const pil_names[] = { "stray", @@ -199,22 +200,32 @@ intr_setup(int pri, ih_func_t *ihf, int static void intr_stray_level(struct trapframe *tf) { + uint64_t level; - printf("stray level interrupt %ld\n", tf->tf_level); + level = tf->tf_level; + if (pil_stray_count[level] < MAX_STRAY_LOG) { + printf("stray level interrupt %ld\n", level); + pil_stray_count[level]++; + if (pil_stray_count[level] >= MAX_STRAY_LOG) + printf("got %d stray level interrupt %ld's: not " + "logging anymore\n", MAX_STRAY_LOG, level); + } } static void intr_stray_vector(void *cookie) { struct intr_vector *iv; + u_int vec; iv = cookie; - if (intr_stray_count[iv->iv_vec] < MAX_STRAY_LOG) { - printf("stray vector interrupt %d\n", iv->iv_vec); - intr_stray_count[iv->iv_vec]++; - if (intr_stray_count[iv->iv_vec] >= MAX_STRAY_LOG) - printf("got %d stray interrupt %d's: not logging " - "anymore\n", MAX_STRAY_LOG, iv->iv_vec); + vec = iv->iv_vec; + if (intr_stray_count[vec] < MAX_STRAY_LOG) { + printf("stray vector interrupt %d\n", vec); + intr_stray_count[vec]++; + if (intr_stray_count[vec] >= MAX_STRAY_LOG) + printf("got %d stray vector interrupt %d's: not " + "logging anymore\n", MAX_STRAY_LOG, vec); } } From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:29:45 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 24712106564A; Sat, 18 Jun 2011 11:29:45 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0A2CB8FC12; Sat, 18 Jun 2011 11:29:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBTi6L038380; Sat, 18 Jun 2011 11:29:44 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBTiQm038378; Sat, 18 Jun 2011 11:29:44 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181129.p5IBTiQm038378@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:29:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223236 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:29:45 -0000 Author: bschmidt Date: Sat Jun 18 11:29:44 2011 New Revision: 223236 URL: http://svn.freebsd.org/changeset/base/223236 Log: MFC r220661: Fixes for firmware handling: - there is a local variable for sc->fw_dma, use that instead - OpenBSD uses 5*hz to wait for firmware to be loaded - in case the firmware module contains invalid data, actually release it Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:27:44 2011 (r223235) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:29:44 2011 (r223236) @@ -5629,10 +5629,10 @@ iwn4965_load_firmware(struct iwn_softc * /* Copy initialization sections into pre-allocated DMA-safe memory. */ memcpy(dma->vaddr, fw->init.data, fw->init.datasz); - bus_dmamap_sync(sc->fw_dma.tag, dma->map, BUS_DMASYNC_PREWRITE); + bus_dmamap_sync(dma->tag, dma->map, BUS_DMASYNC_PREWRITE); memcpy(dma->vaddr + IWN4965_FW_DATA_MAXSZ, fw->init.text, fw->init.textsz); - bus_dmamap_sync(sc->fw_dma.tag, dma->map, BUS_DMASYNC_PREWRITE); + bus_dmamap_sync(dma->tag, dma->map, BUS_DMASYNC_PREWRITE); /* Tell adapter where to find initialization sections. */ error = iwn_nic_lock(sc); @@ -5670,10 +5670,10 @@ iwn4965_load_firmware(struct iwn_softc * /* Copy runtime sections into pre-allocated DMA-safe memory. */ memcpy(dma->vaddr, fw->main.data, fw->main.datasz); - bus_dmamap_sync(sc->fw_dma.tag, dma->map, BUS_DMASYNC_PREWRITE); + bus_dmamap_sync(dma->tag, dma->map, BUS_DMASYNC_PREWRITE); memcpy(dma->vaddr + IWN4965_FW_DATA_MAXSZ, fw->main.text, fw->main.textsz); - bus_dmamap_sync(sc->fw_dma.tag, dma->map, BUS_DMASYNC_PREWRITE); + bus_dmamap_sync(dma->tag, dma->map, BUS_DMASYNC_PREWRITE); /* Tell adapter where to find runtime sections. */ error = iwn_nic_lock(sc); @@ -5700,7 +5700,7 @@ iwn5000_load_firmware_section(struct iwn /* Copy firmware section into pre-allocated DMA-safe memory. */ memcpy(dma->vaddr, section, size); - bus_dmamap_sync(sc->fw_dma.tag, dma->map, BUS_DMASYNC_PREWRITE); + bus_dmamap_sync(dma->tag, dma->map, BUS_DMASYNC_PREWRITE); error = iwn_nic_lock(sc); if (error != 0) @@ -5726,7 +5726,7 @@ iwn5000_load_firmware_section(struct iwn iwn_nic_unlock(sc); /* Wait at most five seconds for FH DMA transfer to complete. */ - return msleep(sc, &sc->sc_mtx, PCATCH, "iwninit", hz); + return msleep(sc, &sc->sc_mtx, PCATCH, "iwninit", 5 * hz); } static int @@ -5771,7 +5771,7 @@ iwn_read_firmware_leg(struct iwn_softc * size_t hdrlen = 24; uint32_t rev; - ptr = (const uint32_t *)sc->fw_fp->data; + ptr = (const uint32_t *)fw->data; rev = le32toh(*ptr++); /* Check firmware API version. */ @@ -5819,7 +5819,7 @@ iwn_read_firmware_leg(struct iwn_softc * /* * Extract text and data sections from a TLV firmware image. */ -int +static int iwn_read_firmware_tlv(struct iwn_softc *sc, struct iwn_fw_info *fw, uint16_t alt) { @@ -5931,6 +5931,8 @@ iwn_read_firmware(struct iwn_softc *sc) device_printf(sc->sc_dev, "%s: firmware file too short: %zu bytes\n", __func__, fw->size); + firmware_put(sc->fw_fp, FIRMWARE_UNLOAD); + sc->fw_fp = NULL; return EINVAL; } @@ -5942,6 +5944,8 @@ iwn_read_firmware(struct iwn_softc *sc) if (error != 0) { device_printf(sc->sc_dev, "%s: could not read firmware sections\n", __func__); + firmware_put(sc->fw_fp, FIRMWARE_UNLOAD); + sc->fw_fp = NULL; return error; } @@ -5954,6 +5958,8 @@ iwn_read_firmware(struct iwn_softc *sc) (fw->boot.textsz & 3) != 0) { device_printf(sc->sc_dev, "%s: firmware sections too large\n", __func__); + firmware_put(sc->fw_fp, FIRMWARE_UNLOAD); + sc->fw_fp = NULL; return EINVAL; } From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:31:19 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9671A1065670; Sat, 18 Jun 2011 11:31:19 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6BF9B8FC14; Sat, 18 Jun 2011 11:31:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBVJvQ038488; Sat, 18 Jun 2011 11:31:19 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBVJdI038486; Sat, 18 Jun 2011 11:31:19 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181131.p5IBVJdI038486@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:31:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223237 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:31:19 -0000 Author: bschmidt Date: Sat Jun 18 11:31:19 2011 New Revision: 223237 URL: http://svn.freebsd.org/changeset/base/223237 Log: MFC r220662: Split out bluetooth coexistence setup. Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:29:44 2011 (r223236) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:31:19 2011 (r223237) @@ -196,6 +196,7 @@ static void iwn_tune_sensitivity(struct const struct iwn_rx_stats *); static int iwn_send_sensitivity(struct iwn_softc *); static int iwn_set_pslevel(struct iwn_softc *, int, int, int); +static int iwn_send_btcoex(struct iwn_softc *); static int iwn_config(struct iwn_softc *); static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int); static int iwn_scan(struct iwn_softc *); @@ -4464,12 +4465,25 @@ iwn_set_pslevel(struct iwn_softc *sc, in } static int +iwn_send_btcoex(struct iwn_softc *sc) +{ + struct iwn_bluetooth cmd; + + memset(&cmd, 0, sizeof cmd); + cmd.flags = IWN_BT_COEX_CHAN_ANN | IWN_BT_COEX_BT_PRIO; + cmd.lead_time = IWN_BT_LEAD_TIME_DEF; + cmd.max_kill = IWN_BT_MAX_KILL_DEF; + DPRINTF(sc, IWN_DEBUG_RESET, "%s: configuring bluetooth coexistence\n", + __func__); + return iwn_cmd(sc, IWN_CMD_BT_COEX, &cmd, sizeof(cmd), 0); +} + +static int iwn_config(struct iwn_softc *sc) { const struct iwn_hal *hal = sc->sc_hal; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; - struct iwn_bluetooth bluetooth; uint32_t txmask; int error; uint16_t rxchain; @@ -4490,13 +4504,7 @@ iwn_config(struct iwn_softc *sc) } /* Configure bluetooth coexistence. */ - memset(&bluetooth, 0, sizeof bluetooth); - bluetooth.flags = IWN_BT_COEX_CHAN_ANN | IWN_BT_COEX_BT_PRIO; - bluetooth.lead_time = IWN_BT_LEAD_TIME_DEF; - bluetooth.max_kill = IWN_BT_MAX_KILL_DEF; - DPRINTF(sc, IWN_DEBUG_RESET, "%s: config bluetooth coexistence\n", - __func__); - error = iwn_cmd(sc, IWN_CMD_BT_COEX, &bluetooth, sizeof bluetooth, 0); + error = iwn_send_btcoex(sc); if (error != 0) { device_printf(sc->sc_dev, "%s: could not configure bluetooth coexistence, error %d\n", From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:33:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0CA70106566B; Sat, 18 Jun 2011 11:33:56 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EEC018FC0C; Sat, 18 Jun 2011 11:33:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBXtsU038626; Sat, 18 Jun 2011 11:33:55 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBXttw038623; Sat, 18 Jun 2011 11:33:55 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181133.p5IBXttw038623@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:33:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223238 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:33:56 -0000 Author: bschmidt Date: Sat Jun 18 11:33:55 2011 New Revision: 223238 URL: http://svn.freebsd.org/changeset/base/223238 Log: MFC r220667+220668: Split up watchdog and calibration callout. This allows us to use different timing on both and to remove some monitor mode specific hacks (which has no calibration). Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnvar.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:31:19 2011 (r223237) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:33:55 2011 (r223238) @@ -123,10 +123,9 @@ static struct ieee80211_node *iwn_node_a const uint8_t mac[IEEE80211_ADDR_LEN]); static int iwn_media_change(struct ifnet *); static int iwn_newstate(struct ieee80211vap *, enum ieee80211_state, int); +static void iwn_calib_timeout(void *); static void iwn_rx_phy(struct iwn_softc *, struct iwn_rx_desc *, struct iwn_rx_data *); -static void iwn_timer_timeout(void *); -static void iwn_calib_reset(struct iwn_softc *); static void iwn_rx_done(struct iwn_softc *, struct iwn_rx_desc *, struct iwn_rx_data *); #if 0 /* HT */ @@ -161,7 +160,7 @@ static int iwn_raw_xmit(struct ieee80211 const struct ieee80211_bpf_params *); static void iwn_start(struct ifnet *); static void iwn_start_locked(struct ifnet *); -static void iwn_watchdog(struct iwn_softc *sc); +static void iwn_watchdog(void *); static int iwn_ioctl(struct ifnet *, u_long, caddr_t); static int iwn_cmd(struct iwn_softc *, int, const void *, int, int); static int iwn4965_add_node(struct iwn_softc *, struct iwn_node_info *, @@ -475,7 +474,6 @@ iwn_attach(device_t dev) } IWN_LOCK_INIT(sc); - callout_init_mtx(&sc->sc_timer_to, &sc->sc_mtx, 0); TASK_INIT(&sc->sc_reinit_task, 0, iwn_hw_reset, sc ); TASK_INIT(&sc->sc_radioon_task, 0, iwn_radio_on, sc ); TASK_INIT(&sc->sc_radiooff_task, 0, iwn_radio_off, sc ); @@ -668,6 +666,10 @@ iwn_attach(device_t dev) #endif iwn_radiotap_attach(sc); + + callout_init_mtx(&sc->calib_to, &sc->sc_mtx, 0); + callout_init_mtx(&sc->watchdog_to, &sc->sc_mtx, 0); + iwn_sysctlattach(sc); /* @@ -860,7 +862,8 @@ iwn_detach(device_t dev) ieee80211_draintask(ic, &sc->sc_radiooff_task); iwn_stop(sc); - callout_drain(&sc->sc_timer_to); + callout_drain(&sc->watchdog_to); + callout_drain(&sc->calib_to); ieee80211_ifdetach(ic); } @@ -1942,7 +1945,7 @@ iwn_newstate(struct ieee80211vap *vap, e IEEE80211_UNLOCK(ic); IWN_LOCK(sc); - callout_stop(&sc->sc_timer_to); + callout_stop(&sc->calib_to); switch (nstate) { case IEEE80211_S_ASSOC: @@ -1959,7 +1962,8 @@ iwn_newstate(struct ieee80211vap *vap, e */ sc->rxon.associd = 0; sc->rxon.filter &= ~htole32(IWN_FILTER_BSS); - iwn_calib_reset(sc); + sc->calib.state = IWN_CALIB_STATE_INIT; + error = iwn_auth(sc, vap); break; @@ -1967,9 +1971,8 @@ iwn_newstate(struct ieee80211vap *vap, e /* * RUN -> RUN transition; Just restart the timers. */ - if (vap->iv_state == IEEE80211_S_RUN && - vap->iv_opmode != IEEE80211_M_MONITOR) { - iwn_calib_reset(sc); + if (vap->iv_state == IEEE80211_S_RUN) { + sc->calib_cnt = 0; break; } @@ -1981,6 +1984,10 @@ iwn_newstate(struct ieee80211vap *vap, e error = iwn_run(sc, vap); break; + case IEEE80211_S_INIT: + sc->calib.state = IWN_CALIB_STATE_INIT; + break; + default: break; } @@ -1989,6 +1996,27 @@ iwn_newstate(struct ieee80211vap *vap, e return ivp->iv_newstate(vap, nstate, arg); } +static void +iwn_calib_timeout(void *arg) +{ + struct iwn_softc *sc = arg; + + IWN_LOCK_ASSERT(sc); + + /* Force automatic TX power calibration every 60 secs. */ + if (++sc->calib_cnt >= 120) { + uint32_t flags = 0; + + DPRINTF(sc, IWN_DEBUG_CALIBRATE, "%s\n", + "sending request for statistics"); + (void)iwn_cmd(sc, IWN_CMD_GET_STATISTICS, &flags, + sizeof flags, 1); + sc->calib_cnt = 0; + } + callout_reset(&sc->calib_to, msecs_to_ticks(500), iwn_calib_timeout, + sc); +} + /* * Process an RX_PHY firmware notification. This is usually immediately * followed by an MPDU_RX_DONE notification. @@ -2007,32 +2035,6 @@ iwn_rx_phy(struct iwn_softc *sc, struct sc->last_rx_valid = 1; } -static void -iwn_timer_timeout(void *arg) -{ - struct iwn_softc *sc = arg; - uint32_t flags = 0; - - IWN_LOCK_ASSERT(sc); - - if (sc->calib_cnt && --sc->calib_cnt == 0) { - DPRINTF(sc, IWN_DEBUG_CALIBRATE, "%s\n", - "send statistics request"); - (void) iwn_cmd(sc, IWN_CMD_GET_STATISTICS, &flags, - sizeof flags, 1); - sc->calib_cnt = 60; /* do calibration every 60s */ - } - iwn_watchdog(sc); /* NB: piggyback tx watchdog */ - callout_reset(&sc->sc_timer_to, hz, iwn_timer_timeout, sc); -} - -static void -iwn_calib_reset(struct iwn_softc *sc) -{ - callout_reset(&sc->sc_timer_to, hz, iwn_timer_timeout, sc); - sc->calib_cnt = 60; /* do calibration every 60s */ -} - /* * Process an RX_DONE (4965AGN only) or MPDU_RX_DONE firmware notification. * Each MPDU_RX_DONE notification must be preceded by an RX_PHY one. @@ -2222,7 +2224,7 @@ iwn_rx_statistics(struct iwn_softc *sc, bus_dmamap_sync(sc->rxq.data_dmat, data->map, BUS_DMASYNC_POSTREAD); DPRINTF(sc, IWN_DEBUG_CALIBRATE, "%s: cmd %d\n", __func__, desc->type); - iwn_calib_reset(sc); /* Reset TX power calibration timeout. */ + sc->calib_cnt = 0; /* Reset TX power calibration timeout. */ /* Test if temperature has changed. */ if (stats->general.temp != sc->rawtemp) { @@ -3306,6 +3308,8 @@ iwn_raw_xmit(struct ieee80211_node *ni, ieee80211_free_node(ni); ifp->if_oerrors++; } + sc->sc_tx_timer = 5; + IWN_UNLOCK(sc); return error; } @@ -3352,15 +3356,24 @@ iwn_start_locked(struct ifnet *ifp) } static void -iwn_watchdog(struct iwn_softc *sc) +iwn_watchdog(void *arg) { - if (sc->sc_tx_timer > 0 && --sc->sc_tx_timer == 0) { - struct ifnet *ifp = sc->sc_ifp; - struct ieee80211com *ic = ifp->if_l2com; + struct iwn_softc *sc = arg; + struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; + + IWN_LOCK_ASSERT(sc); + + KASSERT(ifp->if_drv_flags & IFF_DRV_RUNNING, ("not running")); - if_printf(ifp, "device timeout\n"); - ieee80211_runtask(ic, &sc->sc_reinit_task); + if (sc->sc_tx_timer > 0) { + if (--sc->sc_tx_timer == 0) { + if_printf(ifp, "device timeout\n"); + ieee80211_runtask(ic, &sc->sc_reinit_task); + return; + } } + callout_reset(&sc->watchdog_to, hz, iwn_watchdog, sc); } static int @@ -4760,8 +4773,6 @@ iwn_auth(struct iwn_softc *sc, struct ie struct ieee80211_node *ni = vap->iv_bss; int error; - sc->calib.state = IWN_CALIB_STATE_INIT; - /* Update adapter configuration. */ IEEE80211_ADDR_COPY(sc->rxon.bssid, ni->ni_bssid); sc->rxon.chan = ieee80211_chan2ieee(ic, ni->ni_chan); @@ -4954,7 +4965,9 @@ iwn_run(struct iwn_softc *sc, struct iee /* Start periodic calibration timer. */ sc->calib.state = IWN_CALIB_STATE_ASSOC; - iwn_calib_reset(sc); + sc->calib_cnt = 0; + callout_reset(&sc->calib_to, msecs_to_ticks(500), iwn_calib_timeout, + sc); /* Link LED always on while associated. */ iwn_set_led(sc, IWN_LED_LINK, 0, 1); @@ -6406,6 +6419,7 @@ iwn_init_locked(struct iwn_softc *sc) ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; ifp->if_drv_flags |= IFF_DRV_RUNNING; + callout_reset(&sc->watchdog_to, hz, iwn_watchdog, sc); return; fail: @@ -6435,7 +6449,8 @@ iwn_stop_locked(struct iwn_softc *sc) IWN_LOCK_ASSERT(sc); sc->sc_tx_timer = 0; - callout_stop(&sc->sc_timer_to); + callout_stop(&sc->watchdog_to); + callout_stop(&sc->calib_to); ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); /* Power OFF hardware. */ Modified: stable/8/sys/dev/iwn/if_iwnvar.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 11:31:19 2011 (r223237) +++ stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 11:33:55 2011 (r223238) @@ -260,8 +260,10 @@ struct iwn_softc { struct task sc_radioon_task; struct task sc_radiooff_task; + struct callout calib_to; int calib_cnt; struct iwn_calib_state calib; + struct callout watchdog_to; u_int calib_init; u_int calib_runtime; #define IWN_CALIB_XTAL (1 << IWN_CALIB_IDX_XTAL) @@ -312,7 +314,6 @@ struct iwn_softc { uint8_t rxchainmask; uint8_t chainmask; - struct callout sc_timer_to; int sc_tx_timer; struct iwn_rx_radiotap_header sc_rxtap; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:36:58 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4E734106566C; Sat, 18 Jun 2011 11:36:58 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3C5758FC08; Sat, 18 Jun 2011 11:36:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBawY3038761; Sat, 18 Jun 2011 11:36:58 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBawsg038758; Sat, 18 Jun 2011 11:36:58 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181136.p5IBawsg038758@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:36:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223239 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:36:58 -0000 Author: bschmidt Date: Sat Jun 18 11:36:57 2011 New Revision: 223239 URL: http://svn.freebsd.org/changeset/base/223239 Log: MFC r220674: Revert some of local calibration changes in favour of the OpenBSD implementation. This includes the fix required for the 6050 series devices. Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnvar.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:33:55 2011 (r223238) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:36:57 2011 (r223239) @@ -132,6 +132,8 @@ static void iwn_rx_done(struct iwn_softc static void iwn_rx_compressed_ba(struct iwn_softc *, struct iwn_rx_desc *, struct iwn_rx_data *); #endif +static void iwn5000_rx_calib_results(struct iwn_softc *, + struct iwn_rx_desc *, struct iwn_rx_data *); static void iwn_rx_statistics(struct iwn_softc *, struct iwn_rx_desc *, struct iwn_rx_data *); static void iwn4965_tx_done(struct iwn_softc *, struct iwn_rx_desc *, @@ -217,15 +219,10 @@ static void iwn5000_ampdu_tx_start(struc struct ieee80211_node *, uint8_t, uint16_t); static void iwn5000_ampdu_tx_stop(struct iwn_softc *, uint8_t, uint16_t); #endif -static int iwn5000_send_calib_results(struct iwn_softc *); -static int iwn5000_save_calib_result(struct iwn_softc *, - struct iwn_phy_calib *, int, int); -static void iwn5000_free_calib_results(struct iwn_softc *); -static int iwn5000_chrystal_calib(struct iwn_softc *); -static int iwn5000_send_calib_query(struct iwn_softc *, uint32_t); -static int iwn5000_rx_calib_result(struct iwn_softc *, - struct iwn_rx_desc *, struct iwn_rx_data *); +static int iwn5000_query_calibration(struct iwn_softc *); +static int iwn5000_send_calibration(struct iwn_softc *); static int iwn5000_send_wimax_coex(struct iwn_softc *); +static int iwn5000_crystal_calib(struct iwn_softc *); static int iwn4965_post_alive(struct iwn_softc *); static int iwn5000_post_alive(struct iwn_softc *); static int iwn4965_load_bootcode(struct iwn_softc *, const uint8_t *, @@ -709,9 +706,6 @@ iwn_hal_attach(struct iwn_softc *sc) sc->fwname = "iwn5000fw"; sc->txchainmask = IWN_ANT_B; sc->rxchainmask = IWN_ANT_AB; - sc->calib_init = IWN_CALIB_XTAL | IWN_CALIB_LO | - IWN_CALIB_TX_IQ | IWN_CALIB_TX_IQ_PERIODIC | - IWN_CALIB_BASE_BAND; break; case IWN_HW_REV_TYPE_5150: sc->sc_hal = &iwn5000_hal; @@ -719,8 +713,6 @@ iwn_hal_attach(struct iwn_softc *sc) sc->fwname = "iwn5150fw"; sc->txchainmask = IWN_ANT_A; sc->rxchainmask = IWN_ANT_AB; - sc->calib_init = IWN_CALIB_DC | IWN_CALIB_LO | - IWN_CALIB_TX_IQ | IWN_CALIB_BASE_BAND; break; case IWN_HW_REV_TYPE_5300: case IWN_HW_REV_TYPE_5350: @@ -729,9 +721,6 @@ iwn_hal_attach(struct iwn_softc *sc) sc->fwname = "iwn5000fw"; sc->txchainmask = IWN_ANT_ABC; sc->rxchainmask = IWN_ANT_ABC; - sc->calib_init = IWN_CALIB_XTAL | IWN_CALIB_LO | - IWN_CALIB_TX_IQ | IWN_CALIB_TX_IQ_PERIODIC | - IWN_CALIB_BASE_BAND; break; case IWN_HW_REV_TYPE_1000: sc->sc_hal = &iwn5000_hal; @@ -739,9 +728,6 @@ iwn_hal_attach(struct iwn_softc *sc) sc->fwname = "iwn1000fw"; sc->txchainmask = IWN_ANT_A; sc->rxchainmask = IWN_ANT_AB; - sc->calib_init = IWN_CALIB_XTAL | IWN_CALIB_LO | - IWN_CALIB_TX_IQ | IWN_CALIB_TX_IQ_PERIODIC | - IWN_CALIB_BASE_BAND; break; case IWN_HW_REV_TYPE_6000: sc->sc_hal = &iwn5000_hal; @@ -757,11 +743,8 @@ iwn_hal_attach(struct iwn_softc *sc) default: sc->txchainmask = IWN_ANT_ABC; sc->rxchainmask = IWN_ANT_ABC; - sc->calib_runtime = IWN_CALIB_DC; break; } - sc->calib_init = IWN_CALIB_XTAL | IWN_CALIB_LO | - IWN_CALIB_TX_IQ | IWN_CALIB_BASE_BAND; break; case IWN_HW_REV_TYPE_6050: sc->sc_hal = &iwn5000_hal; @@ -769,9 +752,6 @@ iwn_hal_attach(struct iwn_softc *sc) sc->fwname = "iwn6050fw"; sc->txchainmask = IWN_ANT_AB; sc->rxchainmask = IWN_ANT_AB; - sc->calib_init = IWN_CALIB_XTAL | IWN_CALIB_LO | - IWN_CALIB_TX_IQ | IWN_CALIB_BASE_BAND; - sc->calib_runtime = IWN_CALIB_DC; break; case IWN_HW_REV_TYPE_6005: sc->sc_hal = &iwn5000_hal; @@ -779,9 +759,6 @@ iwn_hal_attach(struct iwn_softc *sc) sc->fwname = "iwn6005fw"; sc->txchainmask = IWN_ANT_AB; sc->rxchainmask = IWN_ANT_AB; - sc->calib_init = IWN_CALIB_XTAL | IWN_CALIB_LO | - IWN_CALIB_TX_IQ | IWN_CALIB_BASE_BAND; - sc->calib_runtime = IWN_CALIB_DC; break; default: device_printf(sc->sc_dev, "adapter type %d not supported\n", @@ -867,8 +844,6 @@ iwn_detach(device_t dev) ieee80211_ifdetach(ic); } - iwn5000_free_calib_results(sc); - /* Free DMA resources. */ iwn_free_rx_ring(sc, &sc->rxq); if (sc->sc_hal != NULL) @@ -1679,7 +1654,7 @@ static void iwn5000_read_eeprom(struct iwn_softc *sc) { struct iwn5000_eeprom_calib_hdr hdr; - int32_t temp, volt; + int32_t volt; uint32_t addr, base; int i; uint16_t val; @@ -1711,12 +1686,18 @@ iwn5000_read_eeprom(struct iwn_softc *sc if (sc->hw_type == IWN_HW_REV_TYPE_5150) { /* Compute temperature offset. */ iwn_read_prom_data(sc, base + IWN5000_EEPROM_TEMP, &val, 2); - temp = le16toh(val); + sc->eeprom_temp = le16toh(val); iwn_read_prom_data(sc, base + IWN5000_EEPROM_VOLT, &val, 2); volt = le16toh(val); - sc->temp_off = temp - (volt / -5); + sc->temp_off = sc->eeprom_temp - (volt / -5); DPRINTF(sc, IWN_DEBUG_CALIBRATE, "temp=%d volt=%d offset=%dK\n", - temp, volt, sc->temp_off); + sc->eeprom_temp, volt, sc->temp_off); + } else { + /* Read crystal calibration. */ + iwn_read_prom_data(sc, base + IWN5000_EEPROM_CRYSTAL, + &sc->eeprom_crystal, sizeof (uint32_t)); + DPRINTF(sc, IWN_DEBUG_CALIBRATE, "crystal calibration 0x%08x\n", + le32toh(sc->eeprom_crystal)); } } @@ -2202,6 +2183,63 @@ iwn_rx_compressed_ba(struct iwn_softc *s #endif /* + * Process a CALIBRATION_RESULT notification sent by the initialization + * firmware on response to a CMD_CALIB_CONFIG command (5000 only). + */ +static void +iwn5000_rx_calib_results(struct iwn_softc *sc, struct iwn_rx_desc *desc, + struct iwn_rx_data *data) +{ + struct iwn_phy_calib *calib = (struct iwn_phy_calib *)(desc + 1); + int len, idx = -1; + + /* Runtime firmware should not send such a notification. */ + if (sc->sc_flags & IWN_FLAG_CALIB_DONE) + return; + + len = (le32toh(desc->len) & 0x3fff) - 4; + bus_dmamap_sync(sc->rxq.data_dmat, data->map, BUS_DMASYNC_POSTREAD); + + switch (calib->code) { + case IWN5000_PHY_CALIB_DC: + if (sc->hw_type == IWN_HW_REV_TYPE_5150) + idx = 0; + break; + case IWN5000_PHY_CALIB_LO: + idx = 1; + break; + case IWN5000_PHY_CALIB_TX_IQ: + idx = 2; + break; + case IWN5000_PHY_CALIB_TX_IQ_PERIODIC: + if (sc->hw_type < IWN_HW_REV_TYPE_6000 && + sc->hw_type != IWN_HW_REV_TYPE_5150) + idx = 3; + break; + case IWN5000_PHY_CALIB_BASE_BAND: + idx = 4; + break; + } + if (idx == -1) /* Ignore other results. */ + return; + + /* Save calibration result. */ + if (sc->calibcmd[idx].buf != NULL) + free(sc->calibcmd[idx].buf, M_DEVBUF); + sc->calibcmd[idx].buf = malloc(len, M_DEVBUF, M_NOWAIT); + if (sc->calibcmd[idx].buf == NULL) { + DPRINTF(sc, IWN_DEBUG_CALIBRATE, + "not enough memory for calibration result %d\n", + calib->code); + return; + } + DPRINTF(sc, IWN_DEBUG_CALIBRATE, + "saving calibration result code=%d len=%d\n", calib->code, len); + sc->calibcmd[idx].len = len; + memcpy(sc->calibcmd[idx].buf, calib, len); +} + +/* * Process an RX_STATISTICS or BEACON_STATISTICS firmware notification. * The latter is sent by the firmware after each received beacon. */ @@ -2555,7 +2593,7 @@ iwn_notif_intr(struct iwn_softc *sc) break; } case IWN5000_CALIBRATION_RESULT: - iwn5000_rx_calib_result(sc, desc, data); + iwn5000_rx_calib_results(sc, desc, data); break; case IWN5000_CALIBRATION_DONE: @@ -4849,7 +4887,7 @@ iwn_run(struct iwn_softc *sc, struct iee if (ic->ic_opmode == IEEE80211_M_MONITOR) { /* Link LED blinks while monitoring. */ - iwn_set_led(sc, IWN_LED_LINK, 20, 20); + iwn_set_led(sc, IWN_LED_LINK, 5, 5); return 0; } error = iwn_set_timing(sc, ni); @@ -5192,200 +5230,57 @@ iwn5000_ampdu_tx_stop(struct iwn_softc * #endif /* - * Send calibration results to the runtime firmware. These results were - * obtained on first boot from the initialization firmware, or by reading - * the EEPROM for crystal calibration. - */ -static int -iwn5000_send_calib_results(struct iwn_softc *sc) -{ - struct iwn_calib_info *calib_result; - int idx, error; - - for (idx = 0; idx < IWN_CALIB_NUM; idx++) { - calib_result = &sc->calib_results[idx]; - - /* No support for this type of calibration. */ - if ((sc->calib_init & (1 << idx)) == 0) - continue; - - /* No calibration result available. */ - if (calib_result->buf == NULL) - continue; - - DPRINTF(sc, IWN_DEBUG_CALIBRATE, - "%s: send calibration result idx=%d, len=%d\n", - __func__, idx, calib_result->len); - - error = iwn_cmd(sc, IWN_CMD_PHY_CALIB, calib_result->buf, - calib_result->len, 0); - if (error != 0) { - device_printf(sc->sc_dev, - "%s: could not send calibration result " - "idx=%d, error=%d\n", - __func__, idx, error); - return error; - } - } - return 0; -} - -/* - * Save calibration result at the given index. The index determines - * in which order the results are sent to the runtime firmware. - */ -static int -iwn5000_save_calib_result(struct iwn_softc *sc, struct iwn_phy_calib *calib, - int len, int idx) -{ - struct iwn_calib_info *calib_result = &sc->calib_results[idx]; - - DPRINTF(sc, IWN_DEBUG_CALIBRATE, - "%s: saving calibration result code=%d, idx=%d, len=%d\n", - __func__, calib->code, idx, len); - - if (calib_result->buf != NULL) - free(calib_result->buf, M_DEVBUF); - - calib_result->buf = malloc(len, M_DEVBUF, M_NOWAIT); - if (calib_result->buf == NULL) { - device_printf(sc->sc_dev, - "%s: not enough memory for calibration result " - "code=%d, len=%d\n", __func__, calib->code, len); - return ENOMEM; - } - - calib_result->len = len; - memcpy(calib_result->buf, calib, len); - return 0; -} - -static void -iwn5000_free_calib_results(struct iwn_softc *sc) -{ - struct iwn_calib_info *calib_result; - int idx; - - for (idx = 0; idx < IWN_CALIB_NUM; idx++) { - calib_result = &sc->calib_results[idx]; - - if (calib_result->buf != NULL) - free(calib_result->buf, M_DEVBUF); - - calib_result->buf = NULL; - calib_result->len = 0; - } -} - -/* - * Obtain the crystal calibration result from the EEPROM. - */ -static int -iwn5000_chrystal_calib(struct iwn_softc *sc) -{ - struct iwn5000_phy_calib_crystal cmd; - uint32_t base, crystal; - uint16_t val; - - /* Read crystal calibration. */ - iwn_read_prom_data(sc, IWN5000_EEPROM_CAL, &val, 2); - base = le16toh(val); - iwn_read_prom_data(sc, base + IWN5000_EEPROM_CRYSTAL, &crystal, - sizeof(uint32_t)); - DPRINTF(sc, IWN_DEBUG_CALIBRATE, "%s: crystal calibration=0x%08x\n", - __func__, le32toh(crystal)); - - memset(&cmd, 0, sizeof cmd); - cmd.code = IWN5000_PHY_CALIB_CRYSTAL; - cmd.ngroups = 1; - cmd.isvalid = 1; - cmd.cap_pin[0] = le32toh(crystal) & 0xff; - cmd.cap_pin[1] = (le32toh(crystal) >> 16) & 0xff; - - return iwn5000_save_calib_result(sc, (struct iwn_phy_calib *)&cmd, - sizeof cmd, IWN_CALIB_IDX_XTAL); -} - -/* - * Query calibration results from the initialization firmware. We do this - * only once at first boot. + * Query calibration tables from the initialization firmware. We do this + * only once at first boot. Called from a process context. */ static int -iwn5000_send_calib_query(struct iwn_softc *sc, uint32_t cfg) +iwn5000_query_calibration(struct iwn_softc *sc) { -#define CALIB_INIT_CFG 0xffffffff; struct iwn5000_calib_config cmd; int error; memset(&cmd, 0, sizeof cmd); - cmd.ucode.once.enable = CALIB_INIT_CFG; - if (cfg == 0) { - cmd.ucode.once.start = CALIB_INIT_CFG; - cmd.ucode.once.send = CALIB_INIT_CFG; - cmd.ucode.flags = CALIB_INIT_CFG; - } else - cmd.ucode.once.start = cfg; - - DPRINTF(sc, IWN_DEBUG_CALIBRATE, - "%s: query calibration results, cfg %x\n", __func__, cfg); - + cmd.ucode.once.enable = 0xffffffff; + cmd.ucode.once.start = 0xffffffff; + cmd.ucode.once.send = 0xffffffff; + cmd.ucode.flags = 0xffffffff; + DPRINTF(sc, IWN_DEBUG_CALIBRATE, "%s: sending calibration query\n", + __func__); error = iwn_cmd(sc, IWN5000_CMD_CALIB_CONFIG, &cmd, sizeof cmd, 0); if (error != 0) return error; /* Wait at most two seconds for calibration to complete. */ if (!(sc->sc_flags & IWN_FLAG_CALIB_DONE)) - error = msleep(sc, &sc->sc_mtx, PCATCH, "iwninit", 2 * hz); - + error = msleep(sc, &sc->sc_mtx, PCATCH, "iwncal", 2 * hz); return error; -#undef CALIB_INIT_CFG } /* - * Process a CALIBRATION_RESULT notification sent by the initialization - * firmware on response to a CMD_CALIB_CONFIG command. + * Send calibration results to the runtime firmware. These results were + * obtained on first boot from the initialization firmware. */ static int -iwn5000_rx_calib_result(struct iwn_softc *sc, struct iwn_rx_desc *desc, - struct iwn_rx_data *data) +iwn5000_send_calibration(struct iwn_softc *sc) { -#define FRAME_SIZE_MASK 0x3fff - struct iwn_phy_calib *calib = (struct iwn_phy_calib *)(desc + 1); - int len, idx; - - bus_dmamap_sync(sc->rxq.data_dmat, data->map, BUS_DMASYNC_POSTREAD); - len = (le32toh(desc->len) & FRAME_SIZE_MASK); - - /* Remove length field itself. */ - len -= 4; + int idx, error; - /* - * Determine the order in which the results will be send to the - * runtime firmware. - */ - switch (calib->code) { - case IWN5000_PHY_CALIB_DC: - idx = IWN_CALIB_IDX_DC; - break; - case IWN5000_PHY_CALIB_LO: - idx = IWN_CALIB_IDX_LO; - break; - case IWN5000_PHY_CALIB_TX_IQ: - idx = IWN_CALIB_IDX_TX_IQ; - break; - case IWN5000_PHY_CALIB_TX_IQ_PERIODIC: - idx = IWN_CALIB_IDX_TX_IQ_PERIODIC; - break; - case IWN5000_PHY_CALIB_BASE_BAND: - idx = IWN_CALIB_IDX_BASE_BAND; - break; - default: + for (idx = 0; idx < 5; idx++) { + if (sc->calibcmd[idx].buf == NULL) + continue; /* No results available. */ DPRINTF(sc, IWN_DEBUG_CALIBRATE, - "%s: unknown calibration code=%d\n", __func__, calib->code); - return EINVAL; + "send calibration result idx=%d len=%d\n", idx, + sc->calibcmd[idx].len); + error = iwn_cmd(sc, IWN_CMD_PHY_CALIB, sc->calibcmd[idx].buf, + sc->calibcmd[idx].len, 0); + if (error != 0) { + device_printf(sc->sc_dev, + "%s: could not send calibration result, error %d\n", + __func__, error); + return error; + } } - return iwn5000_save_calib_result(sc, calib, len, idx); -#undef FRAME_SIZE_MASK + return 0; } static int @@ -5415,6 +5310,22 @@ iwn5000_send_wimax_coex(struct iwn_softc return iwn_cmd(sc, IWN5000_CMD_WIMAX_COEX, &wimax, sizeof wimax, 0); } +static int +iwn5000_crystal_calib(struct iwn_softc *sc) +{ + struct iwn5000_phy_calib_crystal cmd; + + memset(&cmd, 0, sizeof cmd); + cmd.code = IWN5000_PHY_CALIB_CRYSTAL; + cmd.ngroups = 1; + cmd.isvalid = 1; + cmd.cap_pin[0] = le32toh(sc->eeprom_crystal) & 0xff; + cmd.cap_pin[1] = (le32toh(sc->eeprom_crystal) >> 16) & 0xff; + DPRINTF(sc, IWN_DEBUG_CALIBRATE, "sending crystal calibration %d, %d\n", + cmd.cap_pin[0], cmd.cap_pin[1]); + return iwn_cmd(sc, IWN_CMD_PHY_CALIB, &cmd, sizeof cmd, 0); +} + /* * This function is called after the runtime firmware notifies us of its * readiness (called in a process context.) @@ -5531,36 +5442,21 @@ iwn5000_post_alive(struct iwn_softc *sc) __func__, error); return error; } - - if (!(sc->sc_flags & IWN_FLAG_CALIB_DONE)) { - /* - * Start calibration by setting and sending the chrystal - * calibration first, this must be done before we are able - * to query the other calibration results. - */ - error = iwn5000_chrystal_calib(sc); - if (error != 0) { - device_printf(sc->sc_dev, - "%s: could not set chrystal calibration, " - "error=%d\n", __func__, error); - return error; - } - error = iwn5000_send_calib_results(sc); + if (sc->hw_type != IWN_HW_REV_TYPE_5150) { + /* Perform crystal calibration. */ + error = iwn5000_crystal_calib(sc); if (error != 0) { device_printf(sc->sc_dev, - "%s: could not send chrystal calibration, " - "error=%d\n", __func__, error); + "%s: crystal calibration failed, error %d\n", + __func__, error); return error; } - - /* - * Query other calibration results from the initialization - * firmware. - */ - error = iwn5000_send_calib_query(sc, 0); - if (error != 0) { + } + if (!(sc->sc_flags & IWN_FLAG_CALIB_DONE)) { + /* Query calibration from the initialization firmware. */ + if ((error = iwn5000_query_calibration(sc)) != 0) { device_printf(sc->sc_dev, - "%s: could not query calibration, error=%d\n", + "%s: could not query calibration, error %d\n", __func__, error); return error; } @@ -5572,24 +5468,8 @@ iwn5000_post_alive(struct iwn_softc *sc) iwn_hw_stop(sc); error = iwn_hw_init(sc); } else { - /* - * Send calibration results obtained from the initialization - * firmware to the runtime firmware. - */ - error = iwn5000_send_calib_results(sc); - - /* - * Tell the runtime firmware to do certain calibration types. - */ - if (sc->calib_runtime != 0) { - error = iwn5000_send_calib_query(sc, sc->calib_runtime); - if (error != 0) { - device_printf(sc->sc_dev, - "%s: could not send query calibration, " - "error=%d, cfg=%x\n", __func__, error, - sc->calib_runtime); - } - } + /* Send calibration results to runtime firmware. */ + error = iwn5000_send_calibration(sc); } return error; } Modified: stable/8/sys/dev/iwn/if_iwnvar.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 11:33:55 2011 (r223238) +++ stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 11:36:57 2011 (r223239) @@ -264,24 +264,9 @@ struct iwn_softc { int calib_cnt; struct iwn_calib_state calib; struct callout watchdog_to; - u_int calib_init; - u_int calib_runtime; -#define IWN_CALIB_XTAL (1 << IWN_CALIB_IDX_XTAL) -#define IWN_CALIB_DC (1 << IWN_CALIB_IDX_DC) -#define IWN_CALIB_LO (1 << IWN_CALIB_IDX_LO) -#define IWN_CALIB_TX_IQ (1 << IWN_CALIB_IDX_TX_IQ) -#define IWN_CALIB_TX_IQ_PERIODIC (1 << IWN_CALIB_IDX_TX_IQ_PERIODIC) -#define IWN_CALIB_BASE_BAND (1 << IWN_CALIB_IDX_BASE_BAND) -#define IWN_CALIB_NUM 6 - struct iwn_calib_info calib_results[IWN_CALIB_NUM]; -#define IWN_CALIB_IDX_XTAL 0 -#define IWN_CALIB_IDX_DC 1 -#define IWN_CALIB_IDX_LO 2 -#define IWN_CALIB_IDX_TX_IQ 3 -#define IWN_CALIB_IDX_TX_IQ_PERIODIC 4 -#define IWN_CALIB_IDX_BASE_BAND 5 struct iwn_fw_info fw; + struct iwn_calib_info calibcmd[5]; uint32_t errptr; struct iwn_rx_stat last_rx_stat; @@ -300,6 +285,8 @@ struct iwn_softc { uint16_t rfcfg; uint8_t calib_ver; char eeprom_domain[4]; + uint32_t eeprom_crystal; + int16_t eeprom_temp; int16_t eeprom_voltage; int8_t maxpwr2GHz; int8_t maxpwr5GHz; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:39:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 97CC11065670; Sat, 18 Jun 2011 11:39:09 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7CEB18FC12; Sat, 18 Jun 2011 11:39:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBd900038868; Sat, 18 Jun 2011 11:39:09 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBd9gi038865; Sat, 18 Jun 2011 11:39:09 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181139.p5IBd9gi038865@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:39:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223240 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:39:09 -0000 Author: bschmidt Date: Sat Jun 18 11:39:09 2011 New Revision: 223240 URL: http://svn.freebsd.org/changeset/base/223240 Log: MFC r220676-220677: The 6005 series devices need additional temperature offset calibration as well as the IWN_GP_DRIVER_CALIB_VER6 bit set. Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnreg.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:36:57 2011 (r223239) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:39:09 2011 (r223240) @@ -223,6 +223,7 @@ static int iwn5000_query_calibration(str static int iwn5000_send_calibration(struct iwn_softc *); static int iwn5000_send_wimax_coex(struct iwn_softc *); static int iwn5000_crystal_calib(struct iwn_softc *); +static int iwn5000_temp_offset_calib(struct iwn_softc *); static int iwn4965_post_alive(struct iwn_softc *); static int iwn5000_post_alive(struct iwn_softc *); static int iwn4965_load_bootcode(struct iwn_softc *, const uint8_t *, @@ -4539,6 +4540,16 @@ iwn_config(struct iwn_softc *sc) int error; uint16_t rxchain; + if (sc->hw_type == IWN_HW_REV_TYPE_6005) { + /* Set radio temperature sensor offset. */ + error = iwn5000_temp_offset_calib(sc); + if (error != 0) { + device_printf(sc->sc_dev, + "%s: could not set temperature offset\n", __func__); + return error; + } + } + /* Configure valid TX chains for 5000 Series. */ if (sc->hw_type != IWN_HW_REV_TYPE_4965) { txmask = htole32(sc->txchainmask); @@ -5326,6 +5337,24 @@ iwn5000_crystal_calib(struct iwn_softc * return iwn_cmd(sc, IWN_CMD_PHY_CALIB, &cmd, sizeof cmd, 0); } +static int +iwn5000_temp_offset_calib(struct iwn_softc *sc) +{ + struct iwn5000_phy_calib_temp_offset cmd; + + memset(&cmd, 0, sizeof cmd); + cmd.code = IWN5000_PHY_CALIB_TEMP_OFFSET; + cmd.ngroups = 1; + cmd.isvalid = 1; + if (sc->eeprom_temp != 0) + cmd.offset = htole16(sc->eeprom_temp); + else + cmd.offset = htole16(IWN_DEFAULT_TEMP_OFFSET); + DPRINTF(sc, IWN_DEBUG_CALIBRATE, "setting radio sensor offset to %d\n", + le16toh(cmd.offset)); + return iwn_cmd(sc, IWN_CMD_PHY_CALIB, &cmd, sizeof cmd, 0); +} + /* * This function is called after the runtime firmware notifies us of its * readiness (called in a process context.) @@ -6028,7 +6057,8 @@ iwn5000_nic_config(struct iwn_softc *sc) /* Use internal power amplifier only. */ IWN_WRITE(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_RADIO_2X2_IPA); } - if (sc->hw_type == IWN_HW_REV_TYPE_6050 && sc->calib_ver >= 6) { + if ((sc->hw_type == IWN_HW_REV_TYPE_6050 || + sc->hw_type == IWN_HW_REV_TYPE_6005) && sc->calib_ver >= 6) { /* Indicate that ROM calibration version is >=6. */ IWN_SETBITS(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_CALIB_VER6); } Modified: stable/8/sys/dev/iwn/if_iwnreg.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 11:36:57 2011 (r223239) +++ stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 11:39:09 2011 (r223240) @@ -885,6 +885,8 @@ struct iwn_phy_calib { #define IWN5000_PHY_CALIB_CRYSTAL 15 #define IWN5000_PHY_CALIB_BASE_BAND 16 #define IWN5000_PHY_CALIB_TX_IQ_PERIODIC 17 +#define IWN5000_PHY_CALIB_TEMP_OFFSET 18 + #define IWN5000_PHY_CALIB_RESET_NOISE_GAIN 18 #define IWN5000_PHY_CALIB_NOISE_GAIN 19 @@ -903,6 +905,17 @@ struct iwn5000_phy_calib_crystal { uint8_t reserved[2]; } __packed; +struct iwn5000_phy_calib_temp_offset { + uint8_t code; + uint8_t group; + uint8_t ngroups; + uint8_t isvalid; + int16_t offset; +#define IWN_DEFAULT_TEMP_OFFSET 2700 + + uint16_t reserved; +} __packed; + struct iwn_phy_calib_gain { uint8_t code; uint8_t group; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:41:06 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CDCC6106566C; Sat, 18 Jun 2011 11:41:06 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BCA2D8FC0A; Sat, 18 Jun 2011 11:41:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBf6ot038975; Sat, 18 Jun 2011 11:41:06 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBf66g038973; Sat, 18 Jun 2011 11:41:06 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181141.p5IBf66g038973@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:41:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223241 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:41:06 -0000 Author: bschmidt Date: Sat Jun 18 11:41:06 2011 New Revision: 223241 URL: http://svn.freebsd.org/changeset/base/223241 Log: MFC r220687: Obtain the channel number directly from the laster RXON command, also chan is an uint8_t. Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:39:09 2011 (r223240) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:41:06 2011 (r223241) @@ -1732,7 +1732,8 @@ iwn_read_eeprom_band(struct iwn_softc *s struct iwn_eeprom_chan *channels = sc->eeprom_channels[n]; const struct iwn_chan_band *band = &iwn_bands[n]; struct ieee80211_channel *c; - int i, chan, nflags; + uint8_t chan; + int i, nflags; for (i = 0; i < band->nchan; i++) { if (!(channels[i].flags & IWN_EEPROM_CHAN_VALID)) { @@ -3806,8 +3807,6 @@ iwn4965_set_txpower(struct iwn_softc *sc ((y1) + fdivround(((int)(x) - (x1)) * ((y2) - (y1)), (x2) - (x1), n)) static const int tdiv[IWN_NATTEN_GROUPS] = { 9, 8, 8, 8, 6 }; - struct ifnet *ifp = sc->sc_ifp; - struct ieee80211com *ic = ifp->if_l2com; struct iwn_ucode_info *uc = &sc->ucode_info; struct iwn4965_cmd_txpower cmd; struct iwn4965_eeprom_chan_samples *chans; @@ -3816,8 +3815,8 @@ iwn4965_set_txpower(struct iwn_softc *sc const uint8_t *rf_gain, *dsp_gain; uint8_t chan; - /* Retrieve channel number. */ - chan = ieee80211_chan2ieee(ic, ch); + /* Retrieve current channel from last RXON. */ + chan = sc->rxon.chan; DPRINTF(sc, IWN_DEBUG_RESET, "setting TX power for channel %d\n", chan); From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:43:06 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE18A106564A; Sat, 18 Jun 2011 11:43:06 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A39B88FC08; Sat, 18 Jun 2011 11:43:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBh6Jg039083; Sat, 18 Jun 2011 11:43:06 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBh6VY039081; Sat, 18 Jun 2011 11:43:06 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181143.p5IBh6VY039081@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:43:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223242 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:43:06 -0000 Author: bschmidt Date: Sat Jun 18 11:43:06 2011 New Revision: 223242 URL: http://svn.freebsd.org/changeset/base/223242 Log: MFC r220688: Pass errors that might happen during state transitions up to net80211. Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:41:06 2011 (r223241) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:43:06 2011 (r223242) @@ -1920,7 +1920,7 @@ iwn_newstate(struct ieee80211vap *vap, e struct iwn_vap *ivp = IWN_VAP(vap); struct ieee80211com *ic = vap->iv_ic; struct iwn_softc *sc = ic->ic_ifp->if_softc; - int error; + int error = 0; DPRINTF(sc, IWN_DEBUG_STATE, "%s: %s -> %s\n", __func__, ieee80211_state_name[vap->iv_state], @@ -1947,7 +1947,10 @@ iwn_newstate(struct ieee80211vap *vap, e sc->rxon.filter &= ~htole32(IWN_FILTER_BSS); sc->calib.state = IWN_CALIB_STATE_INIT; - error = iwn_auth(sc, vap); + if ((error = iwn_auth(sc, vap)) != 0) { + device_printf(sc->sc_dev, + "%s: could not move to auth state\n", __func__); + } break; case IEEE80211_S_RUN: @@ -1964,7 +1967,10 @@ iwn_newstate(struct ieee80211vap *vap, e * which is done with a firmware cmd. We also defer * starting the timers until that work is done. */ - error = iwn_run(sc, vap); + if ((error = iwn_run(sc, vap)) != 0) { + device_printf(sc->sc_dev, + "%s: could not move to run state\n", __func__); + } break; case IEEE80211_S_INIT: @@ -1976,6 +1982,8 @@ iwn_newstate(struct ieee80211vap *vap, e } IWN_UNLOCK(sc); IEEE80211_LOCK(ic); + if (error != 0) + return error; return ivp->iv_newstate(vap, nstate, arg); } From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:44:54 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9E7CD106566C; Sat, 18 Jun 2011 11:44:54 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 73B1B8FC12; Sat, 18 Jun 2011 11:44:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBisaS039191; Sat, 18 Jun 2011 11:44:54 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBisNf039189; Sat, 18 Jun 2011 11:44:54 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181144.p5IBisNf039189@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:44:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223243 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:44:54 -0000 Author: bschmidt Date: Sat Jun 18 11:44:54 2011 New Revision: 223243 URL: http://svn.freebsd.org/changeset/base/223243 Log: MFC r220689: RSSI related syncs with the OpenBSD code: - read RSSI only for the active chains - cast RSSI/NF to int8_t before passing it up to radiotap - remove the htole64() for the timestamp Obtained from: OpenBSD Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:43:06 2011 (r223242) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:44:54 2011 (r223243) @@ -2128,18 +2128,18 @@ iwn_rx_done(struct iwn_softc *sc, struct m->m_data = head; m->m_pkthdr.len = m->m_len = len; - rssi = hal->get_rssi(sc, stat); - /* Grab a reference to the source node. */ wh = mtod(m, struct ieee80211_frame *); ni = ieee80211_find_rxnode(ic, (struct ieee80211_frame_min *)wh); nf = (ni != NULL && ni->ni_vap->iv_state == IEEE80211_S_RUN && (ic->ic_flags & IEEE80211_F_SCAN) == 0) ? sc->noise : -95; + rssi = hal->get_rssi(sc, stat); + if (ieee80211_radiotap_active(ic)) { struct iwn_rx_radiotap_header *tap = &sc->sc_rxtap; - tap->wr_tsft = htole64(stat->tstamp); + tap->wr_tsft = stat->tstamp; tap->wr_flags = 0; if (stat->flags & htole16(IWN_STAT_FLAG_SHPREAMBLE)) tap->wr_flags |= IEEE80211_RADIOTAP_F_SHORTPRE; @@ -2161,8 +2161,8 @@ iwn_rx_done(struct iwn_softc *sc, struct /* Unknown rate: should not happen. */ default: tap->wr_rate = 0; } - tap->wr_dbm_antsignal = rssi; - tap->wr_dbm_antnoise = nf; + tap->wr_dbm_antsignal = (int8_t)rssi; + tap->wr_dbm_antnoise = (int8_t)nf; } IWN_UNLOCK(sc); @@ -3985,18 +3985,12 @@ iwn4965_get_rssi(struct iwn_softc *sc, s agc = (le16toh(phy->agc) >> 7) & 0x7f; rssi = 0; -#if 0 - if (mask & IWN_ANT_A) /* Ant A */ - rssi = max(rssi, phy->rssi[0]); - if (mask & IWN_ATH_B) /* Ant B */ - rssi = max(rssi, phy->rssi[2]); - if (mask & IWN_ANT_C) /* Ant C */ - rssi = max(rssi, phy->rssi[4]); -#else - rssi = max(rssi, phy->rssi[0]); - rssi = max(rssi, phy->rssi[2]); - rssi = max(rssi, phy->rssi[4]); -#endif + if (mask & IWN_ANT_A) + rssi = MAX(rssi, phy->rssi[0]); + if (mask & IWN_ANT_B) + rssi = MAX(rssi, phy->rssi[2]); + if (mask & IWN_ANT_C) + rssi = MAX(rssi, phy->rssi[4]); DPRINTF(sc, IWN_DEBUG_RECV, "%s: agc %d mask 0x%x rssi %d %d %d " "result %d\n", __func__, agc, mask, From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:51:18 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 25463106566B; Sat, 18 Jun 2011 11:51:18 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 129188FC0A; Sat, 18 Jun 2011 11:51:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBpIgp039429; Sat, 18 Jun 2011 11:51:18 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBpIjl039426; Sat, 18 Jun 2011 11:51:18 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181151.p5IBpIjl039426@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:51:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223244 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:51:18 -0000 Author: bschmidt Date: Sat Jun 18 11:51:17 2011 New Revision: 223244 URL: http://svn.freebsd.org/changeset/base/223244 Log: MFC r220691-220694,220700-220702,220704,220710-220711: - Remove the flags argument of iwn_dma_contig_alloc(), it is always set as BUS_DMA_NOWAIT. While here also set BUS_DMA_COHERENT. - OpenBSD uses IWN_RBUF_SIZE not MJUMPAGESIZE for the RX path, also replace caddr_t with void * to be in sync. - In case a new mbuf can't be loaded, reuse the old one. - scratch_paddr has the same address pre-assigned, use that instead. - Rewrite DMA segment handling to be more inline with the OpenBSD code. Also change the m_len == 0 hack to have less code churn. - Make sure to destroy all DMA tags and maps. - Unify TX/RX ring allocation, finish the descriptior DMA stuff before starting with data. - Add missing bus_dmamap_sync calls as well as remove two duplicate ones. - Prevent double-free, also use the same error codes as OpenBSD. - Replace RX/TX ring allocation error messages with something more sane and remove those where the caller already prints one. Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:44:54 2011 (r223243) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:51:17 2011 (r223244) @@ -88,7 +88,7 @@ static int iwn_init_otprom(struct iwn_so static int iwn_read_prom_data(struct iwn_softc *, uint32_t, void *, int); static void iwn_dma_map_addr(void *, bus_dma_segment_t *, int, int); static int iwn_dma_contig_alloc(struct iwn_softc *, struct iwn_dma_info *, - void **, bus_size_t, bus_size_t, int); + void **, bus_size_t, bus_size_t); static void iwn_dma_contig_free(struct iwn_dma_info *); static int iwn_alloc_sched(struct iwn_softc *); static void iwn_free_sched(struct iwn_softc *); @@ -1117,7 +1117,7 @@ iwn_dma_map_addr(void *arg, bus_dma_segm static int iwn_dma_contig_alloc(struct iwn_softc *sc, struct iwn_dma_info *dma, - void **kvap, bus_size_t size, bus_size_t alignment, int flags) + void **kvap, bus_size_t size, bus_size_t alignment) { int error; @@ -1126,27 +1126,21 @@ iwn_dma_contig_alloc(struct iwn_softc *s error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), alignment, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, size, - 1, size, flags, NULL, NULL, &dma->tag); - if (error != 0) { - device_printf(sc->sc_dev, - "%s: bus_dma_tag_create failed, error %d\n", - __func__, error); + 1, size, BUS_DMA_NOWAIT, NULL, NULL, &dma->tag); + if (error != 0) goto fail; - } + error = bus_dmamem_alloc(dma->tag, (void **)&dma->vaddr, - flags | BUS_DMA_ZERO, &dma->map); - if (error != 0) { - device_printf(sc->sc_dev, - "%s: bus_dmamem_alloc failed, error %d\n", __func__, error); + BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, &dma->map); + if (error != 0) goto fail; - } - error = bus_dmamap_load(dma->tag, dma->map, dma->vaddr, - size, iwn_dma_map_addr, &dma->paddr, flags); - if (error != 0) { - device_printf(sc->sc_dev, - "%s: bus_dmamap_load failed, error %d\n", __func__, error); + + error = bus_dmamap_load(dma->tag, dma->map, dma->vaddr, size, + iwn_dma_map_addr, &dma->paddr, BUS_DMA_NOWAIT); + if (error != 0) goto fail; - } + + bus_dmamap_sync(dma->tag, dma->map, BUS_DMASYNC_PREWRITE); if (kvap != NULL) *kvap = dma->vaddr; @@ -1159,16 +1153,20 @@ fail: static void iwn_dma_contig_free(struct iwn_dma_info *dma) { - if (dma->tag != NULL) { - if (dma->map != NULL) { - if (dma->paddr == 0) { - bus_dmamap_sync(dma->tag, dma->map, - BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); - bus_dmamap_unload(dma->tag, dma->map); - } + if (dma->map != NULL) { + if (dma->vaddr != NULL) { + bus_dmamap_sync(dma->tag, dma->map, + BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); + bus_dmamap_unload(dma->tag, dma->map); bus_dmamem_free(dma->tag, &dma->vaddr, dma->map); + dma->vaddr = NULL; } + bus_dmamap_destroy(dma->tag, dma->map); + dma->map = NULL; + } + if (dma->tag != NULL) { bus_dma_tag_destroy(dma->tag); + dma->tag = NULL; } } @@ -1176,8 +1174,8 @@ static int iwn_alloc_sched(struct iwn_softc *sc) { /* TX scheduler rings must be aligned on a 1KB boundary. */ - return iwn_dma_contig_alloc(sc, &sc->sched_dma, - (void **)&sc->sched, sc->sc_hal->schedsz, 1024, BUS_DMA_NOWAIT); + return iwn_dma_contig_alloc(sc, &sc->sched_dma, (void **)&sc->sched, + sc->sc_hal->schedsz, 1024); } static void @@ -1190,8 +1188,7 @@ static int iwn_alloc_kw(struct iwn_softc *sc) { /* "Keep Warm" page must be aligned on a 4KB boundary. */ - return iwn_dma_contig_alloc(sc, &sc->kw_dma, NULL, 4096, 4096, - BUS_DMA_NOWAIT); + return iwn_dma_contig_alloc(sc, &sc->kw_dma, NULL, 4096, 4096); } static void @@ -1204,8 +1201,8 @@ static int iwn_alloc_ict(struct iwn_softc *sc) { /* ICT table must be aligned on a 4KB boundary. */ - return iwn_dma_contig_alloc(sc, &sc->ict_dma, - (void **)&sc->ict, IWN_ICT_SIZE, 4096, BUS_DMA_NOWAIT); + return iwn_dma_contig_alloc(sc, &sc->ict_dma, (void **)&sc->ict, + IWN_ICT_SIZE, 4096); } static void @@ -1218,8 +1215,8 @@ static int iwn_alloc_fwmem(struct iwn_softc *sc) { /* Must be aligned on a 16-byte boundary. */ - return iwn_dma_contig_alloc(sc, &sc->fw_dma, NULL, - sc->sc_hal->fwsz, 16, BUS_DMA_NOWAIT); + return iwn_dma_contig_alloc(sc, &sc->fw_dma, NULL, sc->sc_hal->fwsz, + 16); } static void @@ -1238,33 +1235,33 @@ iwn_alloc_rx_ring(struct iwn_softc *sc, /* Allocate RX descriptors (256-byte aligned). */ size = IWN_RX_RING_COUNT * sizeof (uint32_t); - error = iwn_dma_contig_alloc(sc, &ring->desc_dma, - (void **)&ring->desc, size, 256, BUS_DMA_NOWAIT); + error = iwn_dma_contig_alloc(sc, &ring->desc_dma, (void **)&ring->desc, + size, 256); if (error != 0) { device_printf(sc->sc_dev, - "%s: could not allocate Rx ring DMA memory, error %d\n", + "%s: could not allocate RX ring DMA memory, error %d\n", __func__, error); goto fail; } - error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 1, 0, - BUS_SPACE_MAXADDR_32BIT, - BUS_SPACE_MAXADDR, NULL, NULL, MJUMPAGESIZE, 1, - MJUMPAGESIZE, BUS_DMA_NOWAIT, NULL, NULL, &ring->data_dmat); + /* Allocate RX status area (16-byte aligned). */ + error = iwn_dma_contig_alloc(sc, &ring->stat_dma, (void **)&ring->stat, + sizeof (struct iwn_rx_status), 16); if (error != 0) { device_printf(sc->sc_dev, - "%s: bus_dma_tag_create_failed, error %d\n", + "%s: could not allocate RX status DMA memory, error %d\n", __func__, error); goto fail; } - /* Allocate RX status area (16-byte aligned). */ - error = iwn_dma_contig_alloc(sc, &ring->stat_dma, - (void **)&ring->stat, sizeof (struct iwn_rx_status), - 16, BUS_DMA_NOWAIT); + /* Create RX buffer DMA tag. */ + error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 1, 0, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, + IWN_RBUF_SIZE, 1, IWN_RBUF_SIZE, BUS_DMA_NOWAIT, NULL, NULL, + &ring->data_dmat); if (error != 0) { device_printf(sc->sc_dev, - "%s: could not allocate Rx status DMA memory, error %d\n", + "%s: could not create RX buf DMA tag, error %d\n", __func__, error); goto fail; } @@ -1279,33 +1276,29 @@ iwn_alloc_rx_ring(struct iwn_softc *sc, error = bus_dmamap_create(ring->data_dmat, 0, &data->map); if (error != 0) { device_printf(sc->sc_dev, - "%s: bus_dmamap_create failed, error %d\n", + "%s: could not create RX buf DMA map, error %d\n", __func__, error); goto fail; } - data->m = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, MJUMPAGESIZE); + data->m = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, + IWN_RBUF_SIZE); if (data->m == NULL) { device_printf(sc->sc_dev, - "%s: could not allocate rx mbuf\n", __func__); - error = ENOMEM; + "%s: could not allocate RX mbuf\n", __func__); + error = ENOBUFS; goto fail; } - /* Map page. */ error = bus_dmamap_load(ring->data_dmat, data->map, - mtod(data->m, caddr_t), MJUMPAGESIZE, - iwn_dma_map_addr, &paddr, BUS_DMA_NOWAIT); + mtod(data->m, void *), IWN_RBUF_SIZE, iwn_dma_map_addr, + &paddr, BUS_DMA_NOWAIT); if (error != 0 && error != EFBIG) { device_printf(sc->sc_dev, - "%s: bus_dmamap_load failed, error %d\n", - __func__, error); - m_freem(data->m); - error = ENOMEM; /* XXX unique code */ + "%s: can't not map mbuf, error %d\n", __func__, + error); goto fail; } - bus_dmamap_sync(ring->data_dmat, data->map, - BUS_DMASYNC_PREWRITE); /* Set physical address of RX buffer (256-byte aligned). */ ring->desc[i] = htole32(paddr >> 8); @@ -1358,10 +1351,15 @@ iwn_free_rx_ring(struct iwn_softc *sc, s BUS_DMASYNC_POSTREAD); bus_dmamap_unload(ring->data_dmat, data->map); m_freem(data->m); + data->m = NULL; } if (data->map != NULL) bus_dmamap_destroy(ring->data_dmat, data->map); } + if (ring->data_dmat != NULL) { + bus_dma_tag_destroy(ring->data_dmat); + ring->data_dmat = NULL; + } } static int @@ -1377,8 +1375,8 @@ iwn_alloc_tx_ring(struct iwn_softc *sc, /* Allocate TX descriptors (256-byte aligned.) */ size = IWN_TX_RING_COUNT * sizeof(struct iwn_tx_desc); - error = iwn_dma_contig_alloc(sc, &ring->desc_dma, - (void **)&ring->desc, size, 256, BUS_DMA_NOWAIT); + error = iwn_dma_contig_alloc(sc, &ring->desc_dma, (void **)&ring->desc, + size, 256); if (error != 0) { device_printf(sc->sc_dev, "%s: could not allocate TX ring DMA memory, error %d\n", @@ -1394,8 +1392,8 @@ iwn_alloc_tx_ring(struct iwn_softc *sc, return 0; size = IWN_TX_RING_COUNT * sizeof(struct iwn_tx_cmd); - error = iwn_dma_contig_alloc(sc, &ring->cmd_dma, - (void **)&ring->cmd, size, 4, BUS_DMA_NOWAIT); + error = iwn_dma_contig_alloc(sc, &ring->cmd_dma, (void **)&ring->cmd, + size, 4); if (error != 0) { device_printf(sc->sc_dev, "%s: could not allocate TX cmd DMA memory, error %d\n", @@ -1409,7 +1407,7 @@ iwn_alloc_tx_ring(struct iwn_softc *sc, MCLBYTES, BUS_DMA_NOWAIT, NULL, NULL, &ring->data_dmat); if (error != 0) { device_printf(sc->sc_dev, - "%s: bus_dma_tag_create_failed, error %d\n", + "%s: could not create TX buf DMA tag, error %d\n", __func__, error); goto fail; } @@ -1425,12 +1423,10 @@ iwn_alloc_tx_ring(struct iwn_softc *sc, error = bus_dmamap_create(ring->data_dmat, 0, &data->map); if (error != 0) { device_printf(sc->sc_dev, - "%s: bus_dmamap_create failed, error %d\n", + "%s: could not create TX buf DMA map, error %d\n", __func__, error); goto fail; } - bus_dmamap_sync(ring->data_dmat, data->map, - BUS_DMASYNC_PREWRITE); } return 0; fail: @@ -1447,6 +1443,8 @@ iwn_reset_tx_ring(struct iwn_softc *sc, struct iwn_tx_data *data = &ring->data[i]; if (data->m != NULL) { + bus_dmamap_sync(ring->data_dmat, data->map, + BUS_DMASYNC_POSTWRITE); bus_dmamap_unload(ring->data_dmat, data->map); m_freem(data->m); data->m = NULL; @@ -1481,6 +1479,10 @@ iwn_free_tx_ring(struct iwn_softc *sc, s if (data->map != NULL) bus_dmamap_destroy(ring->data_dmat, data->map); } + if (ring->data_dmat != NULL) { + bus_dma_tag_destroy(ring->data_dmat); + ring->data_dmat = NULL; + } } static void @@ -2095,8 +2097,7 @@ iwn_rx_done(struct iwn_softc *sc, struct return; } - /* XXX don't need mbuf, just dma buffer */ - m1 = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, MJUMPAGESIZE); + m1 = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, IWN_RBUF_SIZE); if (m1 == NULL) { DPRINTF(sc, IWN_DEBUG_ANY, "%s: no mbuf to restock ring\n", __func__); @@ -2105,13 +2106,24 @@ iwn_rx_done(struct iwn_softc *sc, struct } bus_dmamap_unload(ring->data_dmat, data->map); - error = bus_dmamap_load(ring->data_dmat, data->map, - mtod(m1, caddr_t), MJUMPAGESIZE, - iwn_dma_map_addr, &paddr, BUS_DMA_NOWAIT); + error = bus_dmamap_load(ring->data_dmat, data->map, mtod(m1, void *), + IWN_RBUF_SIZE, iwn_dma_map_addr, &paddr, BUS_DMA_NOWAIT); if (error != 0 && error != EFBIG) { device_printf(sc->sc_dev, "%s: bus_dmamap_load failed, error %d\n", __func__, error); m_freem(m1); + + /* Try to reload the old mbuf. */ + error = bus_dmamap_load(ring->data_dmat, data->map, + mtod(data->m, void *), IWN_RBUF_SIZE, iwn_dma_map_addr, + &paddr, BUS_DMA_NOWAIT); + if (error != 0 && error != EFBIG) { + panic("%s: could not load old RX mbuf", __func__); + } + /* Physical address may have changed. */ + ring->desc[ring->cur] = htole32(paddr >> 8); + bus_dmamap_sync(ring->data_dmat, ring->desc_dma.map, + BUS_DMASYNC_PREWRITE); ifp->if_ierrors++; return; } @@ -2187,6 +2199,8 @@ iwn_rx_compressed_ba(struct iwn_softc *s struct iwn_compressed_ba *ba = (struct iwn_compressed_ba *)(desc + 1); struct iwn_tx_ring *txq; + bus_dmamap_sync(sc->rxq.data_dmat, data->map, BUS_DMASYNC_POSTREAD); + txq = &sc->txq[letoh16(ba->qid)]; /* XXX TBD */ } @@ -2437,6 +2451,8 @@ iwn_cmd_done(struct iwn_softc *sc, struc /* If the command was mapped in an mbuf, free it. */ if (data->m != NULL) { + bus_dmamap_sync(ring->data_dmat, data->map, + BUS_DMASYNC_POSTWRITE); bus_dmamap_unload(ring->data_dmat, data->map); m_freem(data->m); data->m = NULL; @@ -2898,8 +2914,8 @@ iwn_tx_data(struct iwn_softc *sc, struct struct iwn_cmd_data *tx; struct ieee80211_frame *wh; struct ieee80211_key *k = NULL; - struct mbuf *mnew; - bus_dma_segment_t segs[IWN_MAX_SCATTER]; + struct mbuf *m1; + bus_dma_segment_t *seg, segs[IWN_MAX_SCATTER]; uint32_t flags; u_int hdrlen; int totlen, error, pad, nsegs = 0, i, rate; @@ -3055,26 +3071,30 @@ iwn_tx_data(struct iwn_softc *sc, struct tx->security = 0; tx->flags = htole32(flags); - if (m->m_len > 0) { - error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, - m, segs, &nsegs, BUS_DMA_NOWAIT); - if (error == EFBIG) { - /* too many fragments, linearize */ - mnew = m_collapse(m, M_DONTWAIT, IWN_MAX_SCATTER); - if (mnew == NULL) { - device_printf(sc->sc_dev, - "%s: could not defrag mbuf\n", __func__); - m_freem(m); - return ENOBUFS; - } - m = mnew; - error = bus_dmamap_load_mbuf_sg(ring->data_dmat, - data->map, m, segs, &nsegs, BUS_DMA_NOWAIT); + error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m, segs, + &nsegs, BUS_DMA_NOWAIT); + if (error != 0) { + if (error != EFBIG) { + device_printf(sc->sc_dev, + "%s: can't map mbuf (error %d)\n", __func__, error); + m_freem(m); + return error; } + /* Too many DMA segments, linearize mbuf. */ + m1 = m_collapse(m, M_DONTWAIT, IWN_MAX_SCATTER); + if (m1 == NULL) { + device_printf(sc->sc_dev, + "%s: could not defrag mbuf\n", __func__); + m_freem(m); + return ENOBUFS; + } + m = m1; + + error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m, + segs, &nsegs, BUS_DMA_NOWAIT); if (error != 0) { device_printf(sc->sc_dev, - "%s: bus_dmamap_load_mbuf_sg failed, error %d\n", - __func__, error); + "%s: can't map mbuf (error %d)\n", __func__, error); m_freem(m); return error; } @@ -3087,16 +3107,20 @@ iwn_tx_data(struct iwn_softc *sc, struct __func__, ring->qid, ring->cur, m->m_pkthdr.len, nsegs); /* Fill TX descriptor. */ - desc->nsegs = 1 + nsegs; + desc->nsegs = 1; + if (m->m_len != 0) + desc->nsegs += nsegs; /* First DMA segment is used by the TX command. */ desc->segs[0].addr = htole32(IWN_LOADDR(data->cmd_paddr)); desc->segs[0].len = htole16(IWN_HIADDR(data->cmd_paddr) | (4 + sizeof (*tx) + hdrlen + pad) << 4); /* Other DMA segments are for data payload. */ + seg = &segs[0]; for (i = 1; i <= nsegs; i++) { - desc->segs[i].addr = htole32(IWN_LOADDR(segs[i - 1].ds_addr)); - desc->segs[i].len = htole16(IWN_HIADDR(segs[i - 1].ds_addr) | - segs[i - 1].ds_len << 4); + desc->segs[i].addr = htole32(IWN_LOADDR(seg->ds_addr)); + desc->segs[i].len = htole16(IWN_HIADDR(seg->ds_addr) | + seg->ds_len << 4); + seg++; } bus_dmamap_sync(ring->data_dmat, data->map, BUS_DMASYNC_PREWRITE); @@ -3136,9 +3160,8 @@ iwn_tx_data_raw(struct iwn_softc *sc, st struct ieee80211_frame *wh; struct iwn_tx_desc *desc; struct iwn_tx_data *data; - struct mbuf *mnew; - bus_addr_t paddr; - bus_dma_segment_t segs[IWN_MAX_SCATTER]; + struct mbuf *m1; + bus_dma_segment_t *seg, segs[IWN_MAX_SCATTER]; uint32_t flags; u_int hdrlen; int totlen, error, pad, nsegs = 0, i, rate; @@ -3238,9 +3261,8 @@ iwn_tx_data_raw(struct iwn_softc *sc, st txant = IWN_LSB(sc->txchainmask); tx->rflags |= IWN_RFLAG_ANT(txant); /* Set physical address of "scratch area". */ - paddr = ring->cmd_dma.paddr + ring->cur * sizeof (struct iwn_tx_cmd); - tx->loaddr = htole32(IWN_LOADDR(paddr)); - tx->hiaddr = IWN_HIADDR(paddr); + tx->loaddr = htole32(IWN_LOADDR(data->scratch_paddr)); + tx->hiaddr = IWN_HIADDR(data->scratch_paddr); /* Copy 802.11 header in TX command. */ memcpy((uint8_t *)(tx + 1), wh, hdrlen); @@ -3250,26 +3272,30 @@ iwn_tx_data_raw(struct iwn_softc *sc, st tx->security = 0; tx->flags = htole32(flags); - if (m->m_len > 0) { - error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, - m, segs, &nsegs, BUS_DMA_NOWAIT); - if (error == EFBIG) { - /* Too many fragments, linearize. */ - mnew = m_collapse(m, M_DONTWAIT, IWN_MAX_SCATTER); - if (mnew == NULL) { - device_printf(sc->sc_dev, - "%s: could not defrag mbuf\n", __func__); - m_freem(m); - return ENOBUFS; - } - m = mnew; - error = bus_dmamap_load_mbuf_sg(ring->data_dmat, - data->map, m, segs, &nsegs, BUS_DMA_NOWAIT); + error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m, segs, + &nsegs, BUS_DMA_NOWAIT); + if (error != 0) { + if (error != EFBIG) { + device_printf(sc->sc_dev, + "%s: can't map mbuf (error %d)\n", __func__, error); + m_freem(m); + return error; } + /* Too many DMA segments, linearize mbuf. */ + m1 = m_collapse(m, M_DONTWAIT, IWN_MAX_SCATTER); + if (m1 == NULL) { + device_printf(sc->sc_dev, + "%s: could not defrag mbuf\n", __func__); + m_freem(m); + return ENOBUFS; + } + m = m1; + + error = bus_dmamap_load_mbuf_sg(ring->data_dmat, data->map, m, + segs, &nsegs, BUS_DMA_NOWAIT); if (error != 0) { device_printf(sc->sc_dev, - "%s: bus_dmamap_load_mbuf_sg failed, error %d\n", - __func__, error); + "%s: can't map mbuf (error %d)\n", __func__, error); m_freem(m); return error; } @@ -3282,16 +3308,20 @@ iwn_tx_data_raw(struct iwn_softc *sc, st __func__, ring->qid, ring->cur, m->m_pkthdr.len, nsegs); /* Fill TX descriptor. */ - desc->nsegs = 1 + nsegs; + desc->nsegs = 1; + if (m->m_len != 0) + desc->nsegs += nsegs; /* First DMA segment is used by the TX command. */ desc->segs[0].addr = htole32(IWN_LOADDR(data->cmd_paddr)); desc->segs[0].len = htole16(IWN_HIADDR(data->cmd_paddr) | (4 + sizeof (*tx) + hdrlen + pad) << 4); /* Other DMA segments are for data payload. */ + seg = &segs[0]; for (i = 1; i <= nsegs; i++) { - desc->segs[i].addr = htole32(IWN_LOADDR(segs[i - 1].ds_addr)); - desc->segs[i].len = htole16(IWN_HIADDR(segs[i - 1].ds_addr) | - segs[i - 1].ds_len << 4); + desc->segs[i].addr = htole32(IWN_LOADDR(seg->ds_addr)); + desc->segs[i].len = htole16(IWN_HIADDR(seg->ds_addr) | + seg->ds_len << 4); + seg++; } bus_dmamap_sync(ring->data_dmat, data->map, BUS_DMASYNC_PREWRITE); From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:52:58 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E25EB1065670; Sat, 18 Jun 2011 11:52:58 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D03928FC14; Sat, 18 Jun 2011 11:52:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBqw9c039529; Sat, 18 Jun 2011 11:52:58 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBqwCr039526; Sat, 18 Jun 2011 11:52:58 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181152.p5IBqwCr039526@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:52:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223245 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:52:59 -0000 Author: bschmidt Date: Sat Jun 18 11:52:58 2011 New Revision: 223245 URL: http://svn.freebsd.org/changeset/base/223245 Log: MFC r220715: Instead of hardcoding TX rates and using that to fill the retry table use the neogotiated ni_rates instead. Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnreg.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:51:17 2011 (r223244) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:52:58 2011 (r223245) @@ -121,6 +121,7 @@ static void iwn_read_eeprom_channels(str static void iwn_read_eeprom_enhinfo(struct iwn_softc *); static struct ieee80211_node *iwn_node_alloc(struct ieee80211vap *, const uint8_t mac[IEEE80211_ADDR_LEN]); +static void iwn_newassoc(struct ieee80211_node *, int); static int iwn_media_change(struct ifnet *); static int iwn_newstate(struct ieee80211vap *, enum ieee80211_state, int); static void iwn_calib_timeout(void *); @@ -169,7 +170,8 @@ static int iwn4965_add_node(struct iwn_s int); static int iwn5000_add_node(struct iwn_softc *, struct iwn_node_info *, int); -static int iwn_set_link_quality(struct iwn_softc *, uint8_t, int); +static int iwn_set_link_quality(struct iwn_softc *, + struct ieee80211_node *); static int iwn_add_broadcast_node(struct iwn_softc *, int); static int iwn_wme_update(struct ieee80211com *); static void iwn_update_mcast(struct ifnet *); @@ -648,6 +650,7 @@ iwn_attach(device_t dev) ic->ic_vap_delete = iwn_vap_delete; ic->ic_raw_xmit = iwn_raw_xmit; ic->ic_node_alloc = iwn_node_alloc; + ic->ic_newassoc = iwn_newassoc; ic->ic_wme.wme_update = iwn_wme_update; ic->ic_update_mcast = iwn_update_mcast; ic->ic_scan_start = iwn_scan_start; @@ -1908,6 +1911,18 @@ iwn_node_alloc(struct ieee80211vap *vap, return malloc(sizeof (struct iwn_node), M_80211_NODE,M_NOWAIT | M_ZERO); } +static void +iwn_newassoc(struct ieee80211_node *ni, int isnew) +{ + struct iwn_node *wn = (void *)ni; + int ridx, i; + + for (i = 0; i < ni->ni_rates.rs_nrates; i++) { + ridx = iwn_plcp_signal(ni->ni_rates.rs_rates[i]); + wn->ridx[i] = ridx; + } +} + static int iwn_media_change(struct ifnet *ifp) { @@ -2891,7 +2906,7 @@ iwn_plcp_signal(int rate) { int i; for (i = 0; i < IWN_RIDX_MAX + 1; i++) { - if (rate == iwn_rates[i].rate) + if ((rate & IEEE80211_RATE_VAL) == iwn_rates[i].rate) return i; } @@ -3055,7 +3070,7 @@ iwn_tx_data(struct iwn_softc *sc, struct txant = IWN_LSB(sc->txchainmask); tx->rflags |= IWN_RFLAG_ANT(txant); } else { - tx->linkq = IWN_RIDX_OFDM54 - ridx; + tx->linkq = ni->ni_rates.rs_nrates - ridx - 1; flags |= IWN_TX_LINKQ; /* enable MRR */ } @@ -3599,98 +3614,39 @@ iwn5000_add_node(struct iwn_softc *sc, s return iwn_cmd(sc, IWN_CMD_ADD_NODE, node, sizeof (*node), async); } -#if 0 /* HT */ -static const uint8_t iwn_ridx_to_plcp[] = { - 10, 20, 55, 110, /* CCK */ - 0xd, 0xf, 0x5, 0x7, 0x9, 0xb, 0x1, 0x3, 0x3 /* OFDM R1-R4 */ -}; -static const uint8_t iwn_siso_mcs_to_plcp[] = { - 0, 0, 0, 0, /* CCK */ - 0, 0, 1, 2, 3, 4, 5, 6, 7 /* HT */ -}; -static const uint8_t iwn_mimo_mcs_to_plcp[] = { - 0, 0, 0, 0, /* CCK */ - 8, 8, 9, 10, 11, 12, 13, 14, 15 /* HT */ -}; -#endif -static const uint8_t iwn_prev_ridx[] = { - /* NB: allow fallback from CCK11 to OFDM9 and from OFDM6 to CCK5 */ - 0, 0, 1, 5, /* CCK */ - 2, 4, 3, 6, 7, 8, 9, 10, 10 /* OFDM */ -}; - -/* - * Configure hardware link parameters for the specified - * node operating on the specified channel. - */ static int -iwn_set_link_quality(struct iwn_softc *sc, uint8_t id, int async) +iwn_set_link_quality(struct iwn_softc *sc, struct ieee80211_node *ni) { - struct ifnet *ifp = sc->sc_ifp; - struct ieee80211com *ic = ifp->if_l2com; + struct iwn_node *wn = (void *)ni; + struct ieee80211_rateset *rs = &ni->ni_rates; struct iwn_cmd_link_quality linkq; const struct iwn_rate *rinfo; - int i; - uint8_t txant, ridx; + uint8_t txant; + int i, txrate; /* Use the first valid TX antenna. */ txant = IWN_LSB(sc->txchainmask); memset(&linkq, 0, sizeof linkq); - linkq.id = id; + linkq.id = wn->id; linkq.antmsk_1stream = txant; linkq.antmsk_2stream = IWN_ANT_AB; linkq.ampdu_max = 31; linkq.ampdu_threshold = 3; linkq.ampdu_limit = htole16(4000); /* 4ms */ -#if 0 /* HT */ - if (IEEE80211_IS_CHAN_HT(c)) - linkq.mimo = 1; -#endif - - if (id == IWN_ID_BSS) - ridx = IWN_RIDX_OFDM54; - else if (IEEE80211_IS_CHAN_A(ic->ic_curchan)) - ridx = IWN_RIDX_OFDM6; - else - ridx = IWN_RIDX_CCK1; - + /* Start at highest available bit-rate. */ + txrate = rs->rs_nrates - 1; for (i = 0; i < IWN_MAX_TX_RETRIES; i++) { - rinfo = &iwn_rates[ridx]; -#if 0 /* HT */ - if (IEEE80211_IS_CHAN_HT40(c)) { - linkq.retry[i].plcp = iwn_mimo_mcs_to_plcp[ridx] - | IWN_RIDX_MCS; - linkq.retry[i].rflags = IWN_RFLAG_HT - | IWN_RFLAG_HT40; - /* XXX shortGI */ - } else if (IEEE80211_IS_CHAN_HT(c)) { - linkq.retry[i].plcp = iwn_siso_mcs_to_plcp[ridx] - | IWN_RIDX_MCS; - linkq.retry[i].rflags = IWN_RFLAG_HT; - /* XXX shortGI */ - } else -#endif - { - linkq.retry[i].plcp = rinfo->plcp; - linkq.retry[i].rflags = rinfo->flags; - } + rinfo = &iwn_rates[wn->ridx[txrate]]; + linkq.retry[i].plcp = rinfo->plcp; + linkq.retry[i].rflags = rinfo->flags; linkq.retry[i].rflags |= IWN_RFLAG_ANT(txant); - ridx = iwn_prev_ridx[ridx]; + /* Next retry at immediate lower bit-rate. */ + if (txrate > 0) + txrate--; } -#ifdef IWN_DEBUG - if (sc->sc_debug & IWN_DEBUG_STATE) { - printf("%s: set link quality for node %d, mimo %d ssmask %d\n", - __func__, id, linkq.mimo, linkq.antmsk_1stream); - printf("%s:", __func__); - for (i = 0; i < IWN_MAX_TX_RETRIES; i++) - printf(" %d:%x", linkq.retry[i].plcp, - linkq.retry[i].rflags); - printf("\n"); - } -#endif - return iwn_cmd(sc, IWN_CMD_LINK_QUALITY, &linkq, sizeof linkq, async); + return iwn_cmd(sc, IWN_CMD_LINK_QUALITY, &linkq, sizeof linkq, 1); } /* @@ -3701,8 +3657,12 @@ iwn_add_broadcast_node(struct iwn_softc { const struct iwn_hal *hal = sc->sc_hal; struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; struct iwn_node_info node; - int error; + struct iwn_cmd_link_quality linkq; + const struct iwn_rate *rinfo; + uint8_t txant; + int i, error; memset(&node, 0, sizeof node); IEEE80211_ADDR_COPY(node.macaddr, ifp->if_broadcastaddr); @@ -3712,8 +3672,31 @@ iwn_add_broadcast_node(struct iwn_softc if (error != 0) return error; - error = iwn_set_link_quality(sc, hal->broadcast_id, async); - return error; + /* Use the first valid TX antenna. */ + txant = IWN_LSB(sc->txchainmask); + + memset(&linkq, 0, sizeof linkq); + linkq.id = sc->sc_hal->broadcast_id; + linkq.antmsk_1stream = txant; + linkq.antmsk_2stream = IWN_ANT_AB; + linkq.ampdu_max = 64; + linkq.ampdu_threshold = 3; + linkq.ampdu_limit = htole16(4000); /* 4ms */ + + /* Use lowest mandatory bit-rate. */ + if (IEEE80211_IS_CHAN_5GHZ(ic->ic_curchan)) + rinfo = &iwn_rates[IWN_RIDX_OFDM6]; + else + rinfo = &iwn_rates[IWN_RIDX_CCK1]; + linkq.retry[0].plcp = rinfo->plcp; + linkq.retry[0].rflags = rinfo->flags; + linkq.retry[0].rflags |= IWN_RFLAG_ANT(txant); + /* Use same bit-rate for all TX retries. */ + for (i = 1; i < IWN_MAX_TX_RETRIES; i++) { + linkq.retry[i].plcp = linkq.retry[0].plcp; + linkq.retry[i].rflags = linkq.retry[0].rflags; + } + return iwn_cmd(sc, IWN_CMD_LINK_QUALITY, &linkq, sizeof linkq, async); } static int @@ -5010,6 +4993,10 @@ iwn_run(struct iwn_softc *sc, struct iee return error; } + /* Fake a join to initialize the TX rate. */ + ((struct iwn_node *)ni)->id = IWN_ID_BSS; + iwn_newassoc(ni, 1); + /* Add BSS node. */ memset(&node, 0, sizeof node); IEEE80211_ADDR_COPY(node.macaddr, ni->ni_macaddr); @@ -5027,7 +5014,7 @@ iwn_run(struct iwn_softc *sc, struct iee } DPRINTF(sc, IWN_DEBUG_STATE, "setting link quality for node %d\n", node.id); - error = iwn_set_link_quality(sc, node.id, 1); + error = iwn_set_link_quality(sc, ni); if (error != 0) { device_printf(sc->sc_dev, "%s: could not setup MRR for node %d, error %d\n", Modified: stable/8/sys/dev/iwn/if_iwnreg.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 11:51:17 2011 (r223244) +++ stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 11:52:58 2011 (r223245) @@ -1433,10 +1433,8 @@ static const struct iwn_chan_band { #define IWN6050_OTP_NBLOCKS 7 /* HW rate indices. */ -#define IWN_RIDX_CCK1 0 -#define IWN_RIDX_CCK11 3 -#define IWN_RIDX_OFDM6 4 -#define IWN_RIDX_OFDM54 11 +#define IWN_RIDX_CCK1 0 +#define IWN_RIDX_OFDM6 4 static const struct iwn_rate { uint8_t rate; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:54:44 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 831CD106566B; Sat, 18 Jun 2011 11:54:44 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 71FB08FC08; Sat, 18 Jun 2011 11:54:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBsidh039626; Sat, 18 Jun 2011 11:54:44 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBsioO039624; Sat, 18 Jun 2011 11:54:44 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181154.p5IBsioO039624@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:54:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223246 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:54:44 -0000 Author: bschmidt Date: Sat Jun 18 11:54:44 2011 New Revision: 223246 URL: http://svn.freebsd.org/changeset/base/223246 Log: MFC r220719: Remove if_ierrors which do not necessarily indicate a RX error, also do account send packets. While here use the IWN_TX_FAIL constant. Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:52:58 2011 (r223245) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:54:44 2011 (r223246) @@ -2069,7 +2069,6 @@ iwn_rx_done(struct iwn_softc *sc, struct if (!sc->last_rx_valid) { DPRINTF(sc, IWN_DEBUG_ANY, "%s: missing RX_PHY\n", __func__); - ifp->if_ierrors++; return; } sc->last_rx_valid = 0; @@ -2083,7 +2082,6 @@ iwn_rx_done(struct iwn_softc *sc, struct device_printf(sc->sc_dev, "%s: invalid rx statistic header, len %d\n", __func__, stat->cfg_phy_len); - ifp->if_ierrors++; return; } if (desc->type == IWN_MPDU_RX_DONE) { @@ -2427,11 +2425,12 @@ iwn_tx_done(struct iwn_softc *sc, struct /* * Update rate control statistics for the node. */ - if (status & 0x80) { + if (status & IWN_TX_FAIL) { ifp->if_oerrors++; ieee80211_ratectl_tx_complete(vap, ni, IEEE80211_RATECTL_TX_FAILURE, &ackfailcnt, NULL); } else { + ifp->if_opackets++; ieee80211_ratectl_tx_complete(vap, ni, IEEE80211_RATECTL_TX_SUCCESS, &ackfailcnt, NULL); } From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 11:56:41 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5CC1C1065670; Sat, 18 Jun 2011 11:56:41 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4B24E8FC0A; Sat, 18 Jun 2011 11:56:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IBufaM039746; Sat, 18 Jun 2011 11:56:41 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IBufJS039744; Sat, 18 Jun 2011 11:56:41 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181156.p5IBufJS039744@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 11:56:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223247 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 11:56:41 -0000 Author: bschmidt Date: Sat Jun 18 11:56:40 2011 New Revision: 223247 URL: http://svn.freebsd.org/changeset/base/223247 Log: MFC r220720: Fix WME/QoS handling: - move the TX queue selection into iwn_tx_data/iwn_tx_data_raw - extract traffic identifier and use it - do not expect ACKs for frames marked as such Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:54:44 2011 (r223246) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:56:40 2011 (r223247) @@ -158,7 +158,10 @@ static void iwn5000_reset_sched(struct i #endif static uint8_t iwn_plcp_signal(int); static int iwn_tx_data(struct iwn_softc *, struct mbuf *, - struct ieee80211_node *, struct iwn_tx_ring *); + struct ieee80211_node *); +static int iwn_tx_data_raw(struct iwn_softc *, struct mbuf *, + struct ieee80211_node *, + const struct ieee80211_bpf_params *params); static int iwn_raw_xmit(struct ieee80211_node *, struct mbuf *, const struct ieee80211_bpf_params *); static void iwn_start(struct ifnet *); @@ -2913,8 +2916,7 @@ iwn_plcp_signal(int rate) { } static int -iwn_tx_data(struct iwn_softc *sc, struct mbuf *m, struct ieee80211_node *ni, - struct iwn_tx_ring *ring) +iwn_tx_data(struct iwn_softc *sc, struct mbuf *m, struct ieee80211_node *ni) { const struct iwn_hal *hal = sc->sc_hal; const struct ieee80211_txparam *tp; @@ -2922,6 +2924,7 @@ iwn_tx_data(struct iwn_softc *sc, struct struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; struct iwn_node *wn = (void *)ni; + struct iwn_tx_ring *ring; struct iwn_tx_desc *desc; struct iwn_tx_data *data; struct iwn_tx_cmd *cmd; @@ -2931,9 +2934,10 @@ iwn_tx_data(struct iwn_softc *sc, struct struct mbuf *m1; bus_dma_segment_t *seg, segs[IWN_MAX_SCATTER]; uint32_t flags; + uint16_t qos; u_int hdrlen; - int totlen, error, pad, nsegs = 0, i, rate; - uint8_t ridx, type, txant; + uint8_t tid, ridx, type, txant; + int ac, i, totlen, error, pad, nsegs = 0, rate; IWN_LOCK_ASSERT(sc); @@ -2941,6 +2945,17 @@ iwn_tx_data(struct iwn_softc *sc, struct hdrlen = ieee80211_anyhdrsize(wh); type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; + /* Select EDCA Access Category and TX ring for this frame. */ + if (IEEE80211_QOS_HAS_SEQ(wh)) { + qos = ((const struct ieee80211_qosframe *)wh)->i_qos[0]; + tid = qos & IEEE80211_QOS_TID; + } else { + qos = 0; + tid = 0; + } + ac = M_WME_GETAC(m); + + ring = &sc->txq[ac]; desc = &ring->desc[ring->cur]; data = &ring->data[ring->cur]; @@ -2995,8 +3010,12 @@ iwn_tx_data(struct iwn_softc *sc, struct tx->scratch = 0; /* clear "scratch" area */ flags = 0; - if (!IEEE80211_IS_MULTICAST(wh->i_addr1)) - flags |= IWN_TX_NEED_ACK; + if (!IEEE80211_IS_MULTICAST(wh->i_addr1)) { + /* Unicast frame, check if an ACK is expected. */ + if (!qos || (qos & IEEE80211_QOS_ACKPOLICY) != + IEEE80211_QOS_ACKPOLICY_NOACK) + flags |= IWN_TX_NEED_ACK; + } if ((wh->i_fc[0] & (IEEE80211_FC0_TYPE_MASK | IEEE80211_FC0_SUBTYPE_MASK)) == (IEEE80211_FC0_TYPE_CTL | IEEE80211_FC0_SUBTYPE_BAR)) @@ -3056,7 +3075,7 @@ iwn_tx_data(struct iwn_softc *sc, struct pad = 0; tx->len = htole16(totlen); - tx->tid = 0; + tx->tid = tid; tx->rts_ntries = 60; tx->data_ntries = 15; tx->lifetime = htole32(IWN_LIFETIME_INFINITE); @@ -3161,8 +3180,7 @@ iwn_tx_data(struct iwn_softc *sc, struct static int iwn_tx_data_raw(struct iwn_softc *sc, struct mbuf *m, - struct ieee80211_node *ni, struct iwn_tx_ring *ring, - const struct ieee80211_bpf_params *params) + struct ieee80211_node *ni, const struct ieee80211_bpf_params *params) { const struct iwn_hal *hal = sc->sc_hal; const struct iwn_rate *rinfo; @@ -3172,13 +3190,14 @@ iwn_tx_data_raw(struct iwn_softc *sc, st struct iwn_tx_cmd *cmd; struct iwn_cmd_data *tx; struct ieee80211_frame *wh; + struct iwn_tx_ring *ring; struct iwn_tx_desc *desc; struct iwn_tx_data *data; struct mbuf *m1; bus_dma_segment_t *seg, segs[IWN_MAX_SCATTER]; uint32_t flags; u_int hdrlen; - int totlen, error, pad, nsegs = 0, i, rate; + int ac, totlen, error, pad, nsegs = 0, i, rate; uint8_t ridx, type, txant; IWN_LOCK_ASSERT(sc); @@ -3187,6 +3206,9 @@ iwn_tx_data_raw(struct iwn_softc *sc, st hdrlen = ieee80211_anyhdrsize(wh); type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; + ac = params->ibp_pri & 3; + + ring = &sc->txq[ac]; desc = &ring->desc[ring->cur]; data = &ring->data[ring->cur]; @@ -3362,12 +3384,11 @@ iwn_tx_data_raw(struct iwn_softc *sc, st static int iwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m, - const struct ieee80211_bpf_params *params) + const struct ieee80211_bpf_params *params) { struct ieee80211com *ic = ni->ni_ic; struct ifnet *ifp = ic->ic_ifp; struct iwn_softc *sc = ifp->if_softc; - struct iwn_tx_ring *txq; int error = 0; if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { @@ -3377,23 +3398,18 @@ iwn_raw_xmit(struct ieee80211_node *ni, } IWN_LOCK(sc); - if (params == NULL) - txq = &sc->txq[M_WME_GETAC(m)]; - else - txq = &sc->txq[params->ibp_pri & 3]; - if (params == NULL) { /* * Legacy path; interpret frame contents to decide * precisely how to send the frame. */ - error = iwn_tx_data(sc, m, ni, txq); + error = iwn_tx_data(sc, m, ni); } else { /* * Caller supplied explicit parameters to use in * sending the frame. */ - error = iwn_tx_data_raw(sc, m, ni, txq, params); + error = iwn_tx_data_raw(sc, m, ni, params); } if (error != 0) { /* NB: m is reclaimed on tx failure */ @@ -3421,12 +3437,14 @@ iwn_start_locked(struct ifnet *ifp) { struct iwn_softc *sc = ifp->if_softc; struct ieee80211_node *ni; - struct iwn_tx_ring *txq; struct mbuf *m; - int pri; IWN_LOCK_ASSERT(sc); + if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0 || + (ifp->if_drv_flags & IFF_DRV_OACTIVE)) + return; + for (;;) { if (sc->qfullmsk != 0) { ifp->if_drv_flags |= IFF_DRV_OACTIVE; @@ -3436,12 +3454,10 @@ iwn_start_locked(struct ifnet *ifp) if (m == NULL) break; ni = (struct ieee80211_node *)m->m_pkthdr.rcvif; - pri = M_WME_GETAC(m); - txq = &sc->txq[pri]; - if (iwn_tx_data(sc, m, ni, txq) != 0) { - ifp->if_oerrors++; + if (iwn_tx_data(sc, m, ni) != 0) { ieee80211_free_node(ni); - break; + ifp->if_oerrors++; + continue; } sc->sc_tx_timer = 5; } From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:00:49 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EE0BD10657C2; Sat, 18 Jun 2011 12:00:49 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DBB068FC13; Sat, 18 Jun 2011 12:00:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IC0n2d039922; Sat, 18 Jun 2011 12:00:49 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IC0ngB039919; Sat, 18 Jun 2011 12:00:49 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181200.p5IC0ngB039919@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 12:00:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223248 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:00:50 -0000 Author: bschmidt Date: Sat Jun 18 12:00:49 2011 New Revision: 223248 URL: http://svn.freebsd.org/changeset/base/223248 Log: MFC r220721,220723-220726: - Rename some stuff in favour of the OpenBSD names: - prefer EDCA over WME - qid for a TXQ ID - reg for register values - Shuffle code around a bit. Mostly to group functional connected things, others to get the same order as the OpenBSD code. - Sync debug and error messages with OpenBSD. The device capability announcements are now hidden behind bootverbose. - Sync comments with OpenBSD. - Whitespace sync, some more style(9) conform then others. Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnreg.h stable/8/sys/dev/iwn/if_iwnvar.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 11:56:40 2011 (r223247) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:00:49 2011 (r223248) @@ -72,16 +72,61 @@ __FBSDID("$FreeBSD$"); #include #include +struct iwn_ident { + uint16_t vendor; + uint16_t device; + const char *name; +}; + +static const struct iwn_ident iwn_ident_table [] = { + { 0x8086, 0x4229, "Intel(R) PRO/Wireless 4965BGN" }, + { 0x8086, 0x422D, "Intel(R) PRO/Wireless 4965BGN" }, + { 0x8086, 0x4230, "Intel(R) PRO/Wireless 4965BGN" }, + { 0x8086, 0x4233, "Intel(R) PRO/Wireless 4965BGN" }, + { 0x8086, 0x4232, "Intel(R) PRO/Wireless 5100" }, + { 0x8086, 0x4237, "Intel(R) PRO/Wireless 5100" }, + { 0x8086, 0x423C, "Intel(R) PRO/Wireless 5150" }, + { 0x8086, 0x423D, "Intel(R) PRO/Wireless 5150" }, + { 0x8086, 0x4235, "Intel(R) PRO/Wireless 5300" }, + { 0x8086, 0x4236, "Intel(R) PRO/Wireless 5300" }, + { 0x8086, 0x423A, "Intel(R) PRO/Wireless 5350" }, + { 0x8086, 0x423B, "Intel(R) PRO/Wireless 5350" }, + { 0x8086, 0x0083, "Intel(R) PRO/Wireless 1000" }, + { 0x8086, 0x0084, "Intel(R) PRO/Wireless 1000" }, + { 0x8086, 0x008D, "Intel(R) PRO/Wireless 6000" }, + { 0x8086, 0x008E, "Intel(R) PRO/Wireless 6000" }, + { 0x8086, 0x4238, "Intel(R) PRO/Wireless 6000" }, + { 0x8086, 0x4239, "Intel(R) PRO/Wireless 6000" }, + { 0x8086, 0x422B, "Intel(R) PRO/Wireless 6000" }, + { 0x8086, 0x422C, "Intel(R) PRO/Wireless 6000" }, + { 0x8086, 0x0087, "Intel(R) PRO/Wireless 6250" }, + { 0x8086, 0x0089, "Intel(R) PRO/Wireless 6250" }, + { 0x8086, 0x0082, "Intel(R) PRO/Wireless 6205a" }, + { 0x8086, 0x0085, "Intel(R) PRO/Wireless 6205a" }, +#ifdef notyet + { 0x8086, 0x008a, "Intel(R) PRO/Wireless 6205b" }, + { 0x8086, 0x008b, "Intel(R) PRO/Wireless 6205b" }, + { 0x8086, 0x008f, "Intel(R) PRO/Wireless 6205b" }, + { 0x8086, 0x0090, "Intel(R) PRO/Wireless 6205b" }, + { 0x8086, 0x0091, "Intel(R) PRO/Wireless 6205b" }, +#endif + { 0, 0, NULL } +}; + static int iwn_probe(device_t); static int iwn_attach(device_t); static const struct iwn_hal *iwn_hal_attach(struct iwn_softc *); static void iwn_radiotap_attach(struct iwn_softc *); +static void iwn_sysctlattach(struct iwn_softc *); static struct ieee80211vap *iwn_vap_create(struct ieee80211com *, const char name[IFNAMSIZ], int unit, int opmode, int flags, const uint8_t bssid[IEEE80211_ADDR_LEN], const uint8_t mac[IEEE80211_ADDR_LEN]); static void iwn_vap_delete(struct ieee80211vap *); static int iwn_detach(device_t); +static int iwn_shutdown(device_t); +static int iwn_suspend(device_t); +static int iwn_resume(device_t); static int iwn_nic_lock(struct iwn_softc *); static int iwn_eeprom_lock(struct iwn_softc *); static int iwn_init_otprom(struct iwn_softc *); @@ -116,8 +161,12 @@ static void iwn_read_eeprom_band(struct #if 0 /* HT */ static void iwn_read_eeprom_ht40(struct iwn_softc *, int); #endif -static void iwn_read_eeprom_channels(struct iwn_softc *, int, - uint32_t); +static void iwn_read_eeprom_channels(struct iwn_softc *, int, uint32_t); +static struct iwn_eeprom_chan *iwn_find_eeprom_channel(struct iwn_softc *, + struct ieee80211_channel *); +static int iwn_setregdomain(struct ieee80211com *, + struct ieee80211_regdomain *, int, + struct ieee80211_channel[]); static void iwn_read_eeprom_enhinfo(struct iwn_softc *); static struct ieee80211_node *iwn_node_alloc(struct ieee80211vap *, const uint8_t mac[IEEE80211_ADDR_LEN]); @@ -176,7 +225,7 @@ static int iwn5000_add_node(struct iwn_s static int iwn_set_link_quality(struct iwn_softc *, struct ieee80211_node *); static int iwn_add_broadcast_node(struct iwn_softc *, int); -static int iwn_wme_update(struct ieee80211com *); +static int iwn_updateedca(struct ieee80211com *); static void iwn_update_mcast(struct ifnet *); static void iwn_set_led(struct iwn_softc *, uint8_t, uint8_t, uint8_t); static int iwn_set_critical_temp(struct iwn_softc *); @@ -219,10 +268,12 @@ static void iwn_ampdu_tx_stop(struct iee struct ieee80211_node *, uint8_t); static void iwn4965_ampdu_tx_start(struct iwn_softc *, struct ieee80211_node *, uint8_t, uint16_t); -static void iwn4965_ampdu_tx_stop(struct iwn_softc *, uint8_t, uint16_t); +static void iwn4965_ampdu_tx_stop(struct iwn_softc *, + uint8_t, uint16_t); static void iwn5000_ampdu_tx_start(struct iwn_softc *, struct ieee80211_node *, uint8_t, uint16_t); -static void iwn5000_ampdu_tx_stop(struct iwn_softc *, uint8_t, uint16_t); +static void iwn5000_ampdu_tx_stop(struct iwn_softc *, + uint8_t, uint16_t); #endif static int iwn5000_query_calibration(struct iwn_softc *); static int iwn5000_send_calibration(struct iwn_softc *); @@ -251,27 +302,18 @@ static int iwn5000_nic_config(struct iwn static int iwn_hw_prepare(struct iwn_softc *); static int iwn_hw_init(struct iwn_softc *); static void iwn_hw_stop(struct iwn_softc *); +static void iwn_radio_on(void *, int); +static void iwn_radio_off(void *, int); static void iwn_init_locked(struct iwn_softc *); static void iwn_init(void *); static void iwn_stop_locked(struct iwn_softc *); static void iwn_stop(struct iwn_softc *); -static void iwn_scan_start(struct ieee80211com *); -static void iwn_scan_end(struct ieee80211com *); -static void iwn_set_channel(struct ieee80211com *); -static void iwn_scan_curchan(struct ieee80211_scan_state *, unsigned long); -static void iwn_scan_mindwell(struct ieee80211_scan_state *); -static struct iwn_eeprom_chan *iwn_find_eeprom_channel(struct iwn_softc *, - struct ieee80211_channel *); -static int iwn_setregdomain(struct ieee80211com *, - struct ieee80211_regdomain *, int, - struct ieee80211_channel []); +static void iwn_scan_start(struct ieee80211com *); +static void iwn_scan_end(struct ieee80211com *); +static void iwn_set_channel(struct ieee80211com *); +static void iwn_scan_curchan(struct ieee80211_scan_state *, unsigned long); +static void iwn_scan_mindwell(struct ieee80211_scan_state *); static void iwn_hw_reset(void *, int); -static void iwn_radio_on(void *, int); -static void iwn_radio_off(void *, int); -static void iwn_sysctlattach(struct iwn_softc *); -static int iwn_shutdown(device_t); -static int iwn_suspend(device_t); -static int iwn_resume(device_t); #define IWN_DEBUG #ifdef IWN_DEBUG @@ -298,51 +340,75 @@ enum { printf(fmt, __VA_ARGS__); \ } while (0) -static const char *iwn_intr_str(uint8_t); +static const char * +iwn_intr_str(uint8_t cmd) +{ + switch (cmd) { + /* Notifications */ + case IWN_UC_READY: return "UC_READY"; + case IWN_ADD_NODE_DONE: return "ADD_NODE_DONE"; + case IWN_TX_DONE: return "TX_DONE"; + case IWN_START_SCAN: return "START_SCAN"; + case IWN_STOP_SCAN: return "STOP_SCAN"; + case IWN_RX_STATISTICS: return "RX_STATS"; + case IWN_BEACON_STATISTICS: return "BEACON_STATS"; + case IWN_STATE_CHANGED: return "STATE_CHANGED"; + case IWN_BEACON_MISSED: return "BEACON_MISSED"; + case IWN_RX_PHY: return "RX_PHY"; + case IWN_MPDU_RX_DONE: return "MPDU_RX_DONE"; + case IWN_RX_DONE: return "RX_DONE"; + + /* Command Notifications */ + case IWN_CMD_RXON: return "IWN_CMD_RXON"; + case IWN_CMD_RXON_ASSOC: return "IWN_CMD_RXON_ASSOC"; + case IWN_CMD_EDCA_PARAMS: return "IWN_CMD_EDCA_PARAMS"; + case IWN_CMD_TIMING: return "IWN_CMD_TIMING"; + case IWN_CMD_LINK_QUALITY: return "IWN_CMD_LINK_QUALITY"; + case IWN_CMD_SET_LED: return "IWN_CMD_SET_LED"; + case IWN5000_CMD_WIMAX_COEX: return "IWN5000_CMD_WIMAX_COEX"; + case IWN5000_CMD_CALIB_CONFIG: return "IWN5000_CMD_CALIB_CONFIG"; + case IWN5000_CMD_CALIB_RESULT: return "IWN5000_CMD_CALIB_RESULT"; + case IWN5000_CMD_CALIB_COMPLETE: return "IWN5000_CMD_CALIB_COMPLETE"; + case IWN_CMD_SET_POWER_MODE: return "IWN_CMD_SET_POWER_MODE"; + case IWN_CMD_SCAN: return "IWN_CMD_SCAN"; + case IWN_CMD_SCAN_RESULTS: return "IWN_CMD_SCAN_RESULTS"; + case IWN_CMD_TXPOWER: return "IWN_CMD_TXPOWER"; + case IWN_CMD_TXPOWER_DBM: return "IWN_CMD_TXPOWER_DBM"; + case IWN5000_CMD_TX_ANT_CONFIG: return "IWN5000_CMD_TX_ANT_CONFIG"; + case IWN_CMD_BT_COEX: return "IWN_CMD_BT_COEX"; + case IWN_CMD_SET_CRITICAL_TEMP: return "IWN_CMD_SET_CRITICAL_TEMP"; + case IWN_CMD_SET_SENSITIVITY: return "IWN_CMD_SET_SENSITIVITY"; + case IWN_CMD_PHY_CALIB: return "IWN_CMD_PHY_CALIB"; + } + return "UNKNOWN INTR NOTIF/CMD"; +} #else #define DPRINTF(sc, m, fmt, ...) do { (void) sc; } while (0) #endif -struct iwn_ident { - uint16_t vendor; - uint16_t device; - const char *name; +static device_method_t iwn_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, iwn_probe), + DEVMETHOD(device_attach, iwn_attach), + DEVMETHOD(device_detach, iwn_detach), + DEVMETHOD(device_shutdown, iwn_shutdown), + DEVMETHOD(device_suspend, iwn_suspend), + DEVMETHOD(device_resume, iwn_resume), + { 0, 0 } }; -static const struct iwn_ident iwn_ident_table [] = { - { 0x8086, 0x4229, "Intel(R) PRO/Wireless 4965BGN" }, - { 0x8086, 0x422D, "Intel(R) PRO/Wireless 4965BGN" }, - { 0x8086, 0x4230, "Intel(R) PRO/Wireless 4965BGN" }, - { 0x8086, 0x4233, "Intel(R) PRO/Wireless 4965BGN" }, - { 0x8086, 0x4232, "Intel(R) PRO/Wireless 5100" }, - { 0x8086, 0x4237, "Intel(R) PRO/Wireless 5100" }, - { 0x8086, 0x423C, "Intel(R) PRO/Wireless 5150" }, - { 0x8086, 0x423D, "Intel(R) PRO/Wireless 5150" }, - { 0x8086, 0x4235, "Intel(R) PRO/Wireless 5300" }, - { 0x8086, 0x4236, "Intel(R) PRO/Wireless 5300" }, - { 0x8086, 0x423A, "Intel(R) PRO/Wireless 5350" }, - { 0x8086, 0x423B, "Intel(R) PRO/Wireless 5350" }, - { 0x8086, 0x0083, "Intel(R) PRO/Wireless 1000" }, - { 0x8086, 0x0084, "Intel(R) PRO/Wireless 1000" }, - { 0x8086, 0x008D, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x008E, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x4238, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x4239, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x422B, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x422C, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x0087, "Intel(R) PRO/Wireless 6250" }, - { 0x8086, 0x0089, "Intel(R) PRO/Wireless 6250" }, - { 0x8086, 0x0082, "Intel(R) PRO/Wireless 6205a" }, - { 0x8086, 0x0085, "Intel(R) PRO/Wireless 6205a" }, -#ifdef notyet - { 0x8086, 0x008a, "Intel(R) PRO/Wireless 6205b" }, - { 0x8086, 0x008b, "Intel(R) PRO/Wireless 6205b" }, - { 0x8086, 0x008f, "Intel(R) PRO/Wireless 6205b" }, - { 0x8086, 0x0090, "Intel(R) PRO/Wireless 6205b" }, - { 0x8086, 0x0091, "Intel(R) PRO/Wireless 6205b" }, -#endif - { 0, 0, NULL } +static driver_t iwn_driver = { + "iwn", + iwn_methods, + sizeof(struct iwn_softc) }; +static devclass_t iwn_devclass; + +DRIVER_MODULE(iwn, pci, iwn_driver, iwn_devclass, 0, 0); + +MODULE_DEPEND(iwn, firmware, 1, 1, 1); +MODULE_DEPEND(iwn, pci, 1, 1, 1); +MODULE_DEPEND(iwn, wlan, 1, 1, 1); static const struct iwn_hal iwn4965_hal = { iwn4965_load_firmware, @@ -422,7 +488,7 @@ iwn_attach(device_t dev) struct ieee80211com *ic; struct ifnet *ifp; const struct iwn_hal *hal; - uint32_t tmp; + uint32_t reg; int i, error, result; uint8_t macaddr[IEEE80211_ADDR_LEN]; @@ -442,12 +508,12 @@ iwn_attach(device_t dev) pci_write_config(dev, 0x41, 0, 1); /* Hardware bug workaround. */ - tmp = pci_read_config(dev, PCIR_COMMAND, 1); - if (tmp & PCIM_CMD_INTxDIS) { + reg = pci_read_config(dev, PCIR_COMMAND, 1); + if (reg & PCIM_CMD_INTxDIS) { DPRINTF(sc, IWN_DEBUG_RESET, "%s: PCIe INTx Disable set\n", __func__); - tmp &= ~PCIM_CMD_INTxDIS; - pci_write_config(dev, PCIR_COMMAND, tmp, 1); + reg &= ~PCIM_CMD_INTxDIS; + pci_write_config(dev, PCIR_COMMAND, reg, 1); } /* Enable bus-mastering. */ @@ -456,30 +522,28 @@ iwn_attach(device_t dev) sc->mem_rid = PCIR_BAR(0); sc->mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->mem_rid, RF_ACTIVE); - if (sc->mem == NULL ) { - device_printf(dev, "could not allocate memory resources\n"); + if (sc->mem == NULL) { + device_printf(dev, "can't map mem space\n"); error = ENOMEM; return error; } - sc->sc_st = rman_get_bustag(sc->mem); sc->sc_sh = rman_get_bushandle(sc->mem); + sc->irq_rid = 0; if ((result = pci_msi_count(dev)) == 1 && pci_alloc_msi(dev, &result) == 0) sc->irq_rid = 1; + /* Install interrupt handler. */ sc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->irq_rid, RF_ACTIVE | RF_SHAREABLE); if (sc->irq == NULL) { - device_printf(dev, "could not allocate interrupt resource\n"); + device_printf(dev, "can't map interrupt\n"); error = ENOMEM; goto fail; } IWN_LOCK_INIT(sc); - TASK_INIT(&sc->sc_reinit_task, 0, iwn_hw_reset, sc ); - TASK_INIT(&sc->sc_radioon_task, 0, iwn_radio_on, sc ); - TASK_INIT(&sc->sc_radiooff_task, 0, iwn_radio_off, sc ); /* Attach Hardware Abstraction Layer. */ hal = iwn_hal_attach(sc); @@ -488,15 +552,13 @@ iwn_attach(device_t dev) goto fail; } - error = iwn_hw_prepare(sc); - if (error != 0) { + if ((error = iwn_hw_prepare(sc)) != 0) { device_printf(dev, "hardware not ready, error %d\n", error); goto fail; } /* Allocate DMA memory for firmware transfers. */ - error = iwn_alloc_fwmem(sc); - if (error != 0) { + if ((error = iwn_alloc_fwmem(sc)) != 0) { device_printf(dev, "could not allocate memory for firmware, error %d\n", error); @@ -504,47 +566,41 @@ iwn_attach(device_t dev) } /* Allocate "Keep Warm" page. */ - error = iwn_alloc_kw(sc); - if (error != 0) { + if ((error = iwn_alloc_kw(sc)) != 0) { device_printf(dev, - "could not allocate \"Keep Warm\" page, error %d\n", error); + "could not allocate keep warm page, error %d\n", error); goto fail; } /* Allocate ICT table for 5000 Series. */ if (sc->hw_type != IWN_HW_REV_TYPE_4965 && (error = iwn_alloc_ict(sc)) != 0) { - device_printf(dev, - "%s: could not allocate ICT table, error %d\n", - __func__, error); + device_printf(dev, "could not allocate ICT table, error %d\n", + error); goto fail; } /* Allocate TX scheduler "rings". */ - error = iwn_alloc_sched(sc); - if (error != 0) { + if ((error = iwn_alloc_sched(sc)) != 0) { device_printf(dev, - "could not allocate TX scheduler rings, error %d\n", - error); + "could not allocate TX scheduler rings, error %d\n", error); goto fail; } - /* Allocate TX rings (16 on 4965AGN, 20 on 5000). */ + /* Allocate TX rings (16 on 4965AGN, 20 on >=5000). */ for (i = 0; i < hal->ntxqs; i++) { - error = iwn_alloc_tx_ring(sc, &sc->txq[i], i); - if (error != 0) { + if ((error = iwn_alloc_tx_ring(sc, &sc->txq[i], i)) != 0) { device_printf(dev, - "could not allocate Tx ring %d, error %d\n", - i, error); + "could not allocate TX ring %d, error %d\n", i, + error); goto fail; } } /* Allocate RX ring. */ - error = iwn_alloc_rx_ring(sc, &sc->rxq); - if (error != 0 ){ - device_printf(dev, - "could not allocate Rx ring, error %d\n", error); + if ((error = iwn_alloc_rx_ring(sc, &sc->rxq)) != 0) { + device_printf(dev, "could not allocate RX ring, error %d\n", + error); goto fail; } @@ -560,14 +616,19 @@ iwn_attach(device_t dev) ((sc->rxchainmask >> 2) & 1) + ((sc->rxchainmask >> 1) & 1) + ((sc->rxchainmask >> 0) & 1); + if (bootverbose) { + device_printf(dev, "MIMO %dT%dR, %.4s, address %6D\n", + sc->ntxchains, sc->nrxchains, sc->eeprom_domain, + macaddr, ":"); + } ifp = sc->sc_ifp = if_alloc(IFT_IEEE80211); if (ifp == NULL) { device_printf(dev, "can not allocate ifnet structure\n"); goto fail; } - ic = ifp->if_l2com; + ic = ifp->if_l2com; ic->ic_ifp = ifp; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ @@ -618,17 +679,12 @@ iwn_attach(device_t dev) #endif /* Read MAC address, channels, etc from EEPROM. */ - error = iwn_read_eeprom(sc, macaddr); - if (error != 0) { + if ((error = iwn_read_eeprom(sc, macaddr)) != 0) { device_printf(dev, "could not read EEPROM, error %d\n", error); goto fail; } - device_printf(sc->sc_dev, "MIMO %dT%dR, %.4s, address %6D\n", - sc->ntxchains, sc->nrxchains, sc->eeprom_domain, - macaddr, ":"); - #if 0 /* HT */ /* Set supported HT rates. */ ic->ic_sup_mcs[0] = 0xff; @@ -653,8 +709,14 @@ iwn_attach(device_t dev) ic->ic_vap_delete = iwn_vap_delete; ic->ic_raw_xmit = iwn_raw_xmit; ic->ic_node_alloc = iwn_node_alloc; +#if 0 /* HT */ + ic->ic_ampdu_rx_start = iwn_ampdu_rx_start; + ic->ic_ampdu_rx_stop = iwn_ampdu_rx_stop; + ic->ic_ampdu_tx_start = iwn_ampdu_tx_start; + ic->ic_ampdu_tx_stop = iwn_ampdu_tx_stop; +#endif ic->ic_newassoc = iwn_newassoc; - ic->ic_wme.wme_update = iwn_wme_update; + ic->ic_wme.wme_update = iwn_updateedca; ic->ic_update_mcast = iwn_update_mcast; ic->ic_scan_start = iwn_scan_start; ic->ic_scan_end = iwn_scan_end; @@ -662,17 +724,14 @@ iwn_attach(device_t dev) ic->ic_scan_curchan = iwn_scan_curchan; ic->ic_scan_mindwell = iwn_scan_mindwell; ic->ic_setregdomain = iwn_setregdomain; -#if 0 /* HT */ - ic->ic_ampdu_rx_start = iwn_ampdu_rx_start; - ic->ic_ampdu_rx_stop = iwn_ampdu_rx_stop; - ic->ic_ampdu_tx_start = iwn_ampdu_tx_start; - ic->ic_ampdu_tx_stop = iwn_ampdu_tx_stop; -#endif iwn_radiotap_attach(sc); callout_init_mtx(&sc->calib_to, &sc->sc_mtx, 0); callout_init_mtx(&sc->watchdog_to, &sc->sc_mtx, 0); + TASK_INIT(&sc->sc_reinit_task, 0, iwn_hw_reset, sc); + TASK_INIT(&sc->sc_radioon_task, 0, iwn_radio_on, sc); + TASK_INIT(&sc->sc_radiooff_task, 0, iwn_radio_off, sc); iwn_sysctlattach(sc); @@ -682,12 +741,13 @@ iwn_attach(device_t dev) error = bus_setup_intr(dev, sc->irq, INTR_TYPE_NET | INTR_MPSAFE, NULL, iwn_intr, sc, &sc->sc_ih); if (error != 0) { - device_printf(dev, "could not set up interrupt, error %d\n", + device_printf(dev, "can't establish interrupt, error %d\n", error); goto fail; } - ieee80211_announce(ic); + if (bootverbose) + ieee80211_announce(ic); return 0; fail: iwn_detach(dev); @@ -791,11 +851,24 @@ iwn_radiotap_attach(struct iwn_softc *sc IWN_RX_RADIOTAP_PRESENT); } +static void +iwn_sysctlattach(struct iwn_softc *sc) +{ + struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(sc->sc_dev); + struct sysctl_oid *tree = device_get_sysctl_tree(sc->sc_dev); + +#ifdef IWN_DEBUG + sc->sc_debug = 0; + SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, + "debug", CTLFLAG_RW, &sc->sc_debug, 0, "control debugging printfs"); +#endif +} + static struct ieee80211vap * iwn_vap_create(struct ieee80211com *ic, - const char name[IFNAMSIZ], int unit, int opmode, int flags, - const uint8_t bssid[IEEE80211_ADDR_LEN], - const uint8_t mac[IEEE80211_ADDR_LEN]) + const char name[IFNAMSIZ], int unit, int opmode, int flags, + const uint8_t bssid[IEEE80211_ADDR_LEN], + const uint8_t mac[IEEE80211_ADDR_LEN]) { struct iwn_vap *ivp; struct ieee80211vap *vap; @@ -836,7 +909,7 @@ iwn_detach(device_t dev) struct iwn_softc *sc = device_get_softc(dev); struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic; - int i; + int qid; if (ifp != NULL) { ic = ifp->if_l2com; @@ -851,24 +924,25 @@ iwn_detach(device_t dev) ieee80211_ifdetach(ic); } + /* Uninstall interrupt handler. */ + if (sc->irq != NULL) { + bus_teardown_intr(dev, sc->irq, sc->sc_ih); + bus_release_resource(dev, SYS_RES_IRQ, sc->irq_rid, sc->irq); + if (sc->irq_rid == 1) + pci_release_msi(dev); + } + /* Free DMA resources. */ iwn_free_rx_ring(sc, &sc->rxq); if (sc->sc_hal != NULL) - for (i = 0; i < sc->sc_hal->ntxqs; i++) - iwn_free_tx_ring(sc, &sc->txq[i]); + for (qid = 0; qid < sc->sc_hal->ntxqs; qid++) + iwn_free_tx_ring(sc, &sc->txq[qid]); iwn_free_sched(sc); iwn_free_kw(sc); if (sc->ict != NULL) iwn_free_ict(sc); iwn_free_fwmem(sc); - if (sc->irq != NULL) { - bus_teardown_intr(dev, sc->irq, sc->sc_ih); - bus_release_resource(dev, SYS_RES_IRQ, sc->irq_rid, sc->irq); - if (sc->irq_rid == 1) - pci_release_msi(dev); - } - if (sc->mem != NULL) bus_release_resource(dev, SYS_RES_MEMORY, sc->mem_rid, sc->mem); @@ -880,34 +954,78 @@ iwn_detach(device_t dev) } static int -iwn_nic_lock(struct iwn_softc *sc) +iwn_shutdown(device_t dev) { - int ntries; - - /* Request exclusive access to NIC. */ - IWN_SETBITS(sc, IWN_GP_CNTRL, IWN_GP_CNTRL_MAC_ACCESS_REQ); + struct iwn_softc *sc = device_get_softc(dev); - /* Spin until we actually get the lock. */ - for (ntries = 0; ntries < 1000; ntries++) { - if ((IWN_READ(sc, IWN_GP_CNTRL) & - (IWN_GP_CNTRL_MAC_ACCESS_ENA | IWN_GP_CNTRL_SLEEP)) == - IWN_GP_CNTRL_MAC_ACCESS_ENA) - return 0; - DELAY(10); - } - return ETIMEDOUT; + iwn_stop(sc); + return 0; } -static __inline void -iwn_nic_unlock(struct iwn_softc *sc) +static int +iwn_suspend(device_t dev) { - IWN_CLRBITS(sc, IWN_GP_CNTRL, IWN_GP_CNTRL_MAC_ACCESS_REQ); + struct iwn_softc *sc = device_get_softc(dev); + struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; + struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); + + iwn_stop(sc); + if (vap != NULL) + ieee80211_stop(vap); + return 0; } -static __inline uint32_t -iwn_prph_read(struct iwn_softc *sc, uint32_t addr) +static int +iwn_resume(device_t dev) { - IWN_WRITE(sc, IWN_PRPH_RADDR, IWN_PRPH_DWORD | addr); + struct iwn_softc *sc = device_get_softc(dev); + struct ifnet *ifp = sc->sc_ifp; + struct ieee80211com *ic = ifp->if_l2com; + struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); + + /* Clear device-specific "PCI retry timeout" register (41h). */ + pci_write_config(dev, 0x41, 0, 1); + + if (ifp->if_flags & IFF_UP) { + iwn_init(sc); + if (vap != NULL) + ieee80211_init(vap); + if (ifp->if_drv_flags & IFF_DRV_RUNNING) + iwn_start(ifp); + } + return 0; +} + +static int +iwn_nic_lock(struct iwn_softc *sc) +{ + int ntries; + + /* Request exclusive access to NIC. */ + IWN_SETBITS(sc, IWN_GP_CNTRL, IWN_GP_CNTRL_MAC_ACCESS_REQ); + + /* Spin until we actually get the lock. */ + for (ntries = 0; ntries < 1000; ntries++) { + if ((IWN_READ(sc, IWN_GP_CNTRL) & + (IWN_GP_CNTRL_MAC_ACCESS_ENA | IWN_GP_CNTRL_SLEEP)) == + IWN_GP_CNTRL_MAC_ACCESS_ENA) + return 0; + DELAY(10); + } + return ETIMEDOUT; +} + +static __inline void +iwn_nic_unlock(struct iwn_softc *sc) +{ + IWN_CLRBITS(sc, IWN_GP_CNTRL, IWN_GP_CNTRL_MAC_ACCESS_REQ); +} + +static __inline uint32_t +iwn_prph_read(struct iwn_softc *sc, uint32_t addr) +{ + IWN_WRITE(sc, IWN_PRPH_RADDR, IWN_PRPH_DWORD | addr); IWN_BARRIER_READ_WRITE(sc); return IWN_READ(sc, IWN_PRPH_RDATA); } @@ -1023,12 +1141,10 @@ iwn_init_otprom(struct iwn_softc *sc) int count, error; /* Wait for clock stabilization before accessing prph. */ - error = iwn_clock_wait(sc); - if (error != 0) + if ((error = iwn_clock_wait(sc)) != 0) return error; - error = iwn_nic_lock(sc); - if (error != 0) + if ((error = iwn_nic_lock(sc)) != 0) return error; iwn_prph_setbits(sc, IWN_APMG_PS, IWN_APMG_PS_RESET_REQ); DELAY(5); @@ -1073,9 +1189,9 @@ iwn_init_otprom(struct iwn_softc *sc) static int iwn_read_prom_data(struct iwn_softc *sc, uint32_t addr, void *data, int count) { + uint8_t *out = data; uint32_t val, tmp; int ntries; - uint8_t *out = data; addr += sc->prom_base; for (; count > 0; count -= 2, addr++) { @@ -1127,8 +1243,8 @@ iwn_dma_contig_alloc(struct iwn_softc *s { int error; - dma->size = size; dma->tag = NULL; + dma->size = size; error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), alignment, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, size, @@ -1150,9 +1266,10 @@ iwn_dma_contig_alloc(struct iwn_softc *s if (kvap != NULL) *kvap = dma->vaddr; + return 0; -fail: - iwn_dma_contig_free(dma); + +fail: iwn_dma_contig_free(dma); return error; } @@ -1309,11 +1426,13 @@ iwn_alloc_rx_ring(struct iwn_softc *sc, /* Set physical address of RX buffer (256-byte aligned). */ ring->desc[i] = htole32(paddr >> 8); } + bus_dmamap_sync(ring->desc_dma.tag, ring->desc_dma.map, BUS_DMASYNC_PREWRITE); + return 0; -fail: - iwn_free_rx_ring(sc, ring); + +fail: iwn_free_rx_ring(sc, ring); return error; } @@ -1331,11 +1450,6 @@ iwn_reset_rx_ring(struct iwn_softc *sc, DELAY(10); } iwn_nic_unlock(sc); -#ifdef IWN_DEBUG - if (ntries == 1000) - DPRINTF(sc, IWN_DEBUG_ANY, "%s\n", - "timeout resetting Rx ring"); -#endif } ring->cur = 0; sc->last_rx_valid = 0; @@ -1371,16 +1485,16 @@ iwn_free_rx_ring(struct iwn_softc *sc, s static int iwn_alloc_tx_ring(struct iwn_softc *sc, struct iwn_tx_ring *ring, int qid) { - bus_size_t size; bus_addr_t paddr; + bus_size_t size; int i, error; ring->qid = qid; ring->queued = 0; ring->cur = 0; - /* Allocate TX descriptors (256-byte aligned.) */ - size = IWN_TX_RING_COUNT * sizeof(struct iwn_tx_desc); + /* Allocate TX descriptors (256-byte aligned). */ + size = IWN_TX_RING_COUNT * sizeof (struct iwn_tx_desc); error = iwn_dma_contig_alloc(sc, &ring->desc_dma, (void **)&ring->desc, size, 256); if (error != 0) { @@ -1389,15 +1503,15 @@ iwn_alloc_tx_ring(struct iwn_softc *sc, __func__, error); goto fail; } - /* * We only use rings 0 through 4 (4 EDCA + cmd) so there is no need * to allocate commands space for other rings. + * XXX Do we really need to allocate descriptors for other rings? */ if (qid > 4) return 0; - size = IWN_TX_RING_COUNT * sizeof(struct iwn_tx_cmd); + size = IWN_TX_RING_COUNT * sizeof (struct iwn_tx_cmd); error = iwn_dma_contig_alloc(sc, &ring->cmd_dma, (void **)&ring->cmd, size, 4); if (error != 0) { @@ -1408,9 +1522,9 @@ iwn_alloc_tx_ring(struct iwn_softc *sc, } error = bus_dma_tag_create(bus_get_dma_tag(sc->sc_dev), 1, 0, - BUS_SPACE_MAXADDR_32BIT, - BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES, IWN_MAX_SCATTER - 1, - MCLBYTES, BUS_DMA_NOWAIT, NULL, NULL, &ring->data_dmat); + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES, + IWN_MAX_SCATTER - 1, MCLBYTES, BUS_DMA_NOWAIT, NULL, NULL, + &ring->data_dmat); if (error != 0) { device_printf(sc->sc_dev, "%s: could not create TX buf DMA tag, error %d\n", @@ -1435,8 +1549,8 @@ iwn_alloc_tx_ring(struct iwn_softc *sc, } } return 0; -fail: - iwn_free_tx_ring(sc, ring); + +fail: iwn_free_tx_ring(sc, ring); return error; } @@ -1501,7 +1615,7 @@ iwn5000_ict_reset(struct iwn_softc *sc) memset(sc->ict, 0, IWN_ICT_SIZE); sc->ict_cur = 0; - /* Set physical address of ICT table (4KB aligned.) */ + /* Set physical address of ICT table (4KB aligned). */ DPRINTF(sc, IWN_DEBUG_RESET, "%s: enabling ICT\n", __func__); IWN_WRITE(sc, IWN_DRAM_INT_TBL, IWN_DRAM_INT_TBL_ENABLE | IWN_DRAM_INT_TBL_WRAP_CHECK | sc->ict_dma.paddr >> 12); @@ -1520,8 +1634,8 @@ static int iwn_read_eeprom(struct iwn_softc *sc, uint8_t macaddr[IEEE80211_ADDR_LEN]) { const struct iwn_hal *hal = sc->sc_hal; - int error; uint16_t val; + int error; /* Check whether adapter has an EEPROM or an OTPROM. */ if (sc->hw_type >= IWN_HW_REV_TYPE_1000 && @@ -1531,11 +1645,10 @@ iwn_read_eeprom(struct iwn_softc *sc, ui (sc->sc_flags & IWN_FLAG_HAS_OTPROM) ? "OTPROM" : "EEPROM"); /* Adapter has to be powered on for EEPROM access to work. */ - error = iwn_apm_init(sc); - if (error != 0) { + if ((error = iwn_apm_init(sc)) != 0) { device_printf(sc->sc_dev, - "%s: could not power ON adapter, error %d\n", - __func__, error); + "%s: could not power ON adapter, error %d\n", __func__, + error); return error; } @@ -1543,17 +1656,13 @@ iwn_read_eeprom(struct iwn_softc *sc, ui device_printf(sc->sc_dev, "%s: bad ROM signature\n", __func__); return EIO; } - error = iwn_eeprom_lock(sc); - if (error != 0) { - device_printf(sc->sc_dev, - "%s: could not lock ROM, error %d\n", + if ((error = iwn_eeprom_lock(sc)) != 0) { + device_printf(sc->sc_dev, "%s: could not lock ROM, error %d\n", __func__, error); return error; } - if (sc->sc_flags & IWN_FLAG_HAS_OTPROM) { - error = iwn_init_otprom(sc); - if (error != 0) { + if ((error = iwn_init_otprom(sc)) != 0) { device_printf(sc->sc_dev, "%s: could not initialize OTPROM, error %d\n", __func__, error); @@ -1581,13 +1690,13 @@ static void iwn4965_read_eeprom(struct iwn_softc *sc) { uint32_t addr; - int i; uint16_t val; + int i; - /* Read regulatory domain (4 ASCII characters.) */ + /* Read regulatory domain (4 ASCII characters). */ iwn_read_prom_data(sc, IWN4965_EEPROM_DOMAIN, sc->eeprom_domain, 4); - /* Read the list of authorized channels (20MHz ones only.) */ + /* Read the list of authorized channels (20MHz ones only). */ for (i = 0; i < 5; i++) { addr = iwn4965_regulatory_bands[i]; iwn_read_eeprom_channels(sc, i, addr); @@ -1664,17 +1773,17 @@ iwn5000_read_eeprom(struct iwn_softc *sc { struct iwn5000_eeprom_calib_hdr hdr; int32_t volt; - uint32_t addr, base; - int i; + uint32_t base, addr; uint16_t val; + int i; - /* Read regulatory domain (4 ASCII characters.) */ + /* Read regulatory domain (4 ASCII characters). */ iwn_read_prom_data(sc, IWN5000_EEPROM_REG, &val, 2); base = le16toh(val); iwn_read_prom_data(sc, base + IWN5000_EEPROM_DOMAIN, sc->eeprom_domain, 4); - /* Read the list of authorized channels (20MHz ones only.) */ + /* Read the list of authorized channels (20MHz ones only). */ for (i = 0; i < 5; i++) { addr = base + iwn5000_regulatory_bands[i]; iwn_read_eeprom_channels(sc, i, addr); @@ -1688,8 +1797,8 @@ iwn5000_read_eeprom(struct iwn_softc *sc base = le16toh(val); iwn_read_prom_data(sc, base, &hdr, sizeof hdr); DPRINTF(sc, IWN_DEBUG_CALIBRATE, - "%s: calib version=%u pa type=%u voltage=%u\n", - __func__, hdr.version, hdr.pa_type, le16toh(hdr.volt)); + "%s: calib version=%u pa type=%u voltage=%u\n", __func__, + hdr.version, hdr.pa_type, le16toh(hdr.volt)); sc->calib_ver = hdr.version; if (sc->hw_type == IWN_HW_REV_TYPE_5150) { @@ -1754,33 +1863,30 @@ iwn_read_eeprom_band(struct iwn_softc *s chan = band->chan[i]; nflags = iwn_eeprom_channel_flags(&channels[i]); - DPRINTF(sc, IWN_DEBUG_RESET, - "add chan %d flags 0x%x maxpwr %d\n", - chan, channels[i].flags, channels[i].maxpwr); - c = &ic->ic_channels[ic->ic_nchans++]; c->ic_ieee = chan; c->ic_maxregpower = channels[i].maxpwr; c->ic_maxpower = 2*c->ic_maxregpower; - /* Save maximum allowed TX power for this channel. */ - sc->maxpwr[chan] = channels[i].maxpwr; - if (n == 0) { /* 2GHz band */ - c->ic_freq = ieee80211_ieee2mhz(chan, - IEEE80211_CHAN_G); - + c->ic_freq = ieee80211_ieee2mhz(chan, IEEE80211_CHAN_G); /* G =>'s B is supported */ c->ic_flags = IEEE80211_CHAN_B | nflags; - c = &ic->ic_channels[ic->ic_nchans++]; c[0] = c[-1]; c->ic_flags = IEEE80211_CHAN_G | nflags; } else { /* 5GHz band */ - c->ic_freq = ieee80211_ieee2mhz(chan, - IEEE80211_CHAN_A); + c->ic_freq = ieee80211_ieee2mhz(chan, IEEE80211_CHAN_A); c->ic_flags = IEEE80211_CHAN_A | nflags; } + + /* Save maximum allowed TX power for this channel. */ + sc->maxpwr[chan] = channels[i].maxpwr; + + DPRINTF(sc, IWN_DEBUG_RESET, + "add chan %d flags 0x%x maxpwr %d\n", chan, + channels[i].flags, channels[i].maxpwr); + #if 0 /* HT */ /* XXX no constraints on using HT20 */ /* add HT20, HT40 added separately */ @@ -1869,6 +1975,48 @@ iwn_read_eeprom_channels(struct iwn_soft ieee80211_sort_channels(ic->ic_channels, ic->ic_nchans); } +static struct iwn_eeprom_chan * +iwn_find_eeprom_channel(struct iwn_softc *sc, struct ieee80211_channel *c) +{ + int i, j; + + for (j = 0; j < 7; j++) { + for (i = 0; i < iwn_bands[j].nchan; i++) { + if (iwn_bands[j].chan[i] == c->ic_ieee) + return &sc->eeprom_channels[j][i]; + } + } + + return NULL; +} + +/* + * Enforce flags read from EEPROM. + */ +static int +iwn_setregdomain(struct ieee80211com *ic, struct ieee80211_regdomain *rd, + int nchan, struct ieee80211_channel chans[]) +{ + struct iwn_softc *sc = ic->ic_ifp->if_softc; + int i; + + for (i = 0; i < nchan; i++) { + struct ieee80211_channel *c = &chans[i]; + struct iwn_eeprom_chan *channel; + + channel = iwn_find_eeprom_channel(sc, c); + if (channel == NULL) { + if_printf(ic->ic_ifp, + "%s: invalid channel %u freq %u/0x%x\n", + __func__, c->ic_ieee, c->ic_freq, c->ic_flags); + return EINVAL; + } + c->ic_flags |= iwn_eeprom_channel_flags(channel); + } + + return 0; +} + #define nitems(_a) (sizeof((_a)) / sizeof((_a)[0])) static void @@ -1929,7 +2077,9 @@ iwn_newassoc(struct ieee80211_node *ni, static int iwn_media_change(struct ifnet *ifp) { - int error = ieee80211_media_change(ifp); + int error; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:03:30 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 84CDA1065676; Sat, 18 Jun 2011 12:03:30 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 728098FC14; Sat, 18 Jun 2011 12:03:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IC3U5N040050; Sat, 18 Jun 2011 12:03:30 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IC3UqF040047; Sat, 18 Jun 2011 12:03:30 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181203.p5IC3UqF040047@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 12:03:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223249 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:03:30 -0000 Author: bschmidt Date: Sat Jun 18 12:03:30 2011 New Revision: 223249 URL: http://svn.freebsd.org/changeset/base/223249 Log: MFC r220727-220728: - Read RX/TX chainmasks directly of the EEPROM. Some chips are known to have the wrong/broken information stored, keep the hardcoded values for those. - Bring over the HAL/OPS changes, instead of two const structs it is now slightly more dynamic. Obtained from: OpenBSD Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnvar.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:00:49 2011 (r223248) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:03:30 2011 (r223249) @@ -115,7 +115,8 @@ static const struct iwn_ident iwn_ident_ static int iwn_probe(device_t); static int iwn_attach(device_t); -static const struct iwn_hal *iwn_hal_attach(struct iwn_softc *); +static int iwn4965_attach(struct iwn_softc *, uint16_t); +static int iwn5000_attach(struct iwn_softc *, uint16_t); static void iwn_radiotap_attach(struct iwn_softc *); static void iwn_sysctlattach(struct iwn_softc *); static struct ieee80211vap *iwn_vap_create(struct ieee80211com *, @@ -410,62 +411,6 @@ MODULE_DEPEND(iwn, firmware, 1, 1, 1); MODULE_DEPEND(iwn, pci, 1, 1, 1); MODULE_DEPEND(iwn, wlan, 1, 1, 1); -static const struct iwn_hal iwn4965_hal = { - iwn4965_load_firmware, - iwn4965_read_eeprom, - iwn4965_post_alive, - iwn4965_nic_config, - iwn4965_update_sched, - iwn4965_get_temperature, - iwn4965_get_rssi, - iwn4965_set_txpower, - iwn4965_init_gains, - iwn4965_set_gains, - iwn4965_add_node, - iwn4965_tx_done, -#if 0 /* HT */ - iwn4965_ampdu_tx_start, - iwn4965_ampdu_tx_stop, -#endif - IWN4965_NTXQUEUES, - IWN4965_NDMACHNLS, - IWN4965_ID_BROADCAST, - IWN4965_RXONSZ, - IWN4965_SCHEDSZ, - IWN4965_FW_TEXT_MAXSZ, - IWN4965_FW_DATA_MAXSZ, - IWN4965_FWSZ, - IWN4965_SCHED_TXFACT -}; - -static const struct iwn_hal iwn5000_hal = { - iwn5000_load_firmware, - iwn5000_read_eeprom, - iwn5000_post_alive, - iwn5000_nic_config, - iwn5000_update_sched, - iwn5000_get_temperature, - iwn5000_get_rssi, - iwn5000_set_txpower, - iwn5000_init_gains, - iwn5000_set_gains, - iwn5000_add_node, - iwn5000_tx_done, -#if 0 /* HT */ - iwn5000_ampdu_tx_start, - iwn5000_ampdu_tx_stop, -#endif - IWN5000_NTXQUEUES, - IWN5000_NDMACHNLS, - IWN5000_ID_BROADCAST, - IWN5000_RXONSZ, - IWN5000_SCHEDSZ, - IWN5000_FW_TEXT_MAXSZ, - IWN5000_FW_DATA_MAXSZ, - IWN5000_FWSZ, - IWN5000_SCHED_TXFACT -}; - static int iwn_probe(device_t dev) { @@ -487,7 +432,6 @@ iwn_attach(device_t dev) struct iwn_softc *sc = (struct iwn_softc *)device_get_softc(dev); struct ieee80211com *ic; struct ifnet *ifp; - const struct iwn_hal *hal; uint32_t reg; int i, error, result; uint8_t macaddr[IEEE80211_ADDR_LEN]; @@ -545,10 +489,15 @@ iwn_attach(device_t dev) IWN_LOCK_INIT(sc); - /* Attach Hardware Abstraction Layer. */ - hal = iwn_hal_attach(sc); - if (hal == NULL) { - error = ENXIO; /* XXX: Wrong error code? */ + /* Read hardware revision and attach. */ + sc->hw_type = (IWN_READ(sc, IWN_HW_REV) >> 4) & 0xf; + if (sc->hw_type == IWN_HW_REV_TYPE_4965) + error = iwn4965_attach(sc, pci_get_device(dev)); + else + error = iwn5000_attach(sc, pci_get_device(dev)); + if (error != 0) { + device_printf(dev, "could not attach device, error %d\n", + error); goto fail; } @@ -588,7 +537,7 @@ iwn_attach(device_t dev) } /* Allocate TX rings (16 on 4965AGN, 20 on >=5000). */ - for (i = 0; i < hal->ntxqs; i++) { + for (i = 0; i < sc->ntxqs; i++) { if ((error = iwn_alloc_tx_ring(sc, &sc->txq[i], i)) != 0) { device_printf(dev, "could not allocate TX ring %d, error %d\n", i, @@ -754,85 +703,121 @@ fail: return error; } -static const struct iwn_hal * -iwn_hal_attach(struct iwn_softc *sc) +static int +iwn4965_attach(struct iwn_softc *sc, uint16_t pid) { - sc->hw_type = (IWN_READ(sc, IWN_HW_REV) >> 4) & 0xf; + struct iwn_ops *ops = &sc->ops; + + ops->load_firmware = iwn4965_load_firmware; + ops->read_eeprom = iwn4965_read_eeprom; + ops->post_alive = iwn4965_post_alive; + ops->nic_config = iwn4965_nic_config; + ops->update_sched = iwn4965_update_sched; + ops->get_temperature = iwn4965_get_temperature; + ops->get_rssi = iwn4965_get_rssi; + ops->set_txpower = iwn4965_set_txpower; + ops->init_gains = iwn4965_init_gains; + ops->set_gains = iwn4965_set_gains; + ops->add_node = iwn4965_add_node; + ops->tx_done = iwn4965_tx_done; +#if 0 /* HT */ + ops->ampdu_tx_start = iwn4965_ampdu_tx_start; + ops->ampdu_tx_stop = iwn4965_ampdu_tx_stop; +#endif + sc->ntxqs = IWN4965_NTXQUEUES; + sc->ndmachnls = IWN4965_NDMACHNLS; + sc->broadcast_id = IWN4965_ID_BROADCAST; + sc->rxonsz = IWN4965_RXONSZ; + sc->schedsz = IWN4965_SCHEDSZ; + sc->fw_text_maxsz = IWN4965_FW_TEXT_MAXSZ; + sc->fw_data_maxsz = IWN4965_FW_DATA_MAXSZ; + sc->fwsz = IWN4965_FWSZ; + sc->sched_txfact_addr = IWN4965_SCHED_TXFACT; + sc->limits = &iwn4965_sensitivity_limits; + sc->fwname = "iwn4965fw"; + /* Override chains masks, ROM is known to be broken. */ + sc->txchainmask = IWN_ANT_AB; + sc->rxchainmask = IWN_ANT_ABC; + + return 0; +} + +static int +iwn5000_attach(struct iwn_softc *sc, uint16_t pid) +{ + struct iwn_ops *ops = &sc->ops; + + ops->load_firmware = iwn5000_load_firmware; + ops->read_eeprom = iwn5000_read_eeprom; + ops->post_alive = iwn5000_post_alive; + ops->nic_config = iwn5000_nic_config; + ops->update_sched = iwn5000_update_sched; + ops->get_temperature = iwn5000_get_temperature; + ops->get_rssi = iwn5000_get_rssi; + ops->set_txpower = iwn5000_set_txpower; + ops->init_gains = iwn5000_init_gains; + ops->set_gains = iwn5000_set_gains; + ops->add_node = iwn5000_add_node; + ops->tx_done = iwn5000_tx_done; +#if 0 /* HT */ + ops->ampdu_tx_start = iwn5000_ampdu_tx_start; + ops->ampdu_tx_stop = iwn5000_ampdu_tx_stop; +#endif + sc->ntxqs = IWN5000_NTXQUEUES; + sc->ndmachnls = IWN5000_NDMACHNLS; + sc->broadcast_id = IWN5000_ID_BROADCAST; + sc->rxonsz = IWN5000_RXONSZ; + sc->schedsz = IWN5000_SCHEDSZ; + sc->fw_text_maxsz = IWN5000_FW_TEXT_MAXSZ; + sc->fw_data_maxsz = IWN5000_FW_DATA_MAXSZ; + sc->fwsz = IWN5000_FWSZ; + sc->sched_txfact_addr = IWN5000_SCHED_TXFACT; switch (sc->hw_type) { - case IWN_HW_REV_TYPE_4965: - sc->sc_hal = &iwn4965_hal; - sc->limits = &iwn4965_sensitivity_limits; - sc->fwname = "iwn4965fw"; - sc->txchainmask = IWN_ANT_AB; - sc->rxchainmask = IWN_ANT_ABC; - break; case IWN_HW_REV_TYPE_5100: - sc->sc_hal = &iwn5000_hal; sc->limits = &iwn5000_sensitivity_limits; sc->fwname = "iwn5000fw"; + /* Override chains masks, ROM is known to be broken. */ sc->txchainmask = IWN_ANT_B; sc->rxchainmask = IWN_ANT_AB; break; case IWN_HW_REV_TYPE_5150: - sc->sc_hal = &iwn5000_hal; sc->limits = &iwn5150_sensitivity_limits; sc->fwname = "iwn5150fw"; - sc->txchainmask = IWN_ANT_A; - sc->rxchainmask = IWN_ANT_AB; break; case IWN_HW_REV_TYPE_5300: case IWN_HW_REV_TYPE_5350: - sc->sc_hal = &iwn5000_hal; sc->limits = &iwn5000_sensitivity_limits; sc->fwname = "iwn5000fw"; - sc->txchainmask = IWN_ANT_ABC; - sc->rxchainmask = IWN_ANT_ABC; break; case IWN_HW_REV_TYPE_1000: - sc->sc_hal = &iwn5000_hal; sc->limits = &iwn1000_sensitivity_limits; sc->fwname = "iwn1000fw"; - sc->txchainmask = IWN_ANT_A; - sc->rxchainmask = IWN_ANT_AB; break; case IWN_HW_REV_TYPE_6000: - sc->sc_hal = &iwn5000_hal; sc->limits = &iwn6000_sensitivity_limits; sc->fwname = "iwn6000fw"; - switch (pci_get_device(sc->sc_dev)) { - case 0x422C: - case 0x4239: + if (pid == 0x422c || pid == 0x4239) { sc->sc_flags |= IWN_FLAG_INTERNAL_PA; + /* Override chains masks, ROM is known to be broken. */ sc->txchainmask = IWN_ANT_BC; sc->rxchainmask = IWN_ANT_BC; - break; - default: - sc->txchainmask = IWN_ANT_ABC; - sc->rxchainmask = IWN_ANT_ABC; - break; } break; case IWN_HW_REV_TYPE_6050: - sc->sc_hal = &iwn5000_hal; sc->limits = &iwn6000_sensitivity_limits; sc->fwname = "iwn6050fw"; - sc->txchainmask = IWN_ANT_AB; - sc->rxchainmask = IWN_ANT_AB; break; case IWN_HW_REV_TYPE_6005: - sc->sc_hal = &iwn5000_hal; sc->limits = &iwn6000_sensitivity_limits; sc->fwname = "iwn6005fw"; - sc->txchainmask = IWN_ANT_AB; - sc->rxchainmask = IWN_ANT_AB; break; default: device_printf(sc->sc_dev, "adapter type %d not supported\n", sc->hw_type); - return NULL; + return ENOTSUP; } - return sc->sc_hal; + return 0; } /* @@ -934,9 +919,8 @@ iwn_detach(device_t dev) /* Free DMA resources. */ iwn_free_rx_ring(sc, &sc->rxq); - if (sc->sc_hal != NULL) - for (qid = 0; qid < sc->sc_hal->ntxqs; qid++) - iwn_free_tx_ring(sc, &sc->txq[qid]); + for (qid = 0; qid < sc->ntxqs; qid++) + iwn_free_tx_ring(sc, &sc->txq[qid]); iwn_free_sched(sc); iwn_free_kw(sc); if (sc->ict != NULL) @@ -1298,7 +1282,7 @@ iwn_alloc_sched(struct iwn_softc *sc) { /* TX scheduler rings must be aligned on a 1KB boundary. */ return iwn_dma_contig_alloc(sc, &sc->sched_dma, (void **)&sc->sched, - sc->sc_hal->schedsz, 1024); + sc->schedsz, 1024); } static void @@ -1338,8 +1322,7 @@ static int iwn_alloc_fwmem(struct iwn_softc *sc) { /* Must be aligned on a 16-byte boundary. */ - return iwn_dma_contig_alloc(sc, &sc->fw_dma, NULL, sc->sc_hal->fwsz, - 16); + return iwn_dma_contig_alloc(sc, &sc->fw_dma, NULL, sc->fwsz, 16); } static void @@ -1633,7 +1616,7 @@ iwn5000_ict_reset(struct iwn_softc *sc) static int iwn_read_eeprom(struct iwn_softc *sc, uint8_t macaddr[IEEE80211_ADDR_LEN]) { - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; uint16_t val; int error; @@ -1673,12 +1656,17 @@ iwn_read_eeprom(struct iwn_softc *sc, ui iwn_read_prom_data(sc, IWN_EEPROM_RFCFG, &val, 2); sc->rfcfg = le16toh(val); DPRINTF(sc, IWN_DEBUG_RESET, "radio config=0x%04x\n", sc->rfcfg); + /* Read Tx/Rx chains from ROM unless it's known to be broken. */ + if (sc->txchainmask == 0) + sc->txchainmask = IWN_RFCFG_TXANTMSK(sc->rfcfg); + if (sc->rxchainmask == 0) + sc->rxchainmask = IWN_RFCFG_RXANTMSK(sc->rfcfg); /* Read MAC address. */ iwn_read_prom_data(sc, IWN_EEPROM_MAC, macaddr, 6); /* Read adapter-specific information from EEPROM. */ - hal->read_eeprom(sc); + ops->read_eeprom(sc); iwn_apm_stop(sc); /* Power OFF adapter. */ @@ -2203,7 +2191,7 @@ static void iwn_rx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc, struct iwn_rx_data *data) { - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; struct iwn_rx_ring *ring = &sc->rxq; @@ -2311,7 +2299,7 @@ iwn_rx_done(struct iwn_softc *sc, struct nf = (ni != NULL && ni->ni_vap->iv_state == IEEE80211_S_RUN && (ic->ic_flags & IEEE80211_F_SCAN) == 0) ? sc->noise : -95; - rssi = hal->get_rssi(sc, stat); + rssi = ops->get_rssi(sc, stat); if (ieee80211_radiotap_active(ic)) { struct iwn_rx_radiotap_header *tap = &sc->sc_rxtap; @@ -2436,7 +2424,7 @@ static void iwn_rx_statistics(struct iwn_softc *sc, struct iwn_rx_desc *desc, struct iwn_rx_data *data) { - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); @@ -2459,7 +2447,7 @@ iwn_rx_statistics(struct iwn_softc *sc, if (stats->general.temp != sc->rawtemp) { /* Convert "raw" temperature to degC. */ sc->rawtemp = stats->general.temp; - temp = hal->get_temperature(sc); + temp = ops->get_temperature(sc); DPRINTF(sc, IWN_DEBUG_CALIBRATE, "%s: temperature %d\n", __func__, temp); @@ -2634,6 +2622,7 @@ iwn_cmd_done(struct iwn_softc *sc, struc static void iwn_notif_intr(struct iwn_softc *sc) { + struct iwn_ops *ops = &sc->ops; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; struct ieee80211vap *vap = TAILQ_FIRST(&ic->ic_vaps); @@ -2680,7 +2669,7 @@ iwn_notif_intr(struct iwn_softc *sc) case IWN_TX_DONE: /* An 802.11 frame has been transmitted. */ - sc->sc_hal->tx_done(sc, desc, data); + ops->tx_done(sc, desc, data); break; case IWN_RX_STATISTICS: @@ -2818,7 +2807,7 @@ iwn_wakeup_intr(struct iwn_softc *sc) /* Wakeup RX and TX rings. */ IWN_WRITE(sc, IWN_FH_RX_WPTR, sc->rxq.cur & ~7); - for (qid = 0; qid < sc->sc_hal->ntxqs; qid++) { + for (qid = 0; qid < sc->ntxqs; qid++) { struct iwn_tx_ring *ring = &sc->txq[qid]; IWN_WRITE(sc, IWN_HBUS_TARG_WRPTR, qid << 8 | ring->cur); } @@ -2849,7 +2838,6 @@ iwn_rftoggle_intr(struct iwn_softc *sc) static void iwn_fatal_intr(struct iwn_softc *sc) { - const struct iwn_hal *hal = sc->sc_hal; struct iwn_fw_dump dump; int i; @@ -2861,7 +2849,7 @@ iwn_fatal_intr(struct iwn_softc *sc) /* Check that the error log address is valid. */ if (sc->errptr < IWN_FW_DATA_BASE || sc->errptr + sizeof (dump) > - IWN_FW_DATA_BASE + hal->fw_data_maxsz) { + IWN_FW_DATA_BASE + sc->fw_data_maxsz) { printf("%s: bad firmware error log address 0x%08x\n", __func__, sc->errptr); return; @@ -2896,7 +2884,7 @@ iwn_fatal_intr(struct iwn_softc *sc) /* Dump driver status (TX and RX rings) while we're here. */ printf("driver status:\n"); - for (i = 0; i < hal->ntxqs; i++) { + for (i = 0; i < sc->ntxqs; i++) { struct iwn_tx_ring *ring = &sc->txq[i]; printf(" tx ring %2d: qid=%-2d cur=%-3d queued=%-3d\n", i, ring->qid, ring->cur, ring->queued); @@ -3069,7 +3057,6 @@ iwn_plcp_signal(int rate) { static int iwn_tx_data(struct iwn_softc *sc, struct mbuf *m, struct ieee80211_node *ni) { - const struct iwn_hal *hal = sc->sc_hal; const struct ieee80211_txparam *tp; struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; @@ -3200,7 +3187,7 @@ iwn_tx_data(struct iwn_softc *sc, struct if (IEEE80211_IS_MULTICAST(wh->i_addr1) || type != IEEE80211_FC0_TYPE_DATA) - tx->id = hal->broadcast_id; + tx->id = sc->broadcast_id; else tx->id = wn->id; @@ -3232,7 +3219,7 @@ iwn_tx_data(struct iwn_softc *sc, struct tx->lifetime = htole32(IWN_LIFETIME_INFINITE); tx->plcp = rinfo->plcp; tx->rflags = rinfo->flags; - if (tx->id == hal->broadcast_id) { + if (tx->id == sc->broadcast_id) { /* Group or management frame. */ tx->linkq = 0; /* XXX Alternate between antenna A and B? */ @@ -3314,7 +3301,7 @@ iwn_tx_data(struct iwn_softc *sc, struct #ifdef notyet /* Update TX scheduler. */ - hal->update_sched(sc, ring->qid, ring->cur, tx->id, totlen); + ops->update_sched(sc, ring->qid, ring->cur, tx->id, totlen); #endif /* Kick TX ring. */ @@ -3332,7 +3319,6 @@ static int iwn_tx_data_raw(struct iwn_softc *sc, struct mbuf *m, struct ieee80211_node *ni, const struct ieee80211_bpf_params *params) { - const struct iwn_hal *hal = sc->sc_hal; const struct iwn_rate *rinfo; struct ifnet *ifp = sc->sc_ifp; struct ieee80211vap *vap = ni->ni_vap; @@ -3437,7 +3423,7 @@ iwn_tx_data_raw(struct iwn_softc *sc, st tx->len = htole16(totlen); tx->tid = 0; - tx->id = hal->broadcast_id; + tx->id = sc->broadcast_id; tx->rts_ntries = params->ibp_try1; tx->data_ntries = params->ibp_try0; tx->lifetime = htole32(IWN_LIFETIME_INFINITE); @@ -3519,7 +3505,7 @@ iwn_tx_data_raw(struct iwn_softc *sc, st #ifdef notyet /* Update TX scheduler. */ - hal->update_sched(sc, ring->qid, ring->cur, tx->id, totlen); + ops->update_sched(sc, ring->qid, ring->cur, tx->id, totlen); #endif /* Kick TX ring. */ @@ -3744,7 +3730,7 @@ iwn_cmd(struct iwn_softc *sc, int code, #ifdef notyet /* Update TX scheduler. */ - sc->sc_hal->update_sched(sc, ring->qid, ring->cur, 0, 0); + ops->update_sched(sc, ring->qid, ring->cur, 0, 0); #endif /* Kick command ring. */ @@ -3821,7 +3807,7 @@ iwn_set_link_quality(struct iwn_softc *s static int iwn_add_broadcast_node(struct iwn_softc *sc, int async) { - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; struct iwn_node_info node; @@ -3832,16 +3818,16 @@ iwn_add_broadcast_node(struct iwn_softc memset(&node, 0, sizeof node); IEEE80211_ADDR_COPY(node.macaddr, ifp->if_broadcastaddr); - node.id = hal->broadcast_id; + node.id = sc->broadcast_id; DPRINTF(sc, IWN_DEBUG_RESET, "%s: adding broadcast node\n", __func__); - if ((error = hal->add_node(sc, &node, async)) != 0) + if ((error = ops->add_node(sc, &node, async)) != 0) return error; /* Use the first valid TX antenna. */ txant = IWN_LSB(sc->txchainmask); memset(&linkq, 0, sizeof linkq); - linkq.id = sc->sc_hal->broadcast_id; + linkq.id = sc->broadcast_id; linkq.antmsk_1stream = txant; linkq.antmsk_2stream = IWN_ANT_AB; linkq.ampdu_max = 64; @@ -4266,7 +4252,7 @@ iwn5000_get_temperature(struct iwn_softc static int iwn_init_sensitivity(struct iwn_softc *sc) { - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; struct iwn_calib_state *calib = &sc->calib; uint32_t flags; int error; @@ -4289,7 +4275,7 @@ iwn_init_sensitivity(struct iwn_softc *s return error; /* Write initial gains. */ - if ((error = hal->init_gains(sc)) != 0) + if ((error = ops->init_gains(sc)) != 0) return error; /* Request statistics at each beacon interval. */ @@ -4308,7 +4294,7 @@ static void iwn_collect_noise(struct iwn_softc *sc, const struct iwn_rx_general_stats *stats) { - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; struct iwn_calib_state *calib = &sc->calib; uint32_t val; int i; @@ -4339,13 +4325,13 @@ iwn_collect_noise(struct iwn_softc *sc, if ((sc->chainmask & sc->txchainmask) == 0) sc->chainmask |= IWN_LSB(sc->txchainmask); - (void)hal->set_gains(sc); + (void)ops->set_gains(sc); calib->state = IWN_CALIB_STATE_RUN; #ifdef notyet /* XXX Disable RX chains with no antennas connected. */ sc->rxon.rxchain = htole16(IWN_RXCHAIN_SEL(sc->chainmask)); - (void)iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, hal->rxonsz, 1); + (void)iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, sc->rxonsz, 1); #endif #if 0 @@ -4708,7 +4694,7 @@ iwn_send_btcoex(struct iwn_softc *sc) static int iwn_config(struct iwn_softc *sc) { - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; uint32_t txmask; @@ -4782,7 +4768,7 @@ iwn_config(struct iwn_softc *sc) IWN_RXCHAIN_IDLE_COUNT(2); sc->rxon.rxchain = htole16(rxchain); DPRINTF(sc, IWN_DEBUG_RESET, "%s: setting configuration\n", __func__); - error = iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, hal->rxonsz, 0); + error = iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, sc->rxonsz, 0); if (error != 0) { device_printf(sc->sc_dev, "%s: RXON command failed\n", __func__); @@ -4796,7 +4782,7 @@ iwn_config(struct iwn_softc *sc) } /* Configuration has changed, set TX power accordingly. */ - if ((error = hal->set_txpower(sc, ic->ic_curchan, 0)) != 0) { + if ((error = ops->set_txpower(sc, ic->ic_curchan, 0)) != 0) { device_printf(sc->sc_dev, "%s: could not set TX power\n", __func__); return error; @@ -4878,7 +4864,7 @@ iwn_scan(struct iwn_softc *sc) tx = (struct iwn_cmd_data *)(hdr + 1); tx->flags = htole32(IWN_TX_AUTO_SEQ); - tx->id = sc->sc_hal->broadcast_id; + tx->id = sc->broadcast_id; tx->lifetime = htole32(IWN_LIFETIME_INFINITE); if (IEEE80211_IS_CHAN_A(ic->ic_curchan)) { @@ -4986,7 +4972,7 @@ iwn_scan(struct iwn_softc *sc) static int iwn_auth(struct iwn_softc *sc, struct ieee80211vap *vap) { - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; struct ieee80211_node *ni = vap->iv_bss; @@ -5016,7 +5002,7 @@ iwn_auth(struct iwn_softc *sc, struct ie DPRINTF(sc, IWN_DEBUG_STATE, "rxon chan %d flags %x cck %x ofdm %x\n", sc->rxon.chan, sc->rxon.flags, sc->rxon.cck_mask, sc->rxon.ofdm_mask); - error = iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, hal->rxonsz, 1); + error = iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, sc->rxonsz, 1); if (error != 0) { device_printf(sc->sc_dev, "%s: RXON command failed, error %d\n", __func__, error); @@ -5024,7 +5010,7 @@ iwn_auth(struct iwn_softc *sc, struct ie } /* Configuration has changed, set TX power accordingly. */ - if ((error = hal->set_txpower(sc, ni->ni_chan, 1)) != 0) { + if ((error = ops->set_txpower(sc, ni->ni_chan, 1)) != 0) { device_printf(sc->sc_dev, "%s: could not set TX power, error %d\n", __func__, error); return error; @@ -5046,7 +5032,7 @@ static int iwn_run(struct iwn_softc *sc, struct ieee80211vap *vap) { #define MS(v,x) (((v) & x) >> x##_S) - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; struct ifnet *ifp = sc->sc_ifp; struct ieee80211com *ic = ifp->if_l2com; struct ieee80211_node *ni = vap->iv_bss; @@ -5109,7 +5095,7 @@ iwn_run(struct iwn_softc *sc, struct iee sc->rxon.filter |= htole32(IWN_FILTER_BSS); DPRINTF(sc, IWN_DEBUG_STATE, "rxon chan %d flags %x\n", sc->rxon.chan, sc->rxon.flags); - error = iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, hal->rxonsz, 1); + error = iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, sc->rxonsz, 1); if (error != 0) { device_printf(sc->sc_dev, "%s: could not update configuration, error %d\n", __func__, @@ -5118,7 +5104,7 @@ iwn_run(struct iwn_softc *sc, struct iee } /* Configuration has changed, set TX power accordingly. */ - if ((error = hal->set_txpower(sc, ni->ni_chan, 1)) != 0) { + if ((error = ops->set_txpower(sc, ni->ni_chan, 1)) != 0) { device_printf(sc->sc_dev, "%s: could not set TX power, error %d\n", __func__, error); return error; @@ -5137,7 +5123,7 @@ iwn_run(struct iwn_softc *sc, struct iee IWN_AMDPU_DENSITY(5)); /* 2us */ #endif DPRINTF(sc, IWN_DEBUG_STATE, "%s: adding BSS node\n", __func__); - error = hal->add_node(sc, &node, 1); + error = ops->add_node(sc, &node, 1); if (error != 0) { device_printf(sc->sc_dev, "%s: could not add BSS node, error %d\n", __func__, error); @@ -5181,6 +5167,7 @@ iwn_ampdu_rx_start(struct ieee80211com * { struct ieee80211_rx_ba *ba = &ni->ni_rx_ba[tid]; struct iwn_softc *sc = ic->ic_softc; + struct iwn_ops *ops = &sc->ops; struct iwn_node *wn = (void *)ni; struct iwn_node_info node; @@ -5192,7 +5179,7 @@ iwn_ampdu_rx_start(struct ieee80211com * node.addba_ssn = htole16(ba->ba_winstart); DPRINTF(sc, IWN_DEBUG_RECV, "ADDBA RA=%d TID=%d SSN=%d\n", wn->id, tid, ba->ba_winstart); - return sc->sc_hal->add_node(sc, &node, 1); + return ops->add_node(sc, &node, 1); } /* @@ -5204,6 +5191,7 @@ iwn_ampdu_rx_stop(struct ieee80211com *i uint8_t tid) { struct iwn_softc *sc = ic->ic_softc; + struct iwn_ops *ops = &sc->ops; struct iwn_node *wn = (void *)ni; struct iwn_node_info node; @@ -5213,7 +5201,7 @@ iwn_ampdu_rx_stop(struct ieee80211com *i node.flags = IWN_FLAG_SET_DELBA; node.delba_tid = tid; DPRINTF(sc, IWN_DEBUG_RECV, "DELBA RA=%d TID=%d\n", wn->id, tid); - (void)sc->sc_hal->add_node(sc, &node, 1); + (void)ops->add_node(sc, &node, 1); } /* @@ -5226,7 +5214,7 @@ iwn_ampdu_tx_start(struct ieee80211com * { struct ieee80211_tx_ba *ba = &ni->ni_tx_ba[tid]; struct iwn_softc *sc = ic->ic_softc; - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; struct iwn_node *wn = (void *)ni; struct iwn_node_info node; int error; @@ -5238,13 +5226,13 @@ iwn_ampdu_tx_start(struct ieee80211com * node.control = IWN_NODE_UPDATE; node.flags = IWN_FLAG_SET_DISABLE_TID; node.disable_tid = htole16(wn->disable_tid); - error = hal->add_node(sc, &node, 1); + error = ops->add_node(sc, &node, 1); if (error != 0) return error; if ((error = iwn_nic_lock(sc)) != 0) return error; - hal->ampdu_tx_start(sc, ni, tid, ba->ba_winstart); + ops->ampdu_tx_start(sc, ni, tid, ba->ba_winstart); iwn_nic_unlock(sc); return 0; } @@ -5255,10 +5243,11 @@ iwn_ampdu_tx_stop(struct ieee80211com *i { struct ieee80211_tx_ba *ba = &ni->ni_tx_ba[tid]; struct iwn_softc *sc = ic->ic_softc; + struct iwn_ops *ops = &sc->ops; if (iwn_nic_lock(sc) != 0) return; - sc->sc_hal->ampdu_tx_stop(sc, tid, ba->ba_winstart); + ops->ampdu_tx_stop(sc, tid, ba->ba_winstart); iwn_nic_unlock(sc); } @@ -5968,7 +5957,6 @@ iwn_read_firmware_tlv(struct iwn_softc * static int iwn_read_firmware(struct iwn_softc *sc) { - const struct iwn_hal *hal = sc->sc_hal; struct iwn_fw_info *fw = &sc->fw; int error; @@ -6011,10 +5999,10 @@ iwn_read_firmware(struct iwn_softc *sc) } /* Make sure text and data sections fit in hardware memory. */ - if (fw->main.textsz > hal->fw_text_maxsz || - fw->main.datasz > hal->fw_data_maxsz || - fw->init.textsz > hal->fw_text_maxsz || - fw->init.datasz > hal->fw_data_maxsz || + if (fw->main.textsz > sc->fw_text_maxsz || + fw->main.datasz > sc->fw_data_maxsz || + fw->init.textsz > sc->fw_text_maxsz || + fw->init.datasz > sc->fw_data_maxsz || fw->boot.textsz > IWN_FW_BOOT_TEXT_MAXSZ || (fw->boot.textsz & 3) != 0) { device_printf(sc->sc_dev, "%s: firmware sections too large\n", @@ -6232,7 +6220,7 @@ iwn_hw_prepare(struct iwn_softc *sc) static int iwn_hw_init(struct iwn_softc *sc) { - const struct iwn_hal *hal = sc->sc_hal; + struct iwn_ops *ops = &sc->ops; int error, chnl, qid; /* Clear pending interrupts. */ @@ -6252,7 +6240,7 @@ iwn_hw_init(struct iwn_softc *sc) iwn_nic_unlock(sc); /* Perform adapter-specific initialization. */ - if ((error = hal->nic_config(sc)) != 0) + if ((error = ops->nic_config(sc)) != 0) return error; /* Initialize RX ring. */ @@ -6279,13 +6267,13 @@ iwn_hw_init(struct iwn_softc *sc) return error; /* Initialize TX scheduler. */ - iwn_prph_write(sc, hal->sched_txfact_addr, 0); + iwn_prph_write(sc, sc->sched_txfact_addr, 0); /* Set physical address of "keep warm" page (16-byte aligned). */ IWN_WRITE(sc, IWN_FH_KW_ADDR, sc->kw_dma.paddr >> 4); /* Initialize TX rings. */ - for (qid = 0; qid < hal->ntxqs; qid++) { + for (qid = 0; qid < sc->ntxqs; qid++) { struct iwn_tx_ring *txq = &sc->txq[qid]; /* Set physical address of TX ring (256-byte aligned). */ @@ -6295,7 +6283,7 @@ iwn_hw_init(struct iwn_softc *sc) iwn_nic_unlock(sc); /* Enable DMA channels. */ - for (chnl = 0; chnl < hal->ndmachnls; chnl++) { + for (chnl = 0; chnl < sc->ndmachnls; chnl++) { IWN_WRITE(sc, IWN_FH_TX_CONFIG(chnl), IWN_FH_TX_CONFIG_DMA_ENA | IWN_FH_TX_CONFIG_DMA_CREDIT_ENA); @@ -6316,7 +6304,7 @@ iwn_hw_init(struct iwn_softc *sc) IWN_WRITE(sc, IWN_UCODE_GP1_CLR, IWN_UCODE_GP1_RFKILL); IWN_WRITE(sc, IWN_UCODE_GP1_CLR, IWN_UCODE_GP1_RFKILL); - if ((error = hal->load_firmware(sc)) != 0) { + if ((error = ops->load_firmware(sc)) != 0) { device_printf(sc->sc_dev, "%s: could not load firmware, error %d\n", __func__, error); @@ -6330,13 +6318,12 @@ iwn_hw_init(struct iwn_softc *sc) return error; } /* Do post-firmware initialization. */ - return hal->post_alive(sc); + return ops->post_alive(sc); } static void iwn_hw_stop(struct iwn_softc *sc) { - const struct iwn_hal *hal = sc->sc_hal; int chnl, qid, ntries; IWN_WRITE(sc, IWN_RESET, IWN_RESET_NEVO); @@ -6351,11 +6338,11 @@ iwn_hw_stop(struct iwn_softc *sc) iwn_nic_unlock(sc); /* Stop TX scheduler. */ - iwn_prph_write(sc, hal->sched_txfact_addr, 0); + iwn_prph_write(sc, sc->sched_txfact_addr, 0); /* Stop all DMA channels. */ if (iwn_nic_lock(sc) == 0) { - for (chnl = 0; chnl < hal->ndmachnls; chnl++) { + for (chnl = 0; chnl < sc->ndmachnls; chnl++) { IWN_WRITE(sc, IWN_FH_TX_CONFIG(chnl), 0); for (ntries = 0; ntries < 200; ntries++) { if (IWN_READ(sc, IWN_FH_TX_STATUS) & @@ -6371,7 +6358,7 @@ iwn_hw_stop(struct iwn_softc *sc) iwn_reset_rx_ring(sc, &sc->rxq); /* Reset all TX rings. */ - for (qid = 0; qid < hal->ntxqs; qid++) + for (qid = 0; qid < sc->ntxqs; qid++) iwn_reset_tx_ring(sc, &sc->txq[qid]); if (iwn_nic_lock(sc) == 0) { Modified: stable/8/sys/dev/iwn/if_iwnvar.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 12:00:49 2011 (r223248) +++ stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 12:03:30 2011 (r223249) @@ -157,7 +157,7 @@ struct iwn_fw_info { struct iwn_fw_part boot; }; -struct iwn_hal { +struct iwn_ops { int (*load_firmware)(struct iwn_softc *); void (*read_eeprom)(struct iwn_softc *); int (*post_alive)(struct iwn_softc *); @@ -180,15 +180,6 @@ struct iwn_hal { void (*ampdu_tx_stop)(struct iwn_softc *, uint8_t, uint16_t); #endif - int ntxqs; - int ndmachnls; - uint8_t broadcast_id; - int rxonsz; - int schedsz; - uint32_t fw_text_maxsz; - uint32_t fw_data_maxsz; - uint32_t fwsz; - bus_size_t sched_txfact_addr; }; struct iwn_vap { @@ -215,10 +206,20 @@ struct iwn_softc { #define IWN_FLAG_INTERNAL_PA (1 << 4) uint8_t hw_type; - const struct iwn_hal *sc_hal; + + struct iwn_ops ops; const char *fwname; const struct iwn_sensitivity_limits *limits; + int ntxqs; + int ndmachnls; + uint8_t broadcast_id; + int rxonsz; + int schedsz; + uint32_t fw_text_maxsz; + uint32_t fw_data_maxsz; + uint32_t fwsz; + bus_size_t sched_txfact_addr; /* TX scheduler rings. */ struct iwn_dma_info sched_dma; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:05:10 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BF94A1065672; Sat, 18 Jun 2011 12:05:10 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail08.syd.optusnet.com.au (mail08.syd.optusnet.com.au [211.29.132.189]) by mx1.freebsd.org (Postfix) with ESMTP id 44A1C8FC0A; Sat, 18 Jun 2011 12:05:09 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail08.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p5IC56V2005940 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 18 Jun 2011 22:05:07 +1000 Date: Sat, 18 Jun 2011 22:05:06 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Jung-uk Kim In-Reply-To: <201106081913.09272.jkim@FreeBSD.org> Message-ID: <20110618210815.W889@besplex.bde.org> References: <201106081938.p58JcWuB044252@svn.freebsd.org> <20110609055112.P2870@besplex.bde.org> <201106081913.09272.jkim@FreeBSD.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Bruce Evans Subject: Re: svn commit: r222866 - head/sys/x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:05:10 -0000 Long ago, On Wed, 8 Jun 2011, Jung-uk Kim wrote: > On Wednesday 08 June 2011 04:55 pm, Bruce Evans wrote: >> On Wed, 8 Jun 2011, Jung-uk Kim wrote: >>> Log: >>> Introduce low-resolution TSC timecounter "TSC-low". It replaces >>> the normal TSC timecounter if TSC frequency is higher than ~4.29 >>> MHz (or 2^32-1 Hz) or > >> It should be a separate timecounter so that the user can choose it >> independently, at least in the SMP case where it is very low (at >> most ~4.29 GHz >> 8 ~= 17 MHz). > > As I noted in the log, it is still higher than the previous default > ACPI-fast, which is ~3.68 MHz and I've never heard of any complaint > about ACPI-fast being too low. ;-) That's because it is too low to measure itself being low :-). > Nothing prevents us from making a separate timecounter, though. In > fact, we can do the same for ACPI-fast/ACPI-safe. However, that'll > only confuse users, IMHO. TSC/TSC-low sort of corresponds to ACPI-fast/ACPI-safe. Users can switch between the latter. What they can't do is run both concurrently, either to compare them or use the best one that works in the current context. That would be more developers and is not implemented mainly because it has more complexity (only a tiny amount of extra overhead I think, provided you don't try to keep the 2 times coherent -- just an extra windup for each active timecounter). >>> static void tsc_levels_changed(void *arg, int unit); >>> >>> static struct timecounter tsc_timecounter = { >>> @@ -392,11 +393,19 @@ test_smp_tsc(void) >>> static void >>> init_TSC_tc(void) >> >> This seems to only be called once at boot time. So the lowness may >> be much lower than necessary if the levels are reduced >> significantly later. > > It'll only happen when the CPU is started at the highest frequency and > TSC is not invariant. In this case, its quality will be set to 800 > and HPET or ACPI timecounter will be selected by default. I don't > see much problem with the default choice here. Can the CPU be started at a low frequency and throttled up later? I agree that the non-invariant case is not very important. >>> { >>> + uint64_t max_freq; >>> + int shift; >>> >>> if ((cpu_feature & CPUID_TSC) == 0 || tsc_disabled) >>> return; >>> >>> /* >>> + * Limit timecounter frequency to fit in an int and prevent it >>> from + * overflowing too fast. >>> + */ >>> + max_freq = UINT_MAX; >>> + >>> + /* >>> * We can not use the TSC if we support APM. Precise >>> timekeeping * on an APM'ed machine is at best a fools pursuit, >>> since * any and all of the time spent in various SMM code can't >>> @@ -418,13 +427,27 @@ init_TSC_tc(void) >>> * We can not use the TSC in SMP mode unless the TSCs on all >>> CPUs are * synchronized. If the user is sure that the system has >>> synchronized * TSCs, set kern.timecounter.smp_tsc tunable to a >>> non-zero value. + * We also limit the frequency even lower to >>> avoid "temporal anomalies" + * as much as possible. >>> */ >>> - if (smp_cpus > 1) >>> + if (smp_cpus > 1) { >>> tsc_timecounter.tc_quality = test_smp_tsc(); >>> + max_freq >>= 8; >>> + } >> >> This gives especially low lowness if the levels are reduced >> significantly. Maybe as low as 100 MHz >> 8 = ~390 KHz = lower than >> an i8254. > > I don't remember any SMP-capable x86 ever running at 100 MHz unless it > is seriously under-clocked. Even if it existed, it won't be > available today. :-P Doesn't throttling give underclocking? Maybe not as low as 100 MHz, but quite low. Only a possible problem for the non-invariant case anyway. >> OTOH, maybe the temporal anomalies scale with the TSC frequency, so >> you need to right shift by a few irrespective of the TSC frequency. >> A shift count of 8 seems too much, but if the initial TSC frequency >> is already < 2**32 shifted by 8, then the final shift is 0. This is my main point. How can it be right to reduce the extra shift for SMP (if this shift is needed at all) just because the initial TSC frequency is low? All instructions are clocked, so non-temporalness within a core scales with the current frequency. Oops, this leads back to my previous point that the scaling should depend on the current frequency and not just on the initial frequency. Across cores, it isn't so clear what the non-temporalness scales with. The non-temporalness is FUD so its scaling could be anything :-). >> ... >> Perhaps the levels can also be increased significantly later. Then >> the timecounter frequency may exceed 4.29 GHz despite its scaling. > > Again, it can only happen when the CPU was started at low frequency > and the TSC is not invariant. For that case, TSC won't be selected > by default unless both HPET and ACPI timers are disabled/unavailable. But users can select it, and since user's can't control the scaling or even select between TSC/TSC-low, TSC-low must be scaled properly initially to have the best chance of working later. >>> @@ -520,8 +545,15 @@ SYSCTL_PROC(_machdep, OID_AUTO, tsc_freq >>> 0, 0, sysctl_machdep_tsc_freq, "QU", "Time Stamp Counter >>> frequency"); >>> >>> static u_int >>> -tsc_get_timecount(struct timecounter *tc) >>> +tsc_get_timecount(struct timecounter *tc __unused) >>> { >>> >>> return (rdtsc32()); >>> } >>> + >>> +static u_int >>> +tsc_get_timecount_lowres(struct timecounter *tc) >>> +{ >>> + >>> + return (rdtsc() >> (int)(intptr_t)tc->tc_priv); >> >> This forces a slow 64-bit shift (shrdl; shrl) in all cases. > > Yes, it does, unfortunately. > > I have no clue why AMD didn't implement native 64-bit RDTSC (and > RDMSR/WRMSR) in the first place. :-( I didn't notice before that it still goes to a register pair on amd64. >> rdtsc32() with a scaled tc_counter_mask should work OK (essentially >> the same as the non-low timecounter except for reduced accuracy; >> the only loss is an decrease in the time until counter overflow to >> the same as for the non-low timecounter). > > I thought about that but I didn't like that idea, i.e., losing > resolution and accuracy at the same time. But it doesn't lose any more resolution or accuracy than any shift necessarily uses. It only loses wrap time, which is of no interest for a small reduction. See another reply. The shift of 8 for SMP still seems far too much. clock_gettime() with a TSC timecounter on an old 2GHz system takes about 250 nS. I hope it takes only 1/2 that on a newer system. nanouptime() in the kernel takes more like 30 nS on the old system. It should at least try to have enough resulution for sequential calls to it to never return the same time (even ACPI-fast has this property -- about 1000 nS per call and a resolution of about 250 nS). rdtsc on old Athlons takes only 12 (9?) cycles so you could almost use it to time individual instructions (modulo out of order execution). THe invariant versions have to be much slower for synchronization :-(. They take at least 42 cycles AFAIR. A shift count of 5 would lose less resolution than an invariant TSC really has so it would be good if it is enough to hide the nontemporalness. A shift count of 6 would be OK too. But a shift count of 8 lets you execute about 4 nanouptime()'s for every change in the time returned. OTOH, 256 cycles at 4 GHz is about 64 uS and clock_gettime() unfortunately takes longer (except on Linux? :-(), so a shift count of 8 is OK for it. My clock measurement program (mostly an old program by Wollman) shows the following histogram of times for a non-invariant TSC timecounter on a 2GHz UP system: % min 273, max 265102, mean 273.998217, std 79.069534 % 1th: 273 (1727219 observations) % 2th: 274 (265607 observations) % 3th: 275 (6984 observations) % 4th: 280 (11 observations) % 5th: 290 (8 observations) The variance is small, and differences of a single nS can be seen clearly. With the SMP shift of 8 on a 4GHz system, the minimum difference would be 64 nS so it would be impossible to see the details of the distribution about the mean of 273.998 nS. Bruce From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:05:38 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 309561065678; Sat, 18 Jun 2011 12:05:38 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail03.syd.optusnet.com.au (mail03.syd.optusnet.com.au [211.29.132.184]) by mx1.freebsd.org (Postfix) with ESMTP id A82EB8FC19; Sat, 18 Jun 2011 12:05:37 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail03.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p5IC5YrR032142 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 18 Jun 2011 22:05:35 +1000 Date: Sat, 18 Jun 2011 22:05:34 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Jung-uk Kim In-Reply-To: <201106082344.p58NixUl052580@svn.freebsd.org> Message-ID: <20110618220513.O889@besplex.bde.org> References: <201106082344.p58NixUl052580@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r222884 - head/sys/x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:05:38 -0000 On Wed, 8 Jun 2011, Jung-uk Kim wrote: > Log: > Tidy up r222866. > > - Re-add accidentally removed atomic op. for sysctl(9) handler. > - Remove a period(`.') at the end of a debugging message. > - Consistently spell "low" for "TSC-low" timecounter throughout. > > Pointed out by: bde Thanks. Bruce From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:07:07 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 046AF106566B; Sat, 18 Jun 2011 12:07:07 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E6B108FC14; Sat, 18 Jun 2011 12:07:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IC767m040204; Sat, 18 Jun 2011 12:07:06 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IC762X040200; Sat, 18 Jun 2011 12:07:06 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181207.p5IC762X040200@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 12:07:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223250 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:07:07 -0000 Author: bschmidt Date: Sat Jun 18 12:07:06 2011 New Revision: 223250 URL: http://svn.freebsd.org/changeset/base/223250 Log: MFC r220729: Add some new features: - 6000 series devices need enhanced sensitivity calibration. - 6000 series devices need a different setting for the shadow reg. - set the IWN_FLAG_HAS_11N bit if the EEPROM says the device has 11n support. Obtained from: OpenBSD Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnreg.h stable/8/sys/dev/iwn/if_iwnvar.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:03:30 2011 (r223249) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:07:06 2011 (r223250) @@ -1653,6 +1653,12 @@ iwn_read_eeprom(struct iwn_softc *sc, ui } } + iwn_read_prom_data(sc, IWN_EEPROM_SKU_CAP, &val, 2); + DPRINTF(sc, IWN_DEBUG_RESET, "SKU capabilities=0x%04x\n", le16toh(val)); + /* Check if HT support is bonded out. */ + if (val & htole16(IWN_EEPROM_SKU_CAP_11N)) + sc->sc_flags |= IWN_FLAG_HAS_11N; + iwn_read_prom_data(sc, IWN_EEPROM_RFCFG, &val, 2); sc->rfcfg = le16toh(val); DPRINTF(sc, IWN_DEBUG_RESET, "radio config=0x%04x\n", sc->rfcfg); @@ -4595,9 +4601,11 @@ static int iwn_send_sensitivity(struct iwn_softc *sc) { struct iwn_calib_state *calib = &sc->calib; - struct iwn_sensitivity_cmd cmd; + struct iwn_enhanced_sensitivity_cmd cmd; + int len; memset(&cmd, 0, sizeof cmd); + len = sizeof (struct iwn_sensitivity_cmd); cmd.which = IWN_SENSITIVITY_WORKTBL; /* OFDM modulation. */ cmd.corr_ofdm_x1 = htole16(calib->ofdm_x1); @@ -4619,7 +4627,21 @@ iwn_send_sensitivity(struct iwn_softc *s calib->ofdm_x1, calib->ofdm_mrc_x1, calib->ofdm_x4, calib->ofdm_mrc_x4, calib->cck_x4, calib->cck_mrc_x4, calib->energy_cck); - return iwn_cmd(sc, IWN_CMD_SET_SENSITIVITY, &cmd, sizeof cmd, 1); + + if (!(sc->sc_flags & IWN_FLAG_ENH_SENS)) + goto send; + /* Enhanced sensitivity settings. */ + len = sizeof (struct iwn_enhanced_sensitivity_cmd); + cmd.ofdm_det_slope_mrc = htole16(668); + cmd.ofdm_det_icept_mrc = htole16(4); + cmd.ofdm_det_slope = htole16(486); + cmd.ofdm_det_icept = htole16(37); + cmd.cck_det_slope_mrc = htole16(853); + cmd.cck_det_icept_mrc = htole16(4); + cmd.cck_det_slope = htole16(476); + cmd.cck_det_icept = htole16(99); +send: + return iwn_cmd(sc, IWN_CMD_SET_SENSITIVITY, &cmd, len, 1); } /* @@ -6175,6 +6197,8 @@ iwn5000_nic_config(struct iwn_softc *sc) /* Indicate that ROM calibration version is >=6. */ IWN_SETBITS(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_CALIB_VER6); } + if (sc->hw_type == IWN_HW_REV_TYPE_6005) + IWN_SETBITS(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_6050_1X2); return 0; } @@ -6304,6 +6328,10 @@ iwn_hw_init(struct iwn_softc *sc) IWN_WRITE(sc, IWN_UCODE_GP1_CLR, IWN_UCODE_GP1_RFKILL); IWN_WRITE(sc, IWN_UCODE_GP1_CLR, IWN_UCODE_GP1_RFKILL); + /* Enable shadow registers. */ + if (sc->hw_type >= IWN_HW_REV_TYPE_6000) + IWN_SETBITS(sc, IWN_SHADOW_REG_CTRL, 0x800fffff); + if ((error = ops->load_firmware(sc)) != 0) { device_printf(sc->sc_dev, "%s: could not load firmware, error %d\n", __func__, Modified: stable/8/sys/dev/iwn/if_iwnreg.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 12:03:30 2011 (r223249) +++ stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 12:07:06 2011 (r223250) @@ -70,6 +70,7 @@ #define IWN_UCODE_GP1_CLR 0x05c #define IWN_LED 0x094 #define IWN_DRAM_INT_TBL 0x0a0 +#define IWN_SHADOW_REG_CTRL 0x0a8 #define IWN_GIO_CHICKEN 0x100 #define IWN_ANA_PLL 0x20c #define IWN_HW_REV_WA 0x22c @@ -215,6 +216,7 @@ #define IWN_GP_DRIVER_RADIO_2X2_HYB (1 << 0) #define IWN_GP_DRIVER_RADIO_2X2_IPA (2 << 0) #define IWN_GP_DRIVER_CALIB_VER6 (1 << 2) +#define IWN_GP_DRIVER_6050_1X2 (1 << 3) /* Possible flags for register IWN_UCODE_GP1_CLR. */ #define IWN_UCODE_GP1_RFKILL (1 << 1) @@ -856,7 +858,7 @@ struct iwn_critical_temp { #define IWN_CTOMUK(c) (((c) * 1000000) + 273150000) } __packed; -/* Structure for command IWN_CMD_SET_SENSITIVITY. */ +/* Structures for command IWN_CMD_SET_SENSITIVITY. */ struct iwn_sensitivity_cmd { uint16_t which; #define IWN_SENSITIVITY_DEFAULTTBL 0 @@ -875,6 +877,34 @@ struct iwn_sensitivity_cmd { uint16_t energy_ofdm_th; } __packed; +struct iwn_enhanced_sensitivity_cmd { + uint16_t which; + uint16_t energy_cck; + uint16_t energy_ofdm; + uint16_t corr_ofdm_x1; + uint16_t corr_ofdm_mrc_x1; + uint16_t corr_cck_mrc_x4; + uint16_t corr_ofdm_x4; + uint16_t corr_ofdm_mrc_x4; + uint16_t corr_barker; + uint16_t corr_barker_mrc; + uint16_t corr_cck_x4; + uint16_t energy_ofdm_th; + /* "Enhanced" part. */ + uint16_t ina_det_ofdm; + uint16_t ina_det_cck; + uint16_t corr_11_9_en; + uint16_t ofdm_det_slope_mrc; + uint16_t ofdm_det_icept_mrc; + uint16_t ofdm_det_slope; + uint16_t ofdm_det_icept; + uint16_t cck_det_slope_mrc; + uint16_t cck_det_icept_mrc; + uint16_t cck_det_slope; + uint16_t cck_det_icept; + uint16_t reserved; +} __packed; + /* Structures for command IWN_CMD_PHY_CALIB. */ struct iwn_phy_calib { uint8_t code; @@ -1309,6 +1339,7 @@ struct iwn_fw_tlv { * Offsets into EEPROM. */ #define IWN_EEPROM_MAC 0x015 +#define IWN_EEPROM_SKU_CAP 0x045 #define IWN_EEPROM_RFCFG 0x048 #define IWN4965_EEPROM_DOMAIN 0x060 #define IWN4965_EEPROM_BAND1 0x063 @@ -1337,6 +1368,11 @@ struct iwn_fw_tlv { #define IWN5000_EEPROM_TEMP 0x12a #define IWN5000_EEPROM_VOLT 0x12b +/* Possible flags for IWN_EEPROM_SKU_CAP. */ +#define IWN_EEPROM_SKU_CAP_11N (1 << 6) +#define IWN_EEPROM_SKU_CAP_AMT (1 << 7) +#define IWN_EEPROM_SKU_CAP_IPAN (1 << 8) + /* Possible flags for IWN_EEPROM_RFCFG. */ #define IWN_RFCFG_TYPE(x) (((x) >> 0) & 0x3) #define IWN_RFCFG_STEP(x) (((x) >> 2) & 0x3) Modified: stable/8/sys/dev/iwn/if_iwnvar.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 12:03:30 2011 (r223249) +++ stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 12:07:06 2011 (r223250) @@ -204,6 +204,8 @@ struct iwn_softc { #define IWN_FLAG_CALIB_DONE (1 << 2) #define IWN_FLAG_USE_ICT (1 << 3) #define IWN_FLAG_INTERNAL_PA (1 << 4) +#define IWN_FLAG_HAS_11N (1 << 6) +#define IWN_FLAG_ENH_SENS (1 << 7) uint8_t hw_type; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:10:07 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 508381065670; Sat, 18 Jun 2011 12:10:07 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 394628FC12; Sat, 18 Jun 2011 12:10:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ICA7sD040337; Sat, 18 Jun 2011 12:10:07 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ICA7xZ040333; Sat, 18 Jun 2011 12:10:07 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181210.p5ICA7xZ040333@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 12:10:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223251 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:10:07 -0000 Author: bschmidt Date: Sat Jun 18 12:10:06 2011 New Revision: 223251 URL: http://svn.freebsd.org/changeset/base/223251 Log: MFC r220866-220867: - Pull some features out of the firmware: - If a ENH_SENS TLV section exit the firmware is capable of doing enhanced sensitivity calibration. - Newer devices/firmwares have more calibration commands therefore hardcoding the noise gain/reset commands no longer works. It is supposed to use the next index after the newest calibration type support. Read the command index of the TLV section if available. - Enable DC calibration for all 6000 series devices, except those with an internal PA. - Override the chainmask also for the 6050. Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnreg.h stable/8/sys/dev/iwn/if_iwnvar.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:07:06 2011 (r223250) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:10:06 2011 (r223251) @@ -772,6 +772,8 @@ iwn5000_attach(struct iwn_softc *sc, uin sc->fw_data_maxsz = IWN5000_FW_DATA_MAXSZ; sc->fwsz = IWN5000_FWSZ; sc->sched_txfact_addr = IWN5000_SCHED_TXFACT; + sc->reset_noise_gain = IWN5000_PHY_CALIB_RESET_NOISE_GAIN; + sc->noise_gain = IWN5000_PHY_CALIB_NOISE_GAIN; switch (sc->hw_type) { case IWN_HW_REV_TYPE_5100: @@ -807,6 +809,9 @@ iwn5000_attach(struct iwn_softc *sc, uin case IWN_HW_REV_TYPE_6050: sc->limits = &iwn6000_sensitivity_limits; sc->fwname = "iwn6050fw"; + /* Override chains masks, ROM is known to be broken. */ + sc->txchainmask = IWN_ANT_AB; + sc->rxchainmask = IWN_ANT_AB; break; case IWN_HW_REV_TYPE_6005: sc->limits = &iwn6000_sensitivity_limits; @@ -2385,7 +2390,9 @@ iwn5000_rx_calib_results(struct iwn_soft switch (calib->code) { case IWN5000_PHY_CALIB_DC: - if (sc->hw_type == IWN_HW_REV_TYPE_5150) + if ((sc->sc_flags & IWN_FLAG_INTERNAL_PA) == 0 && + (sc->hw_type == IWN_HW_REV_TYPE_5150 || + sc->hw_type >= IWN_HW_REV_TYPE_6000)) idx = 0; break; case IWN5000_PHY_CALIB_LO: @@ -4367,7 +4374,7 @@ iwn5000_init_gains(struct iwn_softc *sc) struct iwn_phy_calib cmd; memset(&cmd, 0, sizeof cmd); - cmd.code = IWN5000_PHY_CALIB_RESET_NOISE_GAIN; + cmd.code = sc->reset_noise_gain; cmd.ngroups = 1; cmd.isvalid = 1; DPRINTF(sc, IWN_DEBUG_CALIBRATE, @@ -4419,7 +4426,7 @@ iwn5000_set_gains(struct iwn_softc *sc) div = (sc->hw_type == IWN_HW_REV_TYPE_6050) ? 20 : 30; memset(&cmd, 0, sizeof cmd); - cmd.code = IWN5000_PHY_CALIB_NOISE_GAIN; + cmd.code = sc->noise_gain; cmd.ngroups = 1; cmd.isvalid = 1; /* Get first available RX antenna as referential. */ @@ -5900,7 +5907,7 @@ iwn_read_firmware_tlv(struct iwn_softc * const struct iwn_fw_tlv *tlv; const uint8_t *ptr, *end; uint64_t altmask; - uint32_t len; + uint32_t len, tmp; if (fw->size < sizeof (*hdr)) { device_printf(sc->sc_dev, "%s: firmware too short: %zu bytes\n", @@ -5965,6 +5972,17 @@ iwn_read_firmware_tlv(struct iwn_softc * fw->boot.text = ptr; fw->boot.textsz = len; break; + case IWN_FW_TLV_ENH_SENS: + if (!len) + sc->sc_flags |= IWN_FLAG_ENH_SENS; + break; + case IWN_FW_TLV_PHY_CALIB: + tmp = htole32(*ptr); + if (tmp < 253) { + sc->reset_noise_gain = tmp; + sc->noise_gain = tmp + 1; + } + break; default: DPRINTF(sc, IWN_DEBUG_RESET, "TLV type %d not handled\n", le16toh(tlv->type)); Modified: stable/8/sys/dev/iwn/if_iwnreg.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 12:07:06 2011 (r223250) +++ stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 12:10:06 2011 (r223251) @@ -1322,6 +1322,8 @@ struct iwn_fw_tlv { #define IWN_FW_TLV_INIT_DATA 4 #define IWN_FW_TLV_BOOT_TEXT 5 #define IWN_FW_TLV_PBREQ_MAXLEN 6 +#define IWN_FW_TLV_ENH_SENS 14 +#define IWN_FW_TLV_PHY_CALIB 15 uint16_t alt; uint32_t len; Modified: stable/8/sys/dev/iwn/if_iwnvar.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 12:07:06 2011 (r223250) +++ stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 12:10:06 2011 (r223251) @@ -222,6 +222,8 @@ struct iwn_softc { uint32_t fw_data_maxsz; uint32_t fwsz; bus_size_t sched_txfact_addr; + uint32_t reset_noise_gain; + uint32_t noise_gain; /* TX scheduler rings. */ struct iwn_dma_info sched_dma; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:11:49 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3FE62106566B; Sat, 18 Jun 2011 12:11:49 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2E1A28FC13; Sat, 18 Jun 2011 12:11:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ICBnpW040451; Sat, 18 Jun 2011 12:11:49 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ICBn5k040447; Sat, 18 Jun 2011 12:11:49 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181211.p5ICBn5k040447@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 12:11:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223252 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:11:49 -0000 Author: bschmidt Date: Sat Jun 18 12:11:48 2011 New Revision: 223252 URL: http://svn.freebsd.org/changeset/base/223252 Log: MFC r220891: Add basic support for advanced bluetooth coexistence required for 6005 gen2b (1030/6030) adapters. Modified: stable/8/sys/dev/iwn/if_iwn.c stable/8/sys/dev/iwn/if_iwnreg.h stable/8/sys/dev/iwn/if_iwnvar.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:10:06 2011 (r223251) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:11:48 2011 (r223252) @@ -253,6 +253,7 @@ static void iwn_tune_sensitivity(struct static int iwn_send_sensitivity(struct iwn_softc *); static int iwn_set_pslevel(struct iwn_softc *, int, int, int); static int iwn_send_btcoex(struct iwn_softc *); +static int iwn_send_advanced_btcoex(struct iwn_softc *); static int iwn_config(struct iwn_softc *); static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int); static int iwn_scan(struct iwn_softc *); @@ -816,6 +817,8 @@ iwn5000_attach(struct iwn_softc *sc, uin case IWN_HW_REV_TYPE_6005: sc->limits = &iwn6000_sensitivity_limits; sc->fwname = "iwn6005fw"; + if (pid != 0x0082 && pid != 0x0085) + sc->sc_flags |= IWN_FLAG_ADV_BTCOEX; break; default: device_printf(sc->sc_dev, "adapter type %d not supported\n", @@ -4721,6 +4724,63 @@ iwn_send_btcoex(struct iwn_softc *sc) } static int +iwn_send_advanced_btcoex(struct iwn_softc *sc) +{ + static const uint32_t btcoex_3wire[12] = { + 0xaaaaaaaa, 0xaaaaaaaa, 0xaeaaaaaa, 0xaaaaaaaa, + 0xcc00ff28, 0x0000aaaa, 0xcc00aaaa, 0x0000aaaa, + 0xc0004000, 0x00004000, 0xf0005000, 0xf0005000, + }; + struct iwn6000_btcoex_config btconfig; + struct iwn_btcoex_priotable btprio; + struct iwn_btcoex_prot btprot; + int error, i; + + memset(&btconfig, 0, sizeof btconfig); + btconfig.flags = 145; + btconfig.max_kill = 5; + btconfig.bt3_t7_timer = 1; + btconfig.kill_ack = htole32(0xffff0000); + btconfig.kill_cts = htole32(0xffff0000); + btconfig.sample_time = 2; + btconfig.bt3_t2_timer = 0xc; + for (i = 0; i < 12; i++) + btconfig.lookup_table[i] = htole32(btcoex_3wire[i]); + btconfig.valid = htole16(0xff); + btconfig.prio_boost = 0xf0; + DPRINTF(sc, IWN_DEBUG_RESET, + "%s: configuring advanced bluetooth coexistence\n", __func__); + error = iwn_cmd(sc, IWN_CMD_BT_COEX, &btconfig, sizeof(btconfig), 1); + if (error != 0) + return error; + + memset(&btprio, 0, sizeof btprio); + btprio.calib_init1 = 0x6; + btprio.calib_init2 = 0x7; + btprio.calib_periodic_low1 = 0x2; + btprio.calib_periodic_low2 = 0x3; + btprio.calib_periodic_high1 = 0x4; + btprio.calib_periodic_high2 = 0x5; + btprio.dtim = 0x6; + btprio.scan52 = 0x8; + btprio.scan24 = 0xa; + error = iwn_cmd(sc, IWN_CMD_BT_COEX_PRIOTABLE, &btprio, sizeof(btprio), + 1); + if (error != 0) + return error; + + /* Force BT state machine change. */ + memset(&btprot, 0, sizeof btprio); + btprot.open = 1; + btprot.type = 1; + error = iwn_cmd(sc, IWN_CMD_BT_COEX_PROT, &btprot, sizeof(btprot), 1); + if (error != 0) + return error; + btprot.open = 0; + return iwn_cmd(sc, IWN_CMD_BT_COEX_PROT, &btprot, sizeof(btprot), 1); +} + +static int iwn_config(struct iwn_softc *sc) { struct iwn_ops *ops = &sc->ops; @@ -4756,7 +4816,10 @@ iwn_config(struct iwn_softc *sc) } /* Configure bluetooth coexistence. */ - error = iwn_send_btcoex(sc); + if (sc->sc_flags & IWN_FLAG_ADV_BTCOEX) + error = iwn_send_advanced_btcoex(sc); + else + error = iwn_send_btcoex(sc); if (error != 0) { device_printf(sc->sc_dev, "%s: could not configure bluetooth coexistence, error %d\n", Modified: stable/8/sys/dev/iwn/if_iwnreg.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 12:10:06 2011 (r223251) +++ stable/8/sys/dev/iwn/if_iwnreg.h Sat Jun 18 12:11:48 2011 (r223252) @@ -434,6 +434,8 @@ struct iwn_tx_cmd { #define IWN_CMD_SET_CRITICAL_TEMP 164 #define IWN_CMD_SET_SENSITIVITY 168 #define IWN_CMD_PHY_CALIB 176 +#define IWN_CMD_BT_COEX_PRIOTABLE 204 +#define IWN_CMD_BT_COEX_PROT 205 uint8_t flags; uint8_t idx; @@ -829,7 +831,7 @@ struct iwn5000_cmd_txpower { uint8_t reserved; } __packed; -/* Structure for command IWN_CMD_BLUETOOTH. */ +/* Structures for command IWN_CMD_BLUETOOTH. */ struct iwn_bluetooth { uint8_t flags; #define IWN_BT_COEX_CHAN_ANN (1 << 0) @@ -847,6 +849,43 @@ struct iwn_bluetooth { uint32_t kill_cts; } __packed; +struct iwn6000_btcoex_config { + uint8_t flags; + uint8_t lead_time; + uint8_t max_kill; + uint8_t bt3_t7_timer; + uint32_t kill_ack; + uint32_t kill_cts; + uint8_t sample_time; + uint8_t bt3_t2_timer; + uint16_t bt4_reaction; + uint32_t lookup_table[12]; + uint16_t bt4_decision; + uint16_t valid; + uint8_t prio_boost; + uint8_t tx_prio_boost; + uint16_t rx_prio_boost; +} __packed; + +struct iwn_btcoex_priotable { + uint8_t calib_init1; + uint8_t calib_init2; + uint8_t calib_periodic_low1; + uint8_t calib_periodic_low2; + uint8_t calib_periodic_high1; + uint8_t calib_periodic_high2; + uint8_t dtim; + uint8_t scan52; + uint8_t scan24; + uint8_t reserved[7]; +} __packed; + +struct iwn_btcoex_prot { + uint8_t open; + uint8_t type; + uint8_t reserved[2]; +} __packed; + /* Structure for command IWN_CMD_SET_CRITICAL_TEMP. */ struct iwn_critical_temp { uint32_t reserved; Modified: stable/8/sys/dev/iwn/if_iwnvar.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 12:10:06 2011 (r223251) +++ stable/8/sys/dev/iwn/if_iwnvar.h Sat Jun 18 12:11:48 2011 (r223252) @@ -206,6 +206,7 @@ struct iwn_softc { #define IWN_FLAG_INTERNAL_PA (1 << 4) #define IWN_FLAG_HAS_11N (1 << 6) #define IWN_FLAG_ENH_SENS (1 << 7) +#define IWN_FLAG_ADV_BTCOEX (1 << 8) uint8_t hw_type; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:13:27 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7C8931065675; Sat, 18 Jun 2011 12:13:27 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6B8CC8FC13; Sat, 18 Jun 2011 12:13:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ICDRwM040546; Sat, 18 Jun 2011 12:13:27 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ICDRiq040544; Sat, 18 Jun 2011 12:13:27 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181213.p5ICDRiq040544@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 12:13:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223253 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:13:27 -0000 Author: bschmidt Date: Sat Jun 18 12:13:27 2011 New Revision: 223253 URL: http://svn.freebsd.org/changeset/base/223253 Log: MFC r220894: The 6000 series gen2 adapters have 2 firmware images, one with advanced btcoex support and one without. Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:11:48 2011 (r223252) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:13:27 2011 (r223253) @@ -816,9 +816,11 @@ iwn5000_attach(struct iwn_softc *sc, uin break; case IWN_HW_REV_TYPE_6005: sc->limits = &iwn6000_sensitivity_limits; - sc->fwname = "iwn6005fw"; - if (pid != 0x0082 && pid != 0x0085) + if (pid != 0x0082 && pid != 0x0085) { + sc->fwname = "iwn6000g2bfw"; sc->sc_flags |= IWN_FLAG_ADV_BTCOEX; + } else + sc->fwname = "iwn6000g2afw"; break; default: device_printf(sc->sc_dev, "adapter type %d not supported\n", From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:13:28 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7ADCF106566C; Sat, 18 Jun 2011 12:13:28 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6A9FF8FC14; Sat, 18 Jun 2011 12:13:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ICDS8a040579; Sat, 18 Jun 2011 12:13:28 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ICDSFu040577; Sat, 18 Jun 2011 12:13:28 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201106181213.p5ICDSFu040577@svn.freebsd.org> From: Konstantin Belousov Date: Sat, 18 Jun 2011 12:13:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223254 - head/sys/amd64/ia32 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:13:28 -0000 Author: kib Date: Sat Jun 18 12:13:28 2011 New Revision: 223254 URL: http://svn.freebsd.org/changeset/base/223254 Log: Fix vfork. Add comments. Modified: head/sys/amd64/ia32/ia32_sigtramp.S Modified: head/sys/amd64/ia32/ia32_sigtramp.S ============================================================================== --- head/sys/amd64/ia32/ia32_sigtramp.S Sat Jun 18 12:13:27 2011 (r223253) +++ head/sys/amd64/ia32/ia32_sigtramp.S Sat Jun 18 12:13:28 2011 (r223254) @@ -79,8 +79,20 @@ ia32_osigcode: jmp 1b +/* + * The lcall $7,$0 emulator cannot use the call gate that does an + * inter-privilege transition. The reason is that the call gate + * does not disable interrupts, and, before the swapgs is + * executed, we would have a window where the ring 0 code is + * executed with the wrong gsbase. + * + * Instead, reflect the lcall $7,$0 back to ring 3 trampoline + * which sets up the frame for int $0x80. + */ ALIGN_TEXT lcall_tramp: + cmpl $SYS_vfork,%eax + je 2f pushl %ebp movl %esp,%ebp pushl 0x24(%ebp) /* arg 6 */ @@ -91,8 +103,19 @@ lcall_tramp: pushl 0x10(%ebp) /* arg 1 */ pushl 0xc(%ebp) /* gap */ int $0x80 - leave + leavel +1: lretl +2: + /* + * vfork handling is special and relies on the libc stub saving + * the return ip in %ecx. If vfork failed, then there is no + * child which can corrupt the frame created by call gate. + */ + int $0x80 + jb 1b + addl $8,%esp + jmpl *%ecx #endif ALIGN_TEXT From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:27:49 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F581106566C; Sat, 18 Jun 2011 12:27:49 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5B8BC8FC0C; Sat, 18 Jun 2011 12:27:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ICRnMc041129; Sat, 18 Jun 2011 12:27:49 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ICRnsN041126; Sat, 18 Jun 2011 12:27:49 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181227.p5ICRnsN041126@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 12:27:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223255 - in stable/8/sys: conf contrib/dev/iwn modules/iwnfw/iwn1000 modules/iwnfw/iwn5000 modules/iwnfw/iwn6050 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:27:49 -0000 Author: bschmidt Date: Sat Jun 18 12:27:49 2011 New Revision: 223255 URL: http://svn.freebsd.org/changeset/base/223255 Log: MFC r220892: Update iwn(4) firmware blobs: - bump iwn1000fw to 39.31.5.1 - bump iwn5000fw to 8.83.5.1 - bump iwn6050fw to 41.28.5.1 Added: stable/8/sys/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu - copied unchanged from r220892, head/sys/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu stable/8/sys/contrib/dev/iwn/iwlwifi-5000-8.83.5.1.fw.uu - copied unchanged from r220892, head/sys/contrib/dev/iwn/iwlwifi-5000-8.83.5.1.fw.uu stable/8/sys/contrib/dev/iwn/iwlwifi-6050-41.28.5.1.fw.uu - copied unchanged from r220892, head/sys/contrib/dev/iwn/iwlwifi-6050-41.28.5.1.fw.uu Deleted: stable/8/sys/contrib/dev/iwn/iwlwifi-1000-128.50.3.1.fw.uu stable/8/sys/contrib/dev/iwn/iwlwifi-5000-8.24.2.12.fw.uu stable/8/sys/contrib/dev/iwn/iwlwifi-6050-9.201.4.1.fw.uu Modified: stable/8/sys/conf/files stable/8/sys/modules/iwnfw/iwn1000/Makefile stable/8/sys/modules/iwnfw/iwn5000/Makefile stable/8/sys/modules/iwnfw/iwn6050/Makefile Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/conf/files ============================================================================== --- stable/8/sys/conf/files Sat Jun 18 12:13:28 2011 (r223254) +++ stable/8/sys/conf/files Sat Jun 18 12:27:49 2011 (r223255) @@ -1139,8 +1139,8 @@ iwn1000fw.fwo optional iwn1000fw | iwn no-implicit-rule \ clean "iwn1000fw.fwo" iwn1000.fw optional iwn1000fw | iwnfw \ - dependency ".PHONY" \ - compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-1000-128.50.3.1.fw.uu" \ + dependency "$S/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu" \ no-obj no-implicit-rule \ clean "iwn1000.fw" iwn4965fw.c optional iwn4965fw | iwnfw \ @@ -1167,8 +1167,8 @@ iwn5000fw.fwo optional iwn5000fw | iwnf no-implicit-rule \ clean "iwn5000fw.fwo" iwn5000.fw optional iwn5000fw | iwnfw \ - dependency ".PHONY" \ - compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-5000-8.24.2.12.fw.uu" \ + dependency "$S/contrib/dev/iwn/iwlwifi-5000-8.83.5.1.fw.uu" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-5000-8.83.5.1.fw.uu" \ no-obj no-implicit-rule \ clean "iwn5000.fw" iwn5150fw.c optional iwn5150fw | iwnfw \ @@ -1209,8 +1209,8 @@ iwn6050fw.fwo optional iwn6050fw | iwn no-implicit-rule \ clean "iwn6050fw.fwo" iwn6050.fw optional iwn6050fw | iwnfw \ - dependency ".PHONY" \ - compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6050-9.201.4.1.fw.uu" \ + dependency "$S/contrib/dev/iwn/iwlwifi-6050-41.28.5.1.fw.uu" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6050-41.28.5.1.fw.uu" \ no-obj no-implicit-rule \ clean "iwn6050.fw" dev/ixgb/if_ixgb.c optional ixgb Copied: stable/8/sys/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu (from r220892, head/sys/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/sys/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu Sat Jun 18 12:27:49 2011 (r223255, copy of r220892, head/sys/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu) @@ -0,0 +1,5963 @@ +Copyright (c) 2006-2011, Intel Corporation. +All rights reserved. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel Corporation nor the names of its suppliers + may be used to endorse or promote products derived from this software + without specific prior written permission. +* No reverse engineering, decompilation, or disassembly of this software + is permitted. + +Limited patent license. Intel Corporation grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and +sell ("Utilize") this software, but solely to the extent that any +such patent is necessary to Utilize the software alone, or in +combination with an operating system licensed under an approved Open +Source license as listed by the Open Source Initiative at +http://opensource.org/licenses. The patent license shall not apply to +any other combinations which include this software. No hardware per +se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 +COPYRIGHT OWNER 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. +begin-base64 644 iwlwifi-1000-39.31.5.1.fw.uu +AAAAAElXTAoxMDAwIGZ3IHYzOS4zMS41LjEgYnVpbGQgMzUxMzgKAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQUfJ0KJAAABAAAAAAAAAAEAAAAY7AEAICCADwAAQABpIAAAaSBAAGkg +AABpIEAAICCADwAA6ABpIAAAaSBAAGkgAABpIEAAICCADwAAMAVpIAAAaSBAAGkgAABKIAAASiEA +AEoiAABKIwAASiQAAEolAABKJgAASicAAEogABBKIQAQSiIAEEojABBKJAAQSiUAEEomABBKJwAQ +SiAAIEohACBKIgAgSiMAIEokACBKJQAgSiYAIEonACBKIAAwSiEAMAokgD+AAADAQSycMEAsnDBC +JBw0CiKAP4AA1FkKIwA3jg4AAEomAHBpIEAASiYAcEomAHBKJgBwSiYAcAAWAHCAAHAEQHggIECH +AAAAAAAAAAAAAArIz3GgAMgfDhkYgAvIDxkYgAzIEBkYgA0SAjYAyER4ERkYgA7ILRkYgOB+4cT8 +HMi+/BxIvuHA4cHhwuHD/BwIsfwcSLH8HIix/BzIsfwcCLL8HEiy/ByIsvwcyLL8HAi/aiSAEOHE +aiTAEOHE8cDPcKAA0BsUgM9xgABsBAQggI/PUQThAKEK8i8pAQDPcIAAYAnwIEAAQHja/9HAwcRr +JMAQwcRrJIAQwcSfdAQUCzQEFAo0BBQJNAQUCDQEFAc0BBQGNAQUBTQEFAQ0wcPBwsHBwcDBxEUs +fhAKJkB+wcRrJIAUwcQgIECHCsiHuAoaGDALyJu4CxoYMAzIDBoYMA3Ih7gNGhgwDsiFIMMPDhoY +MOB+4HjxwArIlbgKGhgwC8ibuAsaGDANyIq4jbiQuA0aGDDPcIAAmAoYiIHgC/QNyM9xAAAQCqy4 +DRoYMEINIAAP2GfY6g3gAIohRwHRwOB+8cDPcQMAQA3PcKAAqCAtoM9ygAC4BCCCAWkAoqINIAFI +2M9wgADECCWAI4EggcdxAACIE3oOgAfi8eB4z3CAAMQICQaAB+B48cBmC0ABgODPdoAAbAQG8oHg +BvQB2APwANgLroDhBvKB4Qb0AdgD8ADYCq6A4gbygeIG9AHYA/AA2AyuANjPdaAAyB8YHRiQC46A +4IohEAAO8giOgOAM8s9wAwBADUUdGBAwpQLYGB0YkAPwMaUKjoDgGvIJjoDgFvLPcAEAGOwgHRiQ +z3CAACgAIR0YkM9wgABoBCIdGJAYFQCWRSAAAxgdGJAMjoDgB/IYFQCWhSABBBgdGJCA4xjyANiU +uM92gACoBACmcdgGuAYIIAH82SCGz3AAAEwc9g/gAJ+5GBUAloW4GB0YkOkCQAFpIEAA/vHgePHA +pcFBwELBDBwAMRAcQDHPcYAA/Fo0GcAPMBkADywZwA4oGYAOJBlADs9wgAD8WiAYQAvPcIAA/Foc +GAALz3CAAPxaGBjACs9wgAD8WhQYgArPcIAA/FoQGMAIz3CAAPxaDBiACM9wgAD8WggYQAjPcYAA +gFqAGQAIfBnAB3gZgAd0GUAHcBkAB2wZAAdoGYAGZBlABmAZAAZcGcAFWBmABVQZQAVQGQAFTBnA +BEgZgAREGUAEQBkABO+hzqGtoYyhLBnAAigZgAIkGUACIBkAAhwZwAEYGYABFBlAARAZAAFjoWog +AAPYGQAAaiDAAtQZAABqIIAC0BkAAGogQAHIGQAAaiAAAcQZAABqIMAAwBkAAGoggAC8GQAAaiBA +ALgZAABqIAAAtBkAAGoggAHMGQAAz3GfALj/GIFTJ841UyXENVMmxTWUuBihQMMBwALB17oMFAYw +yXMA3ZYL4AAQFAcwz3CgALQPvKDPcaAAyDsugS4L4AB92LYJQAGSDuAAqXAI2ADZUg7gAJm5NvHx +wLYIYAF72AoL4ADX2c9xgAD8WjQZwA8wGQAPLBnADigZgA4kGUAOz3CAAPxaIBhAC89wgAD8WhwY +AAvPcIAA/FoYGMAKz3CAAPxaFBiACs9wgAD8WhAYwAjPcIAA/FoMGIAIz3CAAPxaCBhACM9xgACA +WoAZAAh8GcAHeBmAB3QZQAdwGQAHbBkAB2gZgAZkGUAGYBkABlwZwAVYGYAFVBlABVAZAAVMGcAE +SBmABEQZQARAGQAE76HOoa2hjKEsGcACKBmAAiQZQAIgGQACHBnAARgZgAEUGUABEBkAAWOhaiAA +A9gZAABqIMAC1BkAAGoggALQGQAAaiBAAcgZAABqIAABxBkAAGogwADAGQAAaiCAALwZAABqIEAA +uBkAAGogAAC0GQAAaiCAAcwZAADrds91oADQG1wVEBDPcAAARBziCSABCifAHzpwz3CAAIAWA4CA +4AbyF4VRIMCAlAcCAQfYwgkgAQq4UyBBBwfY2gzgAAq4z3CgANQLGIBCIAAISCAAAM9zgADcFc9x +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 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:30:33 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A1A21106566C; Sat, 18 Jun 2011 12:30:33 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8DD168FC17; Sat, 18 Jun 2011 12:30:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ICUXgZ041255; Sat, 18 Jun 2011 12:30:33 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ICUXe0041251; Sat, 18 Jun 2011 12:30:33 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181230.p5ICUXe0041251@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 12:30:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223256 - in stable/8/sys: conf contrib/dev/iwn modules/iwnfw modules/iwnfw/iwn6000g2a modules/iwnfw/iwn6000g2b X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:30:33 -0000 Author: bschmidt Date: Sat Jun 18 12:30:33 2011 New Revision: 223256 URL: http://svn.freebsd.org/changeset/base/223256 Log: MFC r220893: - Add firmware images for the 6000 series g2a and g2b adapters. Added: stable/8/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.2.fw.uu - copied unchanged from r220893, head/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.2.fw.uu stable/8/sys/contrib/dev/iwn/iwlwifi-6000g2b-17.168.5.2.fw.uu - copied unchanged from r220893, head/sys/contrib/dev/iwn/iwlwifi-6000g2b-17.168.5.2.fw.uu stable/8/sys/modules/iwnfw/iwn6000g2a/ - copied from r220893, head/sys/modules/iwnfw/iwn6000g2a/ stable/8/sys/modules/iwnfw/iwn6000g2b/ - copied from r220893, head/sys/modules/iwnfw/iwn6000g2b/ Modified: stable/8/sys/conf/files stable/8/sys/modules/iwnfw/Makefile Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/conf/files ============================================================================== --- stable/8/sys/conf/files Sat Jun 18 12:27:49 2011 (r223255) +++ stable/8/sys/conf/files Sat Jun 18 12:30:33 2011 (r223256) @@ -1199,6 +1199,34 @@ iwn6000.fw optional iwn6000fw | iwnfw compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu" \ no-obj no-implicit-rule \ clean "iwn6000.fw" +iwn6000g2afw.c optional iwn6000g2afw | iwnfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000g2a.fw:iwn6000g2afw -miwn6000g2afw -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "iwn6000g2afw.c" +iwn6000g2afw.fwo optional iwn6000g2afw | iwnfw \ + dependency "iwn6000g2a.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn6000g2a.fw" \ + no-implicit-rule \ + clean "iwn6000g2afw.fwo" +iwn6000g2a.fw optional iwn6000g2afw | iwnfw \ + dependency "$S/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.2.fw.uu" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.2.fw.uu" \ + no-obj no-implicit-rule \ + clean "iwn6000g2a.fw" +iwn6000g2bfw.c optional iwn6000g2bfw | iwnfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000g2b.fw:iwn6000g2bfw -miwn6000g2bfw -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "iwn6000g2bfw.c" +iwn6000g2bfw.fwo optional iwn6000g2bfw | iwnfw \ + dependency "iwn6000g2b.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn6000g2b.fw" \ + no-implicit-rule \ + clean "iwn6000g2bfw.fwo" +iwn6000g2b.fw optional iwn6000g2bfw | iwnfw \ + dependency "$S/contrib/dev/iwn/iwlwifi-6000g2b-17.168.5.2.fw.uu" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000g2b-17.168.5.2.fw.uu" \ + no-obj no-implicit-rule \ + clean "iwn6000g2b.fw" iwn6050fw.c optional iwn6050fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6050.fw:iwn6050fw -miwn6050fw -c${.TARGET}" \ no-implicit-rule before-depend local \ Copied: stable/8/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.2.fw.uu (from r220893, head/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.2.fw.uu) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.2.fw.uu Sat Jun 18 12:30:33 2011 (r223256, copy of r220893, head/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.2.fw.uu) @@ -0,0 +1,7833 @@ +Copyright (c) 2006-2011, Intel Corporation. +All rights reserved. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel Corporation nor the names of its suppliers + may be used to endorse or promote products derived from this software + without specific prior written permission. +* No reverse engineering, decompilation, or disassembly of this software + is permitted. + +Limited patent license. Intel Corporation grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and +sell ("Utilize") this software, but solely to the extent that any +such patent is necessary to Utilize the software alone, or in +combination with an operating system licensed under an approved Open +Source license as listed by the Open Source Initiative at +http://opensource.org/licenses. The patent license shall not apply to +any other combinations which include this software. No hardware per +se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 +COPYRIGHT OWNER 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. +begin-base64 644 iwlwifi-6000g2a-17.168.5.2.fw.uu +AAAAAElXTAo2MDAwZzJhIGZ3IHYxNy4xNjguNS4yIGJ1aWxkIDM1OTA1CgAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAgWoEUGMAAABAAAAAAAAAAEAAAAASAIAICCADwAAQABpIAAAaSBAAGkg +AABpIEAAICCADwAA6ABpIAAAaSBAAGkgAABpIEAAICCADwAApPZpIAAAaSBAAGkgAABKIAAASiEA +AEoiAABKIwAASiQAAEolAABKJgAASicAAEogABBKIQAQSiIAEEojABBKJAAQSiUAEEomABBKJwAQ +SiAAIEohACBKIgAgSiMAIEokACBKJQAgSiYAIEonACBKIAAwSiEAMAokgD+BAABAQSycMEAsnDBC +JBw0CiKAP4AAWG8KIwA3xgpAB0omAHBpIEAASiYAcEomAHBKJgBwSiYAcAAWAHCAAFQcQHggIECH +AAAAAAAAAAAAAPwciLb8HEi2/BwItvwcyLX8HIi1/BxItfwcCLX8HMi0/ByItPwcSLT8HAi0/BzI +s/wciLP8HEiz4H7geATcON018OB4BNw03TPw4HgE3DDdMfDgeATcLN0v8OB4BNwo3S3w4HgE3CTd +K/DgeATcIN0p8OB4BNwc3Sfw4HgE3BjdJfDgeATcFN0j8OB4BNwQ3SHw4HgE3AzdH/DgeATcCN0c +8OB4BNwE3RnwNBQaMDAUGTAsFBgwKBQXMCQUFjAgFBUwHBQUMBgUEzAUFBIwEBQRMAwUEDACxwHG +sCRNM7AkHzPgfvHATg/P/89xoACsLxiBz3WgAMgfIN6auBihBdjQpUMdGBAA2DYI4BGNuNGljQfP +//HAHg/P/89xoACsLxiBz3WgAMgfIN6zuLq4GKFk2NClQx0YEADYBgjgEY240aVdB8//4HjgfuB4 +4H7geOB+4HjgfuB4CiJAgADZ7gABAC8mAPBKJkAATgAGAE8AIACKJf8P4HgKIkCAANnOAAEAbAAk +AC8mAPBcAAUAKwg1CEomQAAIcQDYAiG+gOAgxQdCeQHgAiG+gOAgxQdCeesH7/8B4C8tAQBAJUUA +AiZ88QAAIAAAKEAB6CBiAy8gAIAvIUsAAiG+gMAghgHCIYYA4H4RACAASiAAEEogQBAOIkIALyAL +Es4gRYCKJf8PCAAFAC8tAQBAJUUAAiZ88QAAIAAAKEABSiZAAOggIgMvIACALyFLAAIhvoDAIIYB +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 +D/QhwQPhDyBAAAMUgTAD4Q8gQAACFIEwA+EPIEAACRSBMIHhDvQCFIEwCrlPIQIEAxSBMAy5JXoh +wQ65RXkleCDBgeEI9AcUgTAiwga5CLpFeSV44H+jwKPB4cVCwQkUgTBDwoPhQcAA2Ar2gOHI9goU +gTCA4cT2g+HD9gHYBxSCMAYUgzBQcwbyIsEwc8wiQoAD9AHYIcWB5RD0ChSBMCPDcHFK9gsUgjBQ +ccwjqoCE9oDiyiBpAIHgDfSKIckPz3CAAEAHIKCB5f/ZyiEiACGgwcXgf6PA8cCGCc/+z3aAAMQH +ABYFEEwlQII8AAYAz3eAAMxbAIahhgi4IIcFfTB1CfIQuYogSwVeCCAGpXmgpyCGz3CAAIBq8CBA +AEB4gODr86EBz/4KIcAP63LPcAAAhidj220BIABKJIAA4HiiweHFQsFBKAICB3pBKAEER3nPcoAA +kMXGuSpi57oS9AgUAzHPdYAAkMipcVZ5QIFQcAX0QpFwcgbyR4nnuvfzgNgD8AaJwcXgf6LA8cDW +CO/+uHBKJEAAkODKIsoHyiCKDwAAzhvKI4oPAAD8APQAKgDKIcoPQC1DAcdzgAAQxsaLjCYCkADY +DfLPcIAAkMgWII0DoIWgoSaLNngCkACyiHDtAM/+4HjgfuB48cAIyJW4CBoYMAnIm7gJGhgwC8iK +uI24kLgLGhgwz3CAAMgdA4AYiIHgDPQLyM9xAABILqy4CxoYMAYMYAYP2GfYOg/gBYohCADRwOB+ +4HjxwOHFCHU+iM9wgADoE0CAQCUAFAO5NXlZYaIPYA0K2o4P7/+pcHUAz/7gePHA4cXPcoAATDmE +EgAAgBIBAM91oADIHyR4LykBAM9wAwBADUUdGBDwIkAAQHiA2BUdGJA5AM/+8cClwUHAQsEMHAAx +EBxAMc9xgAD8kjQZwA8wGQAPLBnADigZgA4kGUAOz3CAAPySIBhAC89wgAD8khwYAAvPcIAA/JIY +GMAKz3CAAPySFBiACs9wgAD8khAYwAjPcIAA/JIMGIAIz3CAAPySCBhACM9xgACAkoAZAAh8GcAH +eBmAB3QZQAdwGQAHbBkAB2gZgAZkGUAGYBkABlwZwAVYGYAFVBlABVAZAAVMGcAESBmABEQZQARA +GQAE76HOoa2hjKEsGcACKBmAAiQZQAIgGQACHBnAARgZgAEUGUABEBkAAWOhaiAAA9gZAABqIMAC +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 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:32:49 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 17F8E106566B; Sat, 18 Jun 2011 12:32:49 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F1E498FC19; Sat, 18 Jun 2011 12:32:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ICWmvV041369; Sat, 18 Jun 2011 12:32:48 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ICWmbB041367; Sat, 18 Jun 2011 12:32:48 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181232.p5ICWmbB041367@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 12:32:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223257 - stable/8/sys/dev/iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:32:49 -0000 Author: bschmidt Date: Sat Jun 18 12:32:48 2011 New Revision: 223257 URL: http://svn.freebsd.org/changeset/base/223257 Log: MFC r220895,221634: Now that all bits are in for 1030/6230 adapters enable those. While here pull the adapter names from the Linux driver and sort the list by ID. Modified: stable/8/sys/dev/iwn/if_iwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:30:33 2011 (r223256) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jun 18 12:32:48 2011 (r223257) @@ -78,38 +78,33 @@ struct iwn_ident { const char *name; }; -static const struct iwn_ident iwn_ident_table [] = { - { 0x8086, 0x4229, "Intel(R) PRO/Wireless 4965BGN" }, - { 0x8086, 0x422D, "Intel(R) PRO/Wireless 4965BGN" }, - { 0x8086, 0x4230, "Intel(R) PRO/Wireless 4965BGN" }, - { 0x8086, 0x4233, "Intel(R) PRO/Wireless 4965BGN" }, - { 0x8086, 0x4232, "Intel(R) PRO/Wireless 5100" }, - { 0x8086, 0x4237, "Intel(R) PRO/Wireless 5100" }, - { 0x8086, 0x423C, "Intel(R) PRO/Wireless 5150" }, - { 0x8086, 0x423D, "Intel(R) PRO/Wireless 5150" }, - { 0x8086, 0x4235, "Intel(R) PRO/Wireless 5300" }, - { 0x8086, 0x4236, "Intel(R) PRO/Wireless 5300" }, - { 0x8086, 0x423A, "Intel(R) PRO/Wireless 5350" }, - { 0x8086, 0x423B, "Intel(R) PRO/Wireless 5350" }, - { 0x8086, 0x0083, "Intel(R) PRO/Wireless 1000" }, - { 0x8086, 0x0084, "Intel(R) PRO/Wireless 1000" }, - { 0x8086, 0x008D, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x008E, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x4238, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x4239, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x422B, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x422C, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x0087, "Intel(R) PRO/Wireless 6250" }, - { 0x8086, 0x0089, "Intel(R) PRO/Wireless 6250" }, - { 0x8086, 0x0082, "Intel(R) PRO/Wireless 6205a" }, - { 0x8086, 0x0085, "Intel(R) PRO/Wireless 6205a" }, -#ifdef notyet - { 0x8086, 0x008a, "Intel(R) PRO/Wireless 6205b" }, - { 0x8086, 0x008b, "Intel(R) PRO/Wireless 6205b" }, - { 0x8086, 0x008f, "Intel(R) PRO/Wireless 6205b" }, - { 0x8086, 0x0090, "Intel(R) PRO/Wireless 6205b" }, - { 0x8086, 0x0091, "Intel(R) PRO/Wireless 6205b" }, -#endif +static const struct iwn_ident iwn_ident_table[] = { + { 0x8086, 0x0082, "Intel(R) Centrino(R) Advanced-N 6205" }, + { 0x8086, 0x0083, "Intel(R) Centrino(R) Wireless-N 1000" }, + { 0x8086, 0x0084, "Intel(R) Centrino(R) Wireless-N 1000" }, + { 0x8086, 0x0085, "Intel(R) Centrino(R) Advanced-N 6205" }, + { 0x8086, 0x0087, "Intel(R) Centrino(R) Advanced-N + WiMAX 6250" }, + { 0x8086, 0x0089, "Intel(R) Centrino(R) Advanced-N + WiMAX 6250" }, + { 0x8086, 0x008a, "Intel(R) Centrino(R) Wireless-N 1030" }, + { 0x8086, 0x008b, "Intel(R) Centrino(R) Wireless-N 1030" }, + { 0x8086, 0x0090, "Intel(R) Centrino(R) Advanced-N 6230" }, + { 0x8086, 0x0091, "Intel(R) Centrino(R) Advanced-N 6230" }, + { 0x8086, 0x4229, "Intel(R) Wireless WiFi Link 4965" }, + { 0x8086, 0x422b, "Intel(R) Centrino(R) Ultimate-N 6300" }, + { 0x8086, 0x422c, "Intel(R) Centrino(R) Advanced-N 6200" }, + { 0x8086, 0x422d, "Intel(R) Wireless WiFi Link 4965" }, + { 0x8086, 0x4230, "Intel(R) Wireless WiFi Link 4965" }, + { 0x8086, 0x4232, "Intel(R) WiFi Link 5100" }, + { 0x8086, 0x4233, "Intel(R) Wireless WiFi Link 4965" }, + { 0x8086, 0x4235, "Intel(R) Ultimate N WiFi Link 5300" }, + { 0x8086, 0x4236, "Intel(R) Ultimate N WiFi Link 5300" }, + { 0x8086, 0x4237, "Intel(R) WiFi Link 5100" }, + { 0x8086, 0x4238, "Intel(R) Centrino(R) Ultimate-N 6300" }, + { 0x8086, 0x4239, "Intel(R) Centrino(R) Advanced-N 6200" }, + { 0x8086, 0x423a, "Intel(R) WiMAX/WiFi Link 5350" }, + { 0x8086, 0x423b, "Intel(R) WiMAX/WiFi Link 5350" }, + { 0x8086, 0x423c, "Intel(R) WiMAX/WiFi Link 5150" }, + { 0x8086, 0x423d, "Intel(R) WiMAX/WiFi Link 5150" }, { 0, 0, NULL } }; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 12:35:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7A55E106566B; Sat, 18 Jun 2011 12:35:08 +0000 (UTC) (envelope-from bschmidt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 697098FC08; Sat, 18 Jun 2011 12:35:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ICZ88B041492; Sat, 18 Jun 2011 12:35:08 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ICZ8gM041490; Sat, 18 Jun 2011 12:35:08 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201106181235.p5ICZ8gM041490@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 18 Jun 2011 12:35:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223258 - stable/8/share/man/man4 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 12:35:08 -0000 Author: bschmidt Date: Sat Jun 18 12:35:08 2011 New Revision: 223258 URL: http://svn.freebsd.org/changeset/base/223258 Log: MFC r220896: Add ref to the latest firmware additions. Modified: stable/8/share/man/man4/iwnfw.4 Directory Properties: stable/8/share/man/man4/ (props changed) Modified: stable/8/share/man/man4/iwnfw.4 ============================================================================== --- stable/8/share/man/man4/iwnfw.4 Sat Jun 18 12:32:48 2011 (r223257) +++ stable/8/share/man/man4/iwnfw.4 Sat Jun 18 12:35:08 2011 (r223258) @@ -22,7 +22,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 20, 2010 +.Dd April 20, 2011 .Dt IWNFW 4 .Os .Sh NAME @@ -45,6 +45,8 @@ of the following: .Cd "device iwn5000fw" .Cd "device iwn5150fw" .Cd "device iwn6000fw" +.Cd "device iwn6000g2afw" +.Cd "device iwn6000g2bfw" .Cd "device iwn6050fw" .Ed .Pp @@ -57,6 +59,8 @@ iwn1000fw_load="YES" iwn5000fw_load="YES" iwn5150fw_load="YES" iwn6000fw_load="YES" +iwn6000g2afw_load="YES" +iwn6000g2bfw_load="YES" iwn6050fw_load="YES" .Ed .Sh DESCRIPTION From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 13:03:07 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 341271065670; Sat, 18 Jun 2011 13:03:07 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E87958FC0C; Sat, 18 Jun 2011 13:03:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ID36Qr042375; Sat, 18 Jun 2011 13:03:06 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ID36CW042373; Sat, 18 Jun 2011 13:03:06 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106181303.p5ID36CW042373@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 18 Jun 2011 13:03:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223259 - head/share/man/man9 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 13:03:07 -0000 Author: bz Date: Sat Jun 18 13:03:06 2011 New Revision: 223259 URL: http://svn.freebsd.org/changeset/base/223259 Log: Correct a typo in the function name. MFC after: 1 week Modified: head/share/man/man9/device_get_sysctl.9 Modified: head/share/man/man9/device_get_sysctl.9 ============================================================================== --- head/share/man/man9/device_get_sysctl.9 Sat Jun 18 12:35:08 2011 (r223258) +++ head/share/man/man9/device_get_sysctl.9 Sat Jun 18 13:03:06 2011 (r223259) @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 23, 2006 +.Dd June 18, 2011 .Dt DEVICE_GET_SYSCTL 9 .Os .Sh NAME @@ -49,7 +49,7 @@ This node can be accessed with the .Fn device_get_sysctl_tree function. The context for the node can be obtained with the -.Fn device_get_sysctl_ctl +.Fn device_get_sysctl_ctx function. .Sh SEE ALSO .Xr device 9 From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 13:08:46 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7A39B106566C; Sat, 18 Jun 2011 13:08:46 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6A6838FC08; Sat, 18 Jun 2011 13:08:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ID8kSj042564; Sat, 18 Jun 2011 13:08:46 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ID8kCS042562; Sat, 18 Jun 2011 13:08:46 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106181308.p5ID8kCS042562@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 18 Jun 2011 13:08:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223260 - head/share/man/man9 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 13:08:46 -0000 Author: bz Date: Sat Jun 18 13:08:46 2011 New Revision: 223260 URL: http://svn.freebsd.org/changeset/base/223260 Log: Install symlinks for m_tag_* mbuf tag functions to the mbuf_tags.9 man page. MFC after: 1 week Modified: head/share/man/man9/Makefile Modified: head/share/man/man9/Makefile ============================================================================== --- head/share/man/man9/Makefile Sat Jun 18 13:03:06 2011 (r223259) +++ head/share/man/man9/Makefile Sat Jun 18 13:08:46 2011 (r223260) @@ -860,6 +860,22 @@ MLINKS+=\ mbuf.9 mtod.9 \ mbuf.9 M_TRAILINGSPACE.9 \ mbuf.9 M_WRITABLE.9 +MLINKS+=\ + mbuf_tags.9 m_tag_alloc.9 \ + mbuf_tags.9 m_tag_copy.9 \ + mbuf_tags.9 m_tag_copy_chain.9 \ + mbuf_tags.9 m_tag_delete.9 \ + mbuf_tags.9 m_tag_delete_chain.9 \ + mbuf_tags.9 m_tag_delete_nonpersistent.9 \ + mbuf_tags.9 m_tag_find.9 \ + mbuf_tags.9 m_tag_first.9 \ + mbuf_tags.9 m_tag_free.9 \ + mbuf_tags.9 m_tag_get.9 \ + mbuf_tags.9 m_tag_init.9 \ + mbuf_tags.9 m_tag_locate.9 \ + mbuf_tags.9 m_tag_next.9 \ + mbuf_tags.9 m_tag_prepend.9 \ + mbuf_tags.9 m_tag_unlink.9 MLINKS+=MD5.9 MD5Init.9 \ MD5.9 MD5Transform.9 MLINKS+=mdchain.9 md_append_record.9 \ From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 13:54:36 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A6992106566C; Sat, 18 Jun 2011 13:54:36 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7DDE18FC19; Sat, 18 Jun 2011 13:54:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IDsadk044033; Sat, 18 Jun 2011 13:54:36 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IDsaL3044031; Sat, 18 Jun 2011 13:54:36 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106181354.p5IDsaL3044031@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 18 Jun 2011 13:54:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223261 - head/sys/netinet X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 13:54:36 -0000 Author: bz Date: Sat Jun 18 13:54:36 2011 New Revision: 223261 URL: http://svn.freebsd.org/changeset/base/223261 Log: Remove a these days incorrect comment left from before new-arp. MFC after: 1 week Modified: head/sys/netinet/if_ether.c Modified: head/sys/netinet/if_ether.c ============================================================================== --- head/sys/netinet/if_ether.c Sat Jun 18 13:08:46 2011 (r223260) +++ head/sys/netinet/if_ether.c Sat Jun 18 13:54:36 2011 (r223261) @@ -759,7 +759,7 @@ match: } } else LLE_WUNLOCK(la); - } /* end of FIB loop */ + } reply: if (op != ARPOP_REQUEST) goto drop; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 13:56:34 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 076F41065675; Sat, 18 Jun 2011 13:56:34 +0000 (UTC) (envelope-from benl@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E80228FC17; Sat, 18 Jun 2011 13:56:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IDuXAO044203; Sat, 18 Jun 2011 13:56:33 GMT (envelope-from benl@svn.freebsd.org) Received: (from benl@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IDuXhW044171; Sat, 18 Jun 2011 13:56:33 GMT (envelope-from benl@svn.freebsd.org) Message-Id: <201106181356.p5IDuXhW044171@svn.freebsd.org> From: Ben Laurie Date: Sat, 18 Jun 2011 13:56:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223262 - in head: cddl/contrib/opensolaris/lib/libdtrace/common contrib/binutils/bfd contrib/binutils/gas contrib/binutils/gas/config contrib/binutils/ld contrib/binutils/opcodes contr... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 13:56:34 -0000 Author: benl Date: Sat Jun 18 13:56:33 2011 New Revision: 223262 URL: http://svn.freebsd.org/changeset/base/223262 Log: Fix clang warnings. Approved by: philip (mentor) Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c head/contrib/binutils/bfd/coffcode.h head/contrib/binutils/bfd/opncls.c head/contrib/binutils/bfd/peicode.h head/contrib/binutils/gas/config/obj-elf.c head/contrib/binutils/gas/frags.c head/contrib/binutils/gas/subsegs.c head/contrib/binutils/ld/ldexp.c head/contrib/binutils/ld/sysdep.h head/contrib/binutils/opcodes/i386-dis.c head/contrib/gcc/cfg.c head/contrib/gcc/output.h head/contrib/gcc/rtl.h head/contrib/gcc/tree.h head/contrib/gperf/src/gen-perf.cc head/contrib/gperf/src/key-list.cc head/lib/libc/db/btree/bt_split.c head/lib/libprocstat/libprocstat.c head/lib/msun/ld80/e_rem_pio2l.h head/libexec/rtld-elf/rtld.c head/sbin/ipfw/ipfw2.c head/sys/boot/i386/libi386/biosacpi.c head/sys/cddl/contrib/opensolaris/uts/common/sys/ctf_api.h head/sys/sys/diskpc98.h head/sys/sys/param.h head/usr.bin/ldd/sods.c head/usr.bin/xlint/lint1/decl.c head/usr.bin/xlint/lint1/scan.l head/usr.bin/xlint/lint2/msg.c head/usr.bin/xlint/lint2/read.c Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c ============================================================================== --- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c Sat Jun 18 13:56:33 2011 (r223262) @@ -45,6 +45,7 @@ #include #include #include +#include #include @@ -811,15 +812,14 @@ dt_basename(char *str) ulong_t dt_popc(ulong_t x) { -#ifdef _ILP32 +#if defined(_ILP32) x = x - ((x >> 1) & 0x55555555UL); x = (x & 0x33333333UL) + ((x >> 2) & 0x33333333UL); x = (x + (x >> 4)) & 0x0F0F0F0FUL; x = x + (x >> 8); x = x + (x >> 16); return (x & 0x3F); -#endif -#ifdef _LP64 +#elif defined(_LP64) x = x - ((x >> 1) & 0x5555555555555555ULL); x = (x & 0x3333333333333333ULL) + ((x >> 2) & 0x3333333333333333ULL); x = (x + (x >> 4)) & 0x0F0F0F0F0F0F0F0FULL; @@ -827,6 +827,8 @@ dt_popc(ulong_t x) x = x + (x >> 16); x = x + (x >> 32); return (x & 0x7F); +#else +# warning need td_popc() implementation #endif } @@ -958,7 +960,7 @@ dtrace_uaddr2str(dtrace_hdl_t *dtp, pid_ P = dt_proc_grab(dtp, pid, PGRAB_RDONLY | PGRAB_FORCE, 0); if (P == NULL) { - (void) snprintf(c, sizeof (c), "0x%llx", addr); + (void) snprintf(c, sizeof (c), "0x%jx", (uintmax_t)addr); return (dt_string2str(c, str, nbytes)); } @@ -976,10 +978,10 @@ dtrace_uaddr2str(dtrace_hdl_t *dtp, pid_ (void) snprintf(c, sizeof (c), "%s`%s", obj, name); } } else if (Pobjname(P, addr, objname, sizeof (objname)) != 0) { - (void) snprintf(c, sizeof (c), "%s`0x%llx", - dt_basename(objname), addr); + (void) snprintf(c, sizeof (c), "%s`0x%jx", + dt_basename(objname), (uintmax_t)addr); } else { - (void) snprintf(c, sizeof (c), "0x%llx", addr); + (void) snprintf(c, sizeof (c), "0x%jx", (uintmax_t)addr); } dt_proc_unlock(dtp, P); Modified: head/contrib/binutils/bfd/coffcode.h ============================================================================== --- head/contrib/binutils/bfd/coffcode.h Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/binutils/bfd/coffcode.h Sat Jun 18 13:56:33 2011 (r223262) @@ -3240,7 +3240,7 @@ coff_compute_section_file_positions (bfd incremented in coff_set_section_contents. This is right for SVR3.2. */ if (strcmp (current->name, _LIB) == 0) - bfd_set_section_vma (abfd, current, 0); + (void) bfd_set_section_vma (abfd, current, 0); #endif previous = current; Modified: head/contrib/binutils/bfd/opncls.c ============================================================================== --- head/contrib/binutils/bfd/opncls.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/binutils/bfd/opncls.c Sat Jun 18 13:56:33 2011 (r223262) @@ -231,7 +231,7 @@ bfd_fopen (const char *filename, const c then it may have been opened with special flags that make it unsafe to close and reopen the file. */ if (fd == -1) - bfd_set_cacheable (nbfd, TRUE); + (void) bfd_set_cacheable (nbfd, TRUE); return nbfd; } Modified: head/contrib/binutils/bfd/peicode.h ============================================================================== --- head/contrib/binutils/bfd/peicode.h Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/binutils/bfd/peicode.h Sat Jun 18 13:56:33 2011 (r223262) @@ -607,7 +607,7 @@ pe_ILF_make_a_section (pe_ILF_vars * var bfd_set_section_flags (vars->abfd, sec, flags | extra_flags); - bfd_set_section_alignment (vars->abfd, sec, 2); + (void) bfd_set_section_alignment (vars->abfd, sec, 2); /* Check that we will not run out of space. */ BFD_ASSERT (vars->data + size < vars->bim->buffer + vars->bim->size); Modified: head/contrib/binutils/gas/config/obj-elf.c ============================================================================== --- head/contrib/binutils/gas/config/obj-elf.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/binutils/gas/config/obj-elf.c Sat Jun 18 13:56:33 2011 (r223262) @@ -1636,7 +1636,7 @@ obj_elf_init_stab_section (segT seg) /* Force the section to align to a longword boundary. Without this, UnixWare ar crashes. */ - bfd_set_section_alignment (stdoutput, seg, 2); + (void) bfd_set_section_alignment (stdoutput, seg, 2); /* Make space for this first symbol. */ p = frag_more (12); Modified: head/contrib/binutils/gas/frags.c ============================================================================== --- head/contrib/binutils/gas/frags.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/binutils/gas/frags.c Sat Jun 18 13:56:33 2011 (r223262) @@ -146,7 +146,7 @@ frag_new (int old_frags_var_max_size /* This will align the obstack so the next struct we allocate on it will begin at a correct boundary. */ - obstack_finish (&frchain_now->frch_obstack); + (void) obstack_finish (&frchain_now->frch_obstack); frchP = frchain_now; know (frchP); former_last_fragP = frchP->frch_last; Modified: head/contrib/binutils/gas/subsegs.c ============================================================================== --- head/contrib/binutils/gas/subsegs.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/binutils/gas/subsegs.c Sat Jun 18 13:56:33 2011 (r223262) @@ -67,7 +67,7 @@ subseg_change (register segT seg, regist { seginfo = xcalloc (1, sizeof (*seginfo)); seginfo->bfd_section = seg; - bfd_set_section_userdata (stdoutput, seg, seginfo); + (void) bfd_set_section_userdata (stdoutput, seg, seginfo); } } @@ -169,7 +169,7 @@ subseg_get (const char *segname, int for secptr->output_section = secptr; seginfo = xcalloc (1, sizeof (*seginfo)); seginfo->bfd_section = secptr; - bfd_set_section_userdata (stdoutput, secptr, seginfo); + (void) bfd_set_section_userdata (stdoutput, secptr, seginfo); } return secptr; } Modified: head/contrib/binutils/ld/ldexp.c ============================================================================== --- head/contrib/binutils/ld/ldexp.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/binutils/ld/ldexp.c Sat Jun 18 13:56:33 2011 (r223262) @@ -1112,9 +1112,9 @@ exp_get_fill (etree_type *tree, fill_typ fill = xmalloc (4 + sizeof (*fill) - 1); val = expld.result.value; fill->data[0] = (val >> 24) & 0xff; - fill->data[1] = (val >> 16) & 0xff; - fill->data[2] = (val >> 8) & 0xff; - fill->data[3] = (val >> 0) & 0xff; + __PAST_END(fill->data, 1) = (val >> 16) & 0xff; + __PAST_END(fill->data, 2) = (val >> 8) & 0xff; + __PAST_END(fill->data, 3) = (val >> 0) & 0xff; fill->size = 4; } return fill; Modified: head/contrib/binutils/ld/sysdep.h ============================================================================== --- head/contrib/binutils/ld/sysdep.h Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/binutils/ld/sysdep.h Sat Jun 18 13:56:33 2011 (r223262) @@ -54,6 +54,9 @@ extern char *strrchr (); /* for MAXPATHLEN */ #ifdef HAVE_SYS_PARAM_H #include +#ifndef __PAST_END +# define __PAST_END(array, offset) (((typeof(*(array)) *)(array))[offset]) +#endif #endif #ifdef PATH_MAX # define LD_PATHMAX PATH_MAX Modified: head/contrib/binutils/opcodes/i386-dis.c ============================================================================== --- head/contrib/binutils/opcodes/i386-dis.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/binutils/opcodes/i386-dis.c Sat Jun 18 13:56:33 2011 (r223262) @@ -3203,7 +3203,7 @@ ckprefix (void) rex_used = 0; while (1) { - FETCH_DATA (the_info, codep + 1); + (void) FETCH_DATA (the_info, codep + 1); newrex = 0; switch (*codep) { @@ -3606,7 +3606,7 @@ print_insn (bfd_vma pc, disassemble_info insn_codep = codep; sizeflag = priv.orig_sizeflag; - FETCH_DATA (info, codep + 1); + (void) FETCH_DATA (info, codep + 1); two_source_ops = (*codep == 0x62) || (*codep == 0xc8); if (((prefixes & PREFIX_FWAIT) @@ -3628,7 +3628,7 @@ print_insn (bfd_vma pc, disassemble_info if (*codep == 0x0f) { unsigned char threebyte; - FETCH_DATA (info, codep + 2); + (void) FETCH_DATA (info, codep + 2); threebyte = *++codep; dp = &dis386_twobyte[threebyte]; need_modrm = twobyte_has_modrm[*codep]; @@ -3639,7 +3639,7 @@ print_insn (bfd_vma pc, disassemble_info codep++; if (dp->name == NULL && dp->op[0].bytemode == IS_3BYTE_OPCODE) { - FETCH_DATA (info, codep + 2); + (void) FETCH_DATA (info, codep + 2); op = *codep++; switch (threebyte) { @@ -3724,7 +3724,7 @@ print_insn (bfd_vma pc, disassemble_info } else if (need_modrm) { - FETCH_DATA (info, codep + 1); + (void) FETCH_DATA (info, codep + 1); modrm.mod = (*codep >> 6) & 3; modrm.reg = (*codep >> 3) & 7; modrm.rm = *codep & 7; @@ -4890,7 +4890,7 @@ OP_E (int bytemode, int sizeflag) if (base == 4) { havesib = 1; - FETCH_DATA (the_info, codep + 1); + (void) FETCH_DATA (the_info, codep + 1); index = (*codep >> 3) & 7; if (address_mode == mode_64bit || index != 0x4) /* When INDEX == 0x4 in 32 bit mode, SCALE is ignored. */ @@ -5147,7 +5147,7 @@ get64 (void) unsigned int a; unsigned int b; - FETCH_DATA (the_info, codep + 8); + (void) FETCH_DATA (the_info, codep + 8); a = *codep++ & 0xff; a |= (*codep++ & 0xff) << 8; a |= (*codep++ & 0xff) << 16; @@ -5169,7 +5169,7 @@ get32 (void) { bfd_signed_vma x = 0; - FETCH_DATA (the_info, codep + 4); + (void) FETCH_DATA (the_info, codep + 4); x = *codep++ & (bfd_signed_vma) 0xff; x |= (*codep++ & (bfd_signed_vma) 0xff) << 8; x |= (*codep++ & (bfd_signed_vma) 0xff) << 16; @@ -5182,7 +5182,7 @@ get32s (void) { bfd_signed_vma x = 0; - FETCH_DATA (the_info, codep + 4); + (void) FETCH_DATA (the_info, codep + 4); x = *codep++ & (bfd_signed_vma) 0xff; x |= (*codep++ & (bfd_signed_vma) 0xff) << 8; x |= (*codep++ & (bfd_signed_vma) 0xff) << 16; @@ -5198,7 +5198,7 @@ get16 (void) { int x = 0; - FETCH_DATA (the_info, codep + 2); + (void) FETCH_DATA (the_info, codep + 2); x = *codep++ & 0xff; x |= (*codep++ & 0xff) << 8; return x; @@ -6018,7 +6018,7 @@ OP_3DNowSuffix (int bytemode ATTRIBUTE_U { const char *mnemonic; - FETCH_DATA (the_info, codep + 1); + (void) FETCH_DATA (the_info, codep + 1); /* AMD 3DNow! instructions are specified by an opcode suffix in the place where an 8-bit immediate would normally go. ie. the last byte of the instruction. */ @@ -6054,7 +6054,7 @@ OP_SIMD_Suffix (int bytemode ATTRIBUTE_U { unsigned int cmp_type; - FETCH_DATA (the_info, codep + 1); + (void) FETCH_DATA (the_info, codep + 1); obufp = obuf + strlen (obuf); cmp_type = *codep++ & 0xff; if (cmp_type < 8) Modified: head/contrib/gcc/cfg.c ============================================================================== --- head/contrib/gcc/cfg.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/gcc/cfg.c Sat Jun 18 13:56:33 2011 (r223262) @@ -830,7 +830,7 @@ dump_cfg_bb_info (FILE *file, basic_bloc else fprintf (file, ", "); first = false; - fprintf (file, bb_bitnames[i]); + fputs (bb_bitnames[i], file); } if (!first) fprintf (file, ")"); Modified: head/contrib/gcc/output.h ============================================================================== --- head/contrib/gcc/output.h Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/gcc/output.h Sat Jun 18 13:56:33 2011 (r223262) @@ -109,13 +109,14 @@ extern void output_addr_const (FILE *, r /* Output a string of assembler code, substituting numbers, strings and fixed syntactic prefixes. */ -#if GCC_VERSION >= 3004 +#if GCC_VERSION >= 3004 && !defined(__clang__) #define ATTRIBUTE_ASM_FPRINTF(m, n) __attribute__ ((__format__ (__asm_fprintf__, m, n))) ATTRIBUTE_NONNULL(m) /* This is a magic identifier which allows GCC to figure out the type of HOST_WIDE_INT for %wd specifier checks. You must issue this typedef before using the __asm_fprintf__ format attribute. */ typedef HOST_WIDE_INT __gcc_host_wide_int__; #else +/* FIXME(benl): what about %wd? */ #define ATTRIBUTE_ASM_FPRINTF(m, n) ATTRIBUTE_NONNULL(m) #endif Modified: head/contrib/gcc/rtl.h ============================================================================== --- head/contrib/gcc/rtl.h Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/gcc/rtl.h Sat Jun 18 13:56:33 2011 (r223262) @@ -22,6 +22,11 @@ Software Foundation, 51 Franklin Street, #ifndef GCC_RTL_H #define GCC_RTL_H +#include +#ifndef __PAST_END +# define __PAST_END(array, offset) (((typeof(*(array)) *)(array))[offset]) +#endif + #include "statistics.h" #include "machmode.h" #include "input.h" @@ -565,12 +570,12 @@ extern void rtvec_check_failed_bounds (r #define RTL_CHECK1(RTX, N, C1) ((RTX)->u.fld[N]) #define RTL_CHECK2(RTX, N, C1, C2) ((RTX)->u.fld[N]) -#define RTL_CHECKC1(RTX, N, C) ((RTX)->u.fld[N]) +#define RTL_CHECKC1(RTX, N, C) __PAST_END((RTX)->u.fld, N) #define RTL_CHECKC2(RTX, N, C1, C2) ((RTX)->u.fld[N]) -#define RTVEC_ELT(RTVEC, I) ((RTVEC)->elem[I]) +#define RTVEC_ELT(RTVEC, I) __PAST_END((RTVEC)->elem, I) #define XWINT(RTX, N) ((RTX)->u.hwint[N]) #define XCWINT(RTX, N, C) ((RTX)->u.hwint[N]) -#define XCMWINT(RTX, N, C, M) ((RTX)->u.hwint[N]) +#define XCMWINT(RTX, N, C, M) __PAST_END((RTX)->u.hwint, N) #define XCNMWINT(RTX, N, C, M) ((RTX)->u.hwint[N]) #define XCNMPRV(RTX, C, M) (&(RTX)->u.rv) #define BLOCK_SYMBOL_CHECK(RTX) (&(RTX)->u.block_sym) Modified: head/contrib/gcc/tree.h ============================================================================== --- head/contrib/gcc/tree.h Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/gcc/tree.h Sat Jun 18 13:56:33 2011 (r223262) @@ -22,6 +22,11 @@ Software Foundation, 51 Franklin Street, #ifndef GCC_TREE_H #define GCC_TREE_H +#include +#ifndef __PAST_END +# define __PAST_END(array, offset) (((typeof(*(array)) *)(array))[offset]) +#endif + #include "hashtab.h" #include "machmode.h" #include "input.h" @@ -830,12 +835,12 @@ extern void omp_clause_range_check_faile #define TREE_RANGE_CHECK(T, CODE1, CODE2) (T) #define EXPR_CHECK(T) (T) #define NON_TYPE_CHECK(T) (T) -#define TREE_VEC_ELT_CHECK(T, I) ((T)->vec.a[I]) -#define TREE_OPERAND_CHECK(T, I) ((T)->exp.operands[I]) -#define TREE_OPERAND_CHECK_CODE(T, CODE, I) ((T)->exp.operands[I]) +#define TREE_VEC_ELT_CHECK(T, I) __PAST_END((T)->vec.a, I) +#define TREE_OPERAND_CHECK(T, I) __PAST_END((T)->exp.operands, I) +#define TREE_OPERAND_CHECK_CODE(T, CODE, I) __PAST_END((T)->exp.operands, I) #define TREE_RTL_OPERAND_CHECK(T, CODE, I) (*(rtx *) &((T)->exp.operands[I])) #define PHI_NODE_ELT_CHECK(T, i) ((T)->phi.a[i]) -#define OMP_CLAUSE_ELT_CHECK(T, i) ((T)->omp_clause.ops[i]) +#define OMP_CLAUSE_ELT_CHECK(T, i) __PAST_END((T)->omp_clause.ops, i) #define OMP_CLAUSE_RANGE_CHECK(T, CODE1, CODE2) (T) #define OMP_CLAUSE_SUBCODE_CHECK(T, CODE) (T) Modified: head/contrib/gperf/src/gen-perf.cc ============================================================================== --- head/contrib/gperf/src/gen-perf.cc Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/gperf/src/gen-perf.cc Sat Jun 18 13:56:33 2011 (r223262) @@ -246,7 +246,7 @@ Gen_Perf::change (List_Node *prior, List { if (option[DEBUG]) { - fprintf (stderr, " by changing asso_value['%c'] (char #%zd) to %d\n", + fprintf (stderr, " by changing asso_value['%c'] (char #%td) to %d\n", *p, p - union_set + 1, asso_values[(unsigned char)(*p)]); fflush (stderr); } Modified: head/contrib/gperf/src/key-list.cc ============================================================================== --- head/contrib/gperf/src/key-list.cc Sat Jun 18 13:54:36 2011 (r223261) +++ head/contrib/gperf/src/key-list.cc Sat Jun 18 13:56:33 2011 (r223262) @@ -1441,7 +1441,7 @@ Key_List::output_lookup_array (void) if (option[DEBUG]) fprintf (stderr, - "dup_ptr[%zd]: hash_value = %d, index = %d, count = %d\n", + "dup_ptr[%td]: hash_value = %d, index = %d, count = %d\n", dup_ptr - duplicates, dup_ptr->hash_value, dup_ptr->index, dup_ptr->count); Modified: head/lib/libc/db/btree/bt_split.c ============================================================================== --- head/lib/libc/db/btree/bt_split.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/lib/libc/db/btree/bt_split.c Sat Jun 18 13:56:33 2011 (r223262) @@ -37,6 +37,7 @@ static char sccsid[] = "@(#)bt_split.c 8 __FBSDID("$FreeBSD$"); #include +#include #include #include @@ -482,7 +483,7 @@ bt_rroot(BTREE *t, PAGE *h, PAGE *l, PAG WR_RINTERNAL(dest, l->flags & P_RLEAF ? NEXTINDEX(l) : rec_total(l), l->pgno); - h->linp[1] = h->upper -= NRINTERNAL; + __PAST_END(h->linp, 1) = h->upper -= NRINTERNAL; dest = (char *)h + h->upper; WR_RINTERNAL(dest, r->flags & P_RLEAF ? NEXTINDEX(r) : rec_total(r), r->pgno); @@ -534,7 +535,7 @@ bt_broot(BTREE *t, PAGE *h, PAGE *l, PAG case P_BLEAF: bl = GETBLEAF(r, 0); nbytes = NBINTERNAL(bl->ksize); - h->linp[1] = h->upper -= nbytes; + __PAST_END(h->linp, 1) = h->upper -= nbytes; dest = (char *)h + h->upper; WR_BINTERNAL(dest, bl->ksize, r->pgno, 0); memmove(dest, bl->bytes, bl->ksize); @@ -550,7 +551,7 @@ bt_broot(BTREE *t, PAGE *h, PAGE *l, PAG case P_BINTERNAL: bi = GETBINTERNAL(r, 0); nbytes = NBINTERNAL(bi->ksize); - h->linp[1] = h->upper -= nbytes; + __PAST_END(h->linp, 1) = h->upper -= nbytes; dest = (char *)h + h->upper; memmove(dest, bi, nbytes); ((BINTERNAL *)dest)->pgno = r->pgno; Modified: head/lib/libprocstat/libprocstat.c ============================================================================== --- head/lib/libprocstat/libprocstat.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/lib/libprocstat/libprocstat.c Sat Jun 18 13:56:33 2011 (r223262) @@ -1283,7 +1283,7 @@ vntype2psfsttype(int type) static char * getmnton(kvm_t *kd, struct mount *m) { - static struct mount mnt; + struct mount mnt; static struct mtab { struct mtab *next; struct mount *m; @@ -1302,7 +1302,7 @@ getmnton(kvm_t *kd, struct mount *m) err(1, NULL); mt->m = m; bcopy(&mnt.mnt_stat.f_mntonname[0], &mt->mntonname[0], MNAMELEN); - mnt.mnt_stat.f_mntonname[MNAMELEN] = '\0'; + mt->mntonname[MNAMELEN] = '\0'; mt->next = mhead; mhead = mt; return (mt->mntonname); Modified: head/lib/msun/ld80/e_rem_pio2l.h ============================================================================== --- head/lib/msun/ld80/e_rem_pio2l.h Sat Jun 18 13:54:36 2011 (r223261) +++ head/lib/msun/ld80/e_rem_pio2l.h Sat Jun 18 13:56:33 2011 (r223262) @@ -82,7 +82,7 @@ __ieee754_rem_pio2l(long double x, long u.e = x; expsign = u.xbits.expsign; ex = expsign & 0x7fff; - if (ex < BIAS + 25 || ex == BIAS + 25 && u.bits.manh < 0xc90fdaa2) { + if (ex < BIAS + 25 || (ex == BIAS + 25 && u.bits.manh < 0xc90fdaa2)) { /* |x| ~< 2^25*(pi/2), medium size */ /* Use a specialized rint() to get fn. Assume round-to-nearest. */ fn = x*invpio2+0x1.8p63; Modified: head/libexec/rtld-elf/rtld.c ============================================================================== --- head/libexec/rtld-elf/rtld.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/libexec/rtld-elf/rtld.c Sat Jun 18 13:56:33 2011 (r223262) @@ -928,8 +928,8 @@ digest_dynamic1(Obj_Entry *obj, int earl obj->textrel = true; if (dynp->d_un.d_val & DF_BIND_NOW) obj->bind_now = true; - if (dynp->d_un.d_val & DF_STATIC_TLS) - ; + /*if (dynp->d_un.d_val & DF_STATIC_TLS) + ;*/ break; #ifdef __mips__ case DT_MIPS_LOCAL_GOTNO: @@ -958,8 +958,8 @@ digest_dynamic1(Obj_Entry *obj, int earl obj->z_noopen = true; if ((dynp->d_un.d_val & DF_1_ORIGIN) && trust) obj->z_origin = true; - if (dynp->d_un.d_val & DF_1_GLOBAL) - /* XXX */; + /*if (dynp->d_un.d_val & DF_1_GLOBAL) + XXX ;*/ if (dynp->d_un.d_val & DF_1_BIND_NOW) obj->bind_now = true; if (dynp->d_un.d_val & DF_1_NODELETE) Modified: head/sbin/ipfw/ipfw2.c ============================================================================== --- head/sbin/ipfw/ipfw2.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/sbin/ipfw/ipfw2.c Sat Jun 18 13:56:33 2011 (r223262) @@ -21,6 +21,7 @@ */ #include +#include #include #include #include @@ -3567,7 +3568,7 @@ read_options: } if (lookup_key[j] <= 0) errx(EX_USAGE, "format: cannot lookup on %s", *av); - c->d[1] = j; // i converted to option + __PAST_END(c->d, 1) = j; // i converted to option av++; cmd->arg1 = strtoul(*av, &p, 0); if (p && *p) Modified: head/sys/boot/i386/libi386/biosacpi.c ============================================================================== --- head/sys/boot/i386/libi386/biosacpi.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/sys/boot/i386/libi386/biosacpi.c Sat Jun 18 13:56:33 2011 (r223262) @@ -61,7 +61,7 @@ biosacpi_detect(void) return; /* export values from the RSDP */ - sprintf(buf, "%p", VTOP(rsdp)); + sprintf(buf, "%u", VTOP(rsdp)); setenv("hint.acpi.0.rsdp", buf, 1); revision = rsdp->Revision; if (revision == 0) Modified: head/sys/cddl/contrib/opensolaris/uts/common/sys/ctf_api.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/sys/ctf_api.h Sat Jun 18 13:54:36 2011 (r223261) +++ head/sys/cddl/contrib/opensolaris/uts/common/sys/ctf_api.h Sat Jun 18 13:56:33 2011 (r223262) @@ -65,7 +65,7 @@ typedef long ctf_id_t; * filling in ctf_sect_t structures and passing them to ctf_bufopen(): */ typedef struct ctf_sect { - char *cts_name; /* section name (if any) */ + const char *cts_name; /* section name (if any) */ ulong_t cts_type; /* section type (ELF SHT_... value) */ ulong_t cts_flags; /* section flags (ELF SHF_... value) */ #if defined(sun) Modified: head/sys/sys/diskpc98.h ============================================================================== --- head/sys/sys/diskpc98.h Sat Jun 18 13:54:36 2011 (r223261) +++ head/sys/sys/diskpc98.h Sat Jun 18 13:56:33 2011 (r223262) @@ -36,8 +36,11 @@ #include #define DOSBBSECTOR 0 /* DOS boot block relative sector number */ +#undef DOSPARTOFF #define DOSPARTOFF 0 +#undef DOSPARTSIZE #define DOSPARTSIZE 32 +#undef NDOSPART #define NDOSPART 16 #define DOSMAGICOFFSET 510 #define DOSMAGIC 0xAA55 @@ -52,6 +55,7 @@ #define DOSMID_386BSD (PC98_MID_386BSD | PC98_MID_BOOTABLE) #define DOSSID_386BSD (PC98_SID_386BSD | PC98_SID_ACTIVE) +#undef DOSPTYP_386BSD #define DOSPTYP_386BSD (DOSSID_386BSD << 8 | DOSMID_386BSD) struct pc98_partition { Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Sat Jun 18 13:54:36 2011 (r223261) +++ head/sys/sys/param.h Sat Jun 18 13:56:33 2011 (r223262) @@ -319,4 +319,10 @@ __END_DECLS #define member2struct(s, m, x) \ ((struct s *)(void *)((char *)(x) - offsetof(struct s, m))) +/* + * Access a variable length array that has been declared as a fixed + * length array. + */ +#define __PAST_END(array, offset) (((typeof(*(array)) *)(array))[offset]) + #endif /* _SYS_PARAM_H_ */ Modified: head/usr.bin/ldd/sods.c ============================================================================== --- head/usr.bin/ldd/sods.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/usr.bin/ldd/sods.c Sat Jun 18 13:56:33 2011 (r223262) @@ -142,6 +142,24 @@ main(int argc, char *argv[]) } #endif +static inline const void *align_struct(const void *expr) +{ + assert(!(((int)expr) & 3)); + return expr; +} + +static inline const void *align_long(const void *expr) +{ + assert(!(((int)expr) & 3)); + return expr; +} + +static inline const void *align_short(const void *expr) +{ + assert(!(((int)expr) & 1)); + return expr; +} + #ifdef STANDALONE static #endif @@ -182,7 +200,7 @@ dump_file(const char *fname) file_base = (const char *) objbase; /* Makes address arithmetic easier */ - if (IS_ELF(*(const Elf32_Ehdr*) file_base)) { + if (IS_ELF(*(const Elf32_Ehdr*) align_struct(file_base))) { warnx("%s: this is an ELF program; use objdump to examine", fname); ++error_count; munmap(objbase, sb.st_size); @@ -190,7 +208,7 @@ dump_file(const char *fname) return; } - ex = (const struct exec *) file_base; + ex = (const struct exec *) align_struct(file_base); printf("%s: a_midmag = 0x%lx\n", fname, (long)ex->a_midmag); printf(" magic = 0x%lx = 0%lo, netmagic = 0x%lx = 0%lo\n", @@ -214,8 +232,9 @@ dump_file(const char *fname) text_base = file_base + N_TXTOFF(*ex); data_base = file_base + N_DATOFF(*ex); - rel_base = (const struct relocation_info *) (file_base + N_RELOFF(*ex)); - sym_base = (const struct nlist *) (file_base + N_SYMOFF(*ex)); + rel_base = (const struct relocation_info *) + align_struct(file_base + N_RELOFF(*ex)); + sym_base = (const struct nlist *) align_struct(file_base + N_SYMOFF(*ex)); str_base = file_base + N_STROFF(*ex); rel_count = (ex->a_trsize + ex->a_drsize) / sizeof rel_base[0]; @@ -276,19 +295,20 @@ dump_file(const char *fname) printf(" Object file, origin = %lx\n", origin); if (N_GETFLAG(*ex) & EX_DYNAMIC) { - dyn = (const struct _dynamic *) data_base; + dyn = (const struct _dynamic *) align_struct(data_base); printf(" Dynamic version = %d\n", dyn->d_version); sdt = (const struct section_dispatch_table *) - (text_addr + (unsigned long) dyn->d_un.d_sdt); + align_struct(text_addr + (unsigned long) dyn->d_un.d_sdt); - rtrel_base = - (const struct relocation_info *) (text_addr + sdt->sdt_rel); + rtrel_base = (const struct relocation_info *) + align_struct(text_addr + sdt->sdt_rel); rtrel_count = (sdt->sdt_hash - sdt->sdt_rel) / sizeof rtrel_base[0]; assert(rtrel_count * sizeof rtrel_base[0] == (size_t)(sdt->sdt_hash - sdt->sdt_rel)); - rtsym_base = (const struct nzlist *) (text_addr + sdt->sdt_nzlist); + rtsym_base = (const struct nzlist *) + align_struct(text_addr + sdt->sdt_nzlist); rtsym_count = (sdt->sdt_strings - sdt->sdt_nzlist) / sizeof rtsym_base[0]; assert(rtsym_count * sizeof rtsym_base[0] == @@ -352,11 +372,13 @@ dump_rels(const char *label, const struc break; case 2: snprintf(contents, sizeof contents, " [%04x]", - *(unsigned const short *)(text_addr + r->r_address)); + *(unsigned const short *) + align_short(text_addr + r->r_address)); break; case 4: snprintf(contents, sizeof contents, "[%08lx]", - *(unsigned const long *)(text_addr + r->r_address)); + *(unsigned const long *) + align_long(text_addr + r->r_address)); break; } } else @@ -429,7 +451,7 @@ dump_sods(void) sod_offset = sdt->sdt_sods; printf(" Shared object dependencies:\n"); while (sod_offset != 0) { - const struct sod *sodp = (const struct sod *) (text_addr + sod_offset); + const struct sod *sodp = (const struct sod *) align_struct((text_addr + sod_offset)); const char *name = (const char *) (text_addr + sodp->sod_name); if (sodp->sod_library) Modified: head/usr.bin/xlint/lint1/decl.c ============================================================================== --- head/usr.bin/xlint/lint1/decl.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/usr.bin/xlint/lint1/decl.c Sat Jun 18 13:56:33 2011 (r223262) @@ -415,9 +415,6 @@ tdeferr(type_t *td, tspec_t t) case UINT: case INT: break; - - case NTSPEC: /* this value unused */ - break; } /* Anything other is not accepted. */ Modified: head/usr.bin/xlint/lint1/scan.l ============================================================================== --- head/usr.bin/xlint/lint1/scan.l Sat Jun 18 13:54:36 2011 (r223261) +++ head/usr.bin/xlint/lint1/scan.l Sat Jun 18 13:56:33 2011 (r223262) @@ -580,9 +580,6 @@ icon(int base) case CHAR: case UNSIGN: break; - - case NTSPEC: /* this value unused */ - break; } if (typ != QUAD && typ != UQUAD) { Modified: head/usr.bin/xlint/lint2/msg.c ============================================================================== --- head/usr.bin/xlint/lint2/msg.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/usr.bin/xlint/lint2/msg.c Sat Jun 18 13:56:33 2011 (r223262) @@ -32,6 +32,7 @@ */ #include +__FBSDID("$FreeBSD$"); #if defined(__RCSID) && !defined(lint) __RCSID("$NetBSD: msg.c,v 1.6 2002/01/21 19:49:52 tv Exp $"); #endif @@ -127,7 +128,7 @@ mkpos(pos_t *posp) if (len > blen) buf = xrealloc(buf, blen = len); if (line != 0) { - (void)sprintf(buf, "%s%s(%hu)", + (void)sprintf(buf, "%s%s(%d)", fn, qm ? "?" : "", line); } else { (void)sprintf(buf, "%s", fn); Modified: head/usr.bin/xlint/lint2/read.c ============================================================================== --- head/usr.bin/xlint/lint2/read.c Sat Jun 18 13:54:36 2011 (r223261) +++ head/usr.bin/xlint/lint2/read.c Sat Jun 18 13:56:33 2011 (r223262) @@ -696,8 +696,6 @@ inptype(const char *cp, const char **epp case SIGNED: case NOTSPEC: break; - case NTSPEC: - abort(); } *epp = cp; @@ -901,8 +899,6 @@ gettlen(const char *cp, const char **epp case UQUAD: case LONG: break; - case NTSPEC: - abort(); } *epp = cp; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 14:36:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8F173106566C; Sat, 18 Jun 2011 14:36:09 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail07.syd.optusnet.com.au (mail07.syd.optusnet.com.au [211.29.132.188]) by mx1.freebsd.org (Postfix) with ESMTP id 1177E8FC08; Sat, 18 Jun 2011 14:36:08 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail07.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p5IEa6Yf008814 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 19 Jun 2011 00:36:07 +1000 Date: Sun, 19 Jun 2011 00:36:06 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Ben Laurie In-Reply-To: <201106181356.p5IDuXhW044171@svn.freebsd.org> Message-ID: <20110619000207.V7011@besplex.bde.org> References: <201106181356.p5IDuXhW044171@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223262 - in head: cddl/contrib/opensolaris/lib/libdtrace/common contrib/binutils/bfd contrib/binutils/gas contrib/binutils/gas/config contrib/binutils/ld contrib/binutils/opcodes contr... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 14:36:09 -0000 On Sat, 18 Jun 2011, Ben Laurie wrote: > Author: benl > Date: Sat Jun 18 13:56:33 2011 > New Revision: 223262 > URL: http://svn.freebsd.org/changeset/base/223262 > > Log: > Fix clang warnings. > > Approved by: philip (mentor) Most of these seem to be bugs in clang, so source code can only be broken by avoiding the warnings there. In particular: - casting to void is a large style bug in gnu code. Warnings in vendor code shouldn't be fixed anyway. - it is an old gcc bug to warn about use of the extremely unsurprising precedence of AND operators over OR operators. This bug is not much of a problem since it is controlled by -Wparentheses. -Wparentheses is impiled by -Wall, which is enables at WARNS >= 2. But it is a new clang bug to make this warning unconditional (it can be turned off or configured off, but this is not supported in FreeBSD or documented in clang.1). So it is now fatal at WARNS >=1, since WARNS >=1 turns warnings into errors. Bruce From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 16:19:53 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 24742106564A; Sat, 18 Jun 2011 16:19:53 +0000 (UTC) (envelope-from minimarmot@gmail.com) Received: from mail-gw0-f54.google.com (mail-gw0-f54.google.com [74.125.83.54]) by mx1.freebsd.org (Postfix) with ESMTP id 96F428FC0C; Sat, 18 Jun 2011 16:19:52 +0000 (UTC) Received: by gwb15 with SMTP id 15so262336gwb.13 for ; Sat, 18 Jun 2011 09:19:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=qSc68n57df8mGfbHUY3SraDr01FkQAUaWHGBnHd9BTk=; b=M9pts1orPLdm2PXIt6CHQ+WflZWdtrzZCoAU8lsemKeX/27M43FPqXpDaPVACiVi/x dAU9QLqfCUgakco5HGLXOTITtG5s72Li/7HCGPn8fk73BXyjTsQaYuiXOSV3LCvIkuru aFvldnqzSxOH2a58pkBpFIaXxUJciazW3PRCU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=SXOv1JI/yaZEtu6vEChTWF3uHo4lxSLFua8sL1A0pZcmqrxar6+cEgWCcw+x6CjxHt h9dLLAKM0wVjUJ2C6lcsptoNFPJwKUcxKMkhcL9vqlKMuTjIO5q2wnmMDEolEDM427wX dFE4rFPYrTdiGf1sWG8a0K1jkZnKaLlebJYLE= MIME-Version: 1.0 Received: by 10.236.143.2 with SMTP id k2mr1383087yhj.500.1308412494722; Sat, 18 Jun 2011 08:54:54 -0700 (PDT) Received: by 10.236.108.1 with HTTP; Sat, 18 Jun 2011 08:54:54 -0700 (PDT) In-Reply-To: <201106181356.p5IDuXhW044171@svn.freebsd.org> References: <201106181356.p5IDuXhW044171@svn.freebsd.org> Date: Sat, 18 Jun 2011 11:54:54 -0400 Message-ID: From: Ben Kaduk To: Ben Laurie Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223262 - in head: cddl/contrib/opensolaris/lib/libdtrace/common contrib/binutils/bfd contrib/binutils/gas contrib/binutils/gas/config contrib/binutils/ld contrib/binutils/opcodes contr... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 16:19:53 -0000 On Sat, Jun 18, 2011 at 9:56 AM, Ben Laurie wrote: > Author: benl > Date: Sat Jun 18 13:56:33 2011 > New Revision: 223262 > URL: http://svn.freebsd.org/changeset/base/223262 > > Log: > =A0Fix clang warnings. > > =A0Approved by: =A0philip (mentor) > > > Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c =A0 =A0 = =A0 =A0Sat Jun 18 13:54:36 2011 =A0 =A0 =A0 =A0(r223261) > +++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c =A0 =A0 = =A0 =A0Sat Jun 18 13:56:33 2011 =A0 =A0 =A0 =A0(r223262) > @@ -45,6 +45,7 @@ > =A0#include > =A0#include > =A0#include > +#include > > =A0#include > > @@ -811,15 +812,14 @@ dt_basename(char *str) > =A0ulong_t > =A0dt_popc(ulong_t x) > =A0{ > -#ifdef _ILP32 > +#if defined(_ILP32) > =A0 =A0 =A0 =A0x =3D x - ((x >> 1) & 0x55555555UL); > =A0 =A0 =A0 =A0x =3D (x & 0x33333333UL) + ((x >> 2) & 0x33333333UL); > =A0 =A0 =A0 =A0x =3D (x + (x >> 4)) & 0x0F0F0F0FUL; > =A0 =A0 =A0 =A0x =3D x + (x >> 8); > =A0 =A0 =A0 =A0x =3D x + (x >> 16); > =A0 =A0 =A0 =A0return (x & 0x3F); > -#endif > -#ifdef _LP64 > +#elif defined(_LP64) > =A0 =A0 =A0 =A0x =3D x - ((x >> 1) & 0x5555555555555555ULL); > =A0 =A0 =A0 =A0x =3D (x & 0x3333333333333333ULL) + ((x >> 2) & 0x33333333= 33333333ULL); > =A0 =A0 =A0 =A0x =3D (x + (x >> 4)) & 0x0F0F0F0F0F0F0F0FULL; > @@ -827,6 +827,8 @@ dt_popc(ulong_t x) > =A0 =A0 =A0 =A0x =3D x + (x >> 16); > =A0 =A0 =A0 =A0x =3D x + (x >> 32); > =A0 =A0 =A0 =A0return (x & 0x7F); > +#else > +# warning need td_popc() implementation We seem to still be in dt_popc(), here. -Ben Kaduk > =A0#endif > =A0} > From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 16:47:02 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: by hub.freebsd.org (Postfix, from userid 1033) id ED8131065670; Sat, 18 Jun 2011 16:47:02 +0000 (UTC) Date: Sat, 18 Jun 2011 16:47:02 +0000 From: Alexey Dokuchaev To: Peter Jeremy Message-ID: <20110618164702.GA82496@FreeBSD.org> References: <201106152338.p5FNcFlN003175@svn.freebsd.org> <20110617231757.GA40286@server.vk2pj.dyndns.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline In-Reply-To: <20110617231757.GA40286@server.vk2pj.dyndns.org> User-Agent: Mutt/1.4.2.1i Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Nathan Whitehorn Subject: Re: svn commit: r223129 - head/release X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 16:47:03 -0000 On Sat, Jun 18, 2011 at 09:17:57AM +1000, Peter Jeremy wrote: > On 2011-Jun-15 23:38:15 +0000, Nathan Whitehorn wrote: > >Log: > > Do not install the rescue tools onto the install CD. Since it is read > > only, they are very unlikely to be needed and take up a great deal of > > space. > > If I've correctly understood this change, I'm not sure this is a > positive move. > > Based on a quick test, removing /rescue saves about 4MB (in reality, > the saving should be less because /rescue removes the need for > /stand). OTOH, it renders the install CD useless as a recovery > "fixit" disk - whilst the CD is unlikely to need recovery itself, it > was useful for recovering hard disks I think we would be far better off with an image which would provide a release (without packages) + full fixit functionality. Existing set of images is quite suboptimal: install image cannot be used as fixit disc, fixit disc cannot be used for installation. People who want packages will probably just burn DVD image; CD users more likely to go with ports. Having single installation image with everything but packages included is a clear winner for CD format. ./danfe From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 17:45:39 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 84A0F106568B; Sat, 18 Jun 2011 17:45:39 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id EFBBD8FC1F; Sat, 18 Jun 2011 17:45:35 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id p5IHjVwS012566 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 18 Jun 2011 20:45:31 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id p5IHjViN061336; Sat, 18 Jun 2011 20:45:31 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id p5IHjVGD061335; Sat, 18 Jun 2011 20:45:31 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 18 Jun 2011 20:45:31 +0300 From: Kostik Belousov To: Ben Laurie Message-ID: <20110618174531.GW48734@deviant.kiev.zoral.com.ua> References: <201106181356.p5IDuXhW044171@svn.freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="NuRQJEdGmwFx3/6L" Content-Disposition: inline In-Reply-To: <201106181356.p5IDuXhW044171@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-3.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223262 - in head: cddl/contrib/opensolaris/lib/libdtrace/common contrib/binutils/bfd contrib/binutils/gas contrib/binutils/gas/config contrib/binutils/ld contrib/binutils/opcodes contr... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 17:45:39 -0000 --NuRQJEdGmwFx3/6L Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable > Modified: head/sys/sys/param.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/sys/param.h Sat Jun 18 13:54:36 2011 (r223261) > +++ head/sys/sys/param.h Sat Jun 18 13:56:33 2011 (r223262) > @@ -319,4 +319,10 @@ __END_DECLS > #define member2struct(s, m, x) \ > ((struct s *)(void *)((char *)(x) - offsetof(struct s, m))) > =20 > +/* > + * Access a variable length array that has been declared as a fixed > + * length array. > + */ > +#define __PAST_END(array, offset) (((typeof(*(array)) *)(array))[offset]) > + > #endif /* _SYS_PARAM_H_ */ The "typeof" there should be "__typeof", most likely. --NuRQJEdGmwFx3/6L Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (FreeBSD) iEYEARECAAYFAk385DsACgkQC3+MBN1Mb4jwMACfZdxx8gSpFEBmV0j/GZcLkSqg XxkAoMUit6sCX3HSDTAncU5uYW8OMSdJ =p8gE -----END PGP SIGNATURE----- --NuRQJEdGmwFx3/6L-- From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 18:20:23 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 724A5106566C; Sat, 18 Jun 2011 18:20:23 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from mx1.sbone.de (mx1.sbone.de [IPv6:2a01:4f8:130:3ffc::401:25]) by mx1.freebsd.org (Postfix) with ESMTP id 27B4B8FC13; Sat, 18 Jun 2011 18:20:23 +0000 (UTC) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:31::2013:587]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.sbone.de (Postfix) with ESMTPS id 4BCF025D3860; Sat, 18 Jun 2011 18:20:22 +0000 (UTC) Received: from content-filter.sbone.de (content-filter.sbone.de [IPv6:fde9:577b:c1a9:31::2013:2742]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPS id 6C5ED15A1F11; Sat, 18 Jun 2011 18:20:21 +0000 (UTC) X-Virus-Scanned: amavisd-new at sbone.de Received: from mail.sbone.de ([IPv6:fde9:577b:c1a9:31::2013:587]) by content-filter.sbone.de (content-filter.sbone.de [fde9:577b:c1a9:31::2013:2742]) (amavisd-new, port 10024) with ESMTP id 7O0ZTswyUWc1; Sat, 18 Jun 2011 18:20:20 +0000 (UTC) Received: from orange-en1.sbone.de (orange-en1.sbone.de [IPv6:fde9:577b:c1a9:31:cabc:c8ff:fecf:e8e3]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id D8C4E15A1F10; Sat, 18 Jun 2011 18:20:19 +0000 (UTC) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: "Bjoern A. Zeeb" In-Reply-To: <20110618164702.GA82496@FreeBSD.org> Date: Sat, 18 Jun 2011 18:20:17 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: <6DE038C6-44D9-477C-8B4A-7E03BF75EC66@lists.zabbadoz.net> References: <201106152338.p5FNcFlN003175@svn.freebsd.org> <20110617231757.GA40286@server.vk2pj.dyndns.org> <20110618164702.GA82496@FreeBSD.org> To: Alexey Dokuchaev X-Mailer: Apple Mail (2.1084) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Nathan Whitehorn , Peter Jeremy Subject: Re: svn commit: r223129 - head/release X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 18:20:23 -0000 On Jun 18, 2011, at 4:47 PM, Alexey Dokuchaev wrote: > On Sat, Jun 18, 2011 at 09:17:57AM +1000, Peter Jeremy wrote: >> On 2011-Jun-15 23:38:15 +0000, Nathan Whitehorn = wrote: >>> Log: >>> Do not install the rescue tools onto the install CD. Since it is = read >>> only, they are very unlikely to be needed and take up a great deal = of >>> space. >>=20 >> If I've correctly understood this change, I'm not sure this is a >> positive move. >>=20 >> Based on a quick test, removing /rescue saves about 4MB (in reality, >> the saving should be less because /rescue removes the need for >> /stand). OTOH, it renders the install CD useless as a recovery >> "fixit" disk - whilst the CD is unlikely to need recovery itself, it >> was useful for recovering hard disks >=20 > I think we would be far better off with an image which would provide a > release (without packages) + full fixit functionality. Existing set = of > images is quite suboptimal: install image cannot be used as fixit = disc, > fixit disc cannot be used for installation. People who want packages = will > probably just burn DVD image; CD users more likely to go with ports. = Having > single installation image with everything but packages included is a = clear > winner for CD format. has anyone of you tried on of the latest snapshots and knows how things look these days? /bz --=20 Bjoern A. Zeeb You have to have visions! Stop bit received. Insert coin for new address family. From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 19:41:06 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 002281065670; Sat, 18 Jun 2011 19:41:05 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E408B8FC08; Sat, 18 Jun 2011 19:41:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IJf59j054336; Sat, 18 Jun 2011 19:41:05 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IJf5qV054330; Sat, 18 Jun 2011 19:41:05 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201106181941.p5IJf5qV054330@svn.freebsd.org> From: Doug Barton Date: Sat, 18 Jun 2011 19:41:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223264 - in head: etc/defaults etc/rc.d share/man/man5 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 19:41:06 -0000 Author: dougb Date: Sat Jun 18 19:41:05 2011 New Revision: 223264 URL: http://svn.freebsd.org/changeset/base/223264 Log: Add rc.d/kld to load kernel modules after local disks are up. This method is many times faster than doing it in /boot/loader.conf. Added: head/etc/rc.d/kld (contents, props changed) Modified: head/etc/defaults/rc.conf head/etc/rc.d/Makefile head/etc/rc.d/var head/share/man/man5/rc.conf.5 Modified: head/etc/defaults/rc.conf ============================================================================== --- head/etc/defaults/rc.conf Sat Jun 18 15:23:08 2011 (r223263) +++ head/etc/defaults/rc.conf Sat Jun 18 19:41:05 2011 (r223264) @@ -38,6 +38,7 @@ ddb_enable="NO" # Set to YES to load dd ddb_config="/etc/ddb.conf" # ddb(8) config file. devd_enable="YES" # Run devd, to trigger programs on device tree changes. devd_flags="" # Additional flags for devd(8). +#kld_list="" # Kernel modules to load after local disks are mounted kldxref_enable="NO" # Build linker.hints files with kldxref(8). kldxref_clobber="NO" # Overwrite old linker.hints at boot. kldxref_module_path="" # Override kern.module_path. A ';'-delimited list. Modified: head/etc/rc.d/Makefile ============================================================================== --- head/etc/rc.d/Makefile Sat Jun 18 15:23:08 2011 (r223263) +++ head/etc/rc.d/Makefile Sat Jun 18 19:41:05 2011 (r223264) @@ -18,7 +18,7 @@ FILES= DAEMON FILESYSTEMS LOGIN NETWORKI ip6addrctl ipfilter ipfs ipfw ipmon \ ipnat ipsec ipxrouted \ jail \ - kadmind kerberos keyserv kldxref kpasswdd \ + kadmind kerberos keyserv kld kldxref kpasswdd \ ldconfig local localpkg lockd lpd \ mixer motd mountcritlocal mountcritremote mountlate \ mdconfig mdconfig2 mountd moused mroute6d mrouted msgs \ Added: head/etc/rc.d/kld ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/etc/rc.d/kld Sat Jun 18 19:41:05 2011 (r223264) @@ -0,0 +1,53 @@ +#!/bin/sh + +# Copyright (c) 2011 Douglas Barton +# 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. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. +# +# $FreeBSD$ +# +# PROVIDE: kld +# REQUIRE: FILESYSTEMS +# KEYWORD: nojail + +. /etc/rc.subr + +name="kld" + +start_cmd="${name}_start" +stop_cmd=':' + +kld_start() +{ + [ -n "$kld_list" ] || return + + local _kld + + echo 'Loading kernel modules:' + for _kld in $kld_list ; do + load_kld -e ${_kld}.ko $_kld + done +} + +load_rc_config $name +run_rc_command "$1" Modified: head/etc/rc.d/var ============================================================================== --- head/etc/rc.d/var Sat Jun 18 15:23:08 2011 (r223263) +++ head/etc/rc.d/var Sat Jun 18 19:41:05 2011 (r223264) @@ -28,7 +28,7 @@ # # PROVIDE: var -# REQUIRE: FILESYSTEMS +# REQUIRE: FILESYSTEMS kld . /etc/rc.subr Modified: head/share/man/man5/rc.conf.5 ============================================================================== --- head/share/man/man5/rc.conf.5 Sat Jun 18 15:23:08 2011 (r223263) +++ head/share/man/man5/rc.conf.5 Sat Jun 18 19:41:05 2011 (r223264) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 27, 2011 +.Dd June 18, 2011 .Dt RC.CONF 5 .Os .Sh NAME @@ -196,6 +196,14 @@ Configuration file for .Xr ddb 8 . Default .Pa /etc/ddb.conf . +.It Va kld_list +.Pq Vt str +A list of kernel modules to load right after the local +disks are mounted. +Loading modules at this point in the boot process is +much faster than doing it via +.Pa /boot/loader.conf +for those modules not necessary for mounting local disk. .It Va kldxref_enable .Pq Vt bool Set to From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 20:34:05 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F94F106564A; Sat, 18 Jun 2011 20:34:05 +0000 (UTC) (envelope-from nwhitehorn@freebsd.org) Received: from agogare.doit.wisc.edu (agogare.doit.wisc.edu [144.92.197.211]) by mx1.freebsd.org (Postfix) with ESMTP id 401E18FC14; Sat, 18 Jun 2011 20:34:04 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII; format=flowed Received: from avs-daemon.smtpauth2.wiscmail.wisc.edu by smtpauth2.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) id <0LN0003006GSGV00@smtpauth2.wiscmail.wisc.edu>; Sat, 18 Jun 2011 15:34:04 -0500 (CDT) Received: from comporellon.tachypleus.net (adsl-75-50-89-112.dsl.mdsnwi.sbcglobal.net [75.50.89.112]) by smtpauth2.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) with ESMTPSA id <0LN000EKX6GQH110@smtpauth2.wiscmail.wisc.edu>; Sat, 18 Jun 2011 15:34:03 -0500 (CDT) Date: Sat, 18 Jun 2011 15:34:02 -0500 From: Nathan Whitehorn In-reply-to: <20110617231757.GA40286@server.vk2pj.dyndns.org> To: Peter Jeremy Message-id: <4DFD0BBA.1010502@freebsd.org> X-Spam-Report: AuthenticatedSender=yes, SenderIP=75.50.89.112 X-Spam-PmxInfo: Server=avs-14, Version=5.6.0.2009776, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2011.6.18.202415, SenderIP=75.50.89.112 References: <201106152338.p5FNcFlN003175@svn.freebsd.org> <20110617231757.GA40286@server.vk2pj.dyndns.org> User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.17) Gecko/20110429 Thunderbird/3.1.10 Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r223129 - head/release X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 20:34:05 -0000 On 06/17/11 18:17, Peter Jeremy wrote: > On 2011-Jun-15 23:38:15 +0000, Nathan Whitehorn wrote: >> Log: >> Do not install the rescue tools onto the install CD. Since it is read >> only, they are very unlikely to be needed and take up a great deal of >> space. > If I've correctly understood this change, I'm not sure this is a > positive move. > > Based on a quick test, removing /rescue saves about 4MB (in reality, > the saving should be less because /rescue removes the need for > /stand). OTOH, it renders the install CD useless as a recovery > "fixit" disk - whilst the CD is unlikely to need recovery itself, it > was useful for recovering hard disks Since all of our install CDs for 9.0 (even the boot-only ones!) will be live CDs, the full versions of everything in /rescue are on the CD in their usual locations in /bin, /sbin, etc. and these can be used just as well for fixing a system as the /rescue tools. -Nathan From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 20:48:38 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 401391065670; Sat, 18 Jun 2011 20:48:38 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay02.stack.nl [IPv6:2001:610:1108:5010::104]) by mx1.freebsd.org (Postfix) with ESMTP id D2C978FC18; Sat, 18 Jun 2011 20:48:37 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id CAA00359411; Sat, 18 Jun 2011 22:48:36 +0200 (CEST) Received: by turtle.stack.nl (Postfix, from userid 1677) id B35161742A; Sat, 18 Jun 2011 22:48:36 +0200 (CEST) Date: Sat, 18 Jun 2011 22:48:36 +0200 From: Jilles Tjoelker To: Ben Laurie Message-ID: <20110618204836.GA46582@stack.nl> References: <201106181356.p5IDuXhW044171@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201106181356.p5IDuXhW044171@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r223262 - in head: cddl/contrib/opensolaris/lib/libdtrace/common contrib/binutils/bfd contrib/binutils/gas contrib/binutils/gas/config contrib/binutils/ld contrib/binutils/opcodes contr... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 20:48:38 -0000 On Sat, Jun 18, 2011 at 01:56:33PM +0000, Ben Laurie wrote: > Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c > ============================================================================== > --- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c Sat Jun 18 13:54:36 2011 (r223261) > +++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c Sat Jun 18 13:56:33 2011 (r223262) > @@ -45,6 +45,7 @@ > #include > #include > #include > +#include > > #include > > @@ -811,15 +812,14 @@ dt_basename(char *str) > ulong_t > dt_popc(ulong_t x) > { > -#ifdef _ILP32 > +#if defined(_ILP32) > x = x - ((x >> 1) & 0x55555555UL); > x = (x & 0x33333333UL) + ((x >> 2) & 0x33333333UL); > x = (x + (x >> 4)) & 0x0F0F0F0FUL; > x = x + (x >> 8); > x = x + (x >> 16); > return (x & 0x3F); > -#endif > -#ifdef _LP64 > +#elif defined(_LP64) > x = x - ((x >> 1) & 0x5555555555555555ULL); > x = (x & 0x3333333333333333ULL) + ((x >> 2) & 0x3333333333333333ULL); > x = (x + (x >> 4)) & 0x0F0F0F0F0F0F0F0FULL; > @@ -827,6 +827,8 @@ dt_popc(ulong_t x) > x = x + (x >> 16); > x = x + (x >> 32); > return (x & 0x7F); > +#else > +# warning need td_popc() implementation > #endif > } This commit uncovers breakage that had been present for a while. If I compile this on stable/8 i386 for head i386, _ILP32 is not defined and the warning is hit, breaking the build. Apparently, the code had been broken for a while but I do not use dtrace so I would not have noticed. The tinderboxes have now also noticed the problem so it is not something weird about my system. -- Jilles Tjoelker From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 21:08:27 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A7868106567D; Sat, 18 Jun 2011 21:08:27 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 97AC88FC14; Sat, 18 Jun 2011 21:08:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IL8R1w057118; Sat, 18 Jun 2011 21:08:27 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IL8RDk057116; Sat, 18 Jun 2011 21:08:27 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106182108.p5IL8RDk057116@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 18 Jun 2011 21:08:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223267 - head/usr.sbin/mfiutil X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 21:08:27 -0000 Author: bz Date: Sat Jun 18 21:08:27 2011 New Revision: 223267 URL: http://svn.freebsd.org/changeset/base/223267 Log: Add 'show logstate' to usage(). MFC after: 1 week Modified: head/usr.sbin/mfiutil/mfiutil.c Modified: head/usr.sbin/mfiutil/mfiutil.c ============================================================================== --- head/usr.sbin/mfiutil/mfiutil.c Sat Jun 18 19:58:09 2011 (r223266) +++ head/usr.sbin/mfiutil/mfiutil.c Sat Jun 18 21:08:27 2011 (r223267) @@ -58,6 +58,7 @@ usage(void) fprintf(stderr, " show drives - list physical drives\n"); fprintf(stderr, " show events - display event log\n"); fprintf(stderr, " show firmware - list firmware images\n"); + fprintf(stderr, " show logstate - display event log sequence numbers\n"); fprintf(stderr, " show volumes - list logical volumes\n"); fprintf(stderr, " show patrol - display patrol read status\n"); fprintf(stderr, " show progress - display status of active operations\n"); From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 21:10:03 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B3FF91065670; Sat, 18 Jun 2011 21:10:03 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9E9348FC16; Sat, 18 Jun 2011 21:10:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ILA3VO057206; Sat, 18 Jun 2011 21:10:03 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ILA3cL057205; Sat, 18 Jun 2011 21:10:03 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201106182110.p5ILA3cL057205@svn.freebsd.org> From: Kirk McKusick Date: Sat, 18 Jun 2011 21:10:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223268 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 21:10:03 -0000 Author: mckusick Date: Sat Jun 18 21:10:03 2011 New Revision: 223268 URL: http://svn.freebsd.org/changeset/base/223268 Log: Fixed dereference of a NULL pointer. Reported by: Peter Holm Modified: head/sys/ufs/ffs/ffs_snapshot.c Modified: head/sys/ufs/ffs/ffs_snapshot.c ============================================================================== --- head/sys/ufs/ffs/ffs_snapshot.c Sat Jun 18 21:08:27 2011 (r223267) +++ head/sys/ufs/ffs/ffs_snapshot.c Sat Jun 18 21:10:03 2011 (r223268) @@ -1918,7 +1918,8 @@ retry: if (savedcbp) { vp = savedcbp->b_vp; bawrite(savedcbp); - if ((vtype == VDIR || dopersistence) && ip->i_effnlink > 0) + if ((vtype == VDIR || dopersistence) && + VTOI(vp)->i_effnlink > 0) (void) ffs_syncvnode(vp, MNT_WAIT); } /* From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 21:29:26 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4ED8D1065672; Sat, 18 Jun 2011 21:29:26 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3EA648FC12; Sat, 18 Jun 2011 21:29:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ILTQS7057803; Sat, 18 Jun 2011 21:29:26 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ILTQOT057801; Sat, 18 Jun 2011 21:29:26 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106182129.p5ILTQOT057801@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 18 Jun 2011 21:29:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223269 - head/lib/libprocstat X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 21:29:26 -0000 Author: jilles Date: Sat Jun 18 21:29:25 2011 New Revision: 223269 URL: http://svn.freebsd.org/changeset/base/223269 Log: libprocstat: Correct format for size_t (should be %zu, not %zd). Modified: head/lib/libprocstat/libprocstat.c Modified: head/lib/libprocstat/libprocstat.c ============================================================================== --- head/lib/libprocstat/libprocstat.c Sat Jun 18 21:10:03 2011 (r223268) +++ head/lib/libprocstat/libprocstat.c Sat Jun 18 21:29:25 2011 (r223269) @@ -191,7 +191,7 @@ procstat_getprocs(struct procstat *procs len = *count * sizeof(*p); p = malloc(len); if (p == NULL) { - warnx("malloc(%zd)", len); + warnx("malloc(%zu)", len); goto fail; } bcopy(p0, p, len); @@ -213,7 +213,7 @@ procstat_getprocs(struct procstat *procs } p = malloc(len); if (p == NULL) { - warnx("malloc(%zd)", len); + warnx("malloc(%zu)", len); goto fail; } error = sysctl(name, 4, p, &len, NULL, 0); @@ -426,7 +426,7 @@ procstat_getfiles_kvm(struct procstat *p nfiles = filed.fd_lastfile + 1; ofiles = malloc(nfiles * sizeof(struct file *)); if (ofiles == NULL) { - warn("malloc(%zd)", nfiles * sizeof(struct file *)); + warn("malloc(%zu)", nfiles * sizeof(struct file *)); goto do_mmapped; } if (!kvm_read_all(kd, (unsigned long)filed.fd_ofiles, ofiles, From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 21:46:11 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C9207106566B; Sat, 18 Jun 2011 21:46:11 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B8FE18FC0A; Sat, 18 Jun 2011 21:46:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ILkBa2058327; Sat, 18 Jun 2011 21:46:11 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ILkB6e058325; Sat, 18 Jun 2011 21:46:11 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106182146.p5ILkB6e058325@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 18 Jun 2011 21:46:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223270 - head/lib/libprocstat X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 21:46:11 -0000 Author: jilles Date: Sat Jun 18 21:46:11 2011 New Revision: 223270 URL: http://svn.freebsd.org/changeset/base/223270 Log: libprocstat: Remove spaces between function name and open parenthesis. Modified: head/lib/libprocstat/libprocstat.c Modified: head/lib/libprocstat/libprocstat.c ============================================================================== --- head/lib/libprocstat/libprocstat.c Sat Jun 18 21:29:25 2011 (r223269) +++ head/lib/libprocstat/libprocstat.c Sat Jun 18 21:46:11 2011 (r223270) @@ -271,11 +271,11 @@ procstat_freefiles(struct procstat *proc } free(head); if (procstat->vmentries != NULL) { - free (procstat->vmentries); + free(procstat->vmentries); procstat->vmentries = NULL; } if (procstat->files != NULL) { - free (procstat->files); + free(procstat->files); procstat->files = NULL; } } From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 21:53:36 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 76A051065673; Sat, 18 Jun 2011 21:53:36 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4FB8F8FC18; Sat, 18 Jun 2011 21:53:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ILraHG058572; Sat, 18 Jun 2011 21:53:36 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ILraiE058570; Sat, 18 Jun 2011 21:53:36 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106182153.p5ILraiE058570@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 18 Jun 2011 21:53:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223271 - head/usr.bin/fstat X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 21:53:36 -0000 Author: jilles Date: Sat Jun 18 21:53:36 2011 New Revision: 223271 URL: http://svn.freebsd.org/changeset/base/223271 Log: fuser: Fix skipping "SIG" on signal names (-s). The code did !strncasecmp(str, "sig", 4) which is not useful. Also change "sig" to "SIG" matching the uppercase signal names as of r218285. This has little effect because fuser does not enable locale. Modified: head/usr.bin/fstat/fuser.c Modified: head/usr.bin/fstat/fuser.c ============================================================================== --- head/usr.bin/fstat/fuser.c Sat Jun 18 21:46:11 2011 (r223270) +++ head/usr.bin/fstat/fuser.c Sat Jun 18 21:53:36 2011 (r223271) @@ -358,9 +358,8 @@ str2sig(const char *str) { int i; -#define SIGPREFIX "sig" - if (!strncasecmp(str, SIGPREFIX, sizeof(SIGPREFIX))) - str += sizeof(SIGPREFIX); + if (!strncasecmp(str, "SIG", 3)) + str += 3; for (i = 1; i < sys_nsig; i++) { if (!strcasecmp(sys_signame[i], str)) return (i); From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 22:09:22 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D7E921065675; Sat, 18 Jun 2011 22:09:22 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C6E008FC13; Sat, 18 Jun 2011 22:09:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IM9MJ2059062; Sat, 18 Jun 2011 22:09:22 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IM9MTT059059; Sat, 18 Jun 2011 22:09:22 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106182209.p5IM9MTT059059@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 18 Jun 2011 22:09:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223272 - in stable/8/sys: netinet netinet6 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 22:09:23 -0000 Author: bz Date: Sat Jun 18 22:09:22 2011 New Revision: 223272 URL: http://svn.freebsd.org/changeset/base/223272 Log: MFC r222272: Add FEATURE() definitions for IPv4 and IPv6 so that we can use feature_present(3) to dynamically decide whether to use one or the other family. Modified: stable/8/sys/netinet/in_proto.c stable/8/sys/netinet6/in6_proto.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/netinet/in_proto.c ============================================================================== --- stable/8/sys/netinet/in_proto.c Sat Jun 18 21:53:36 2011 (r223271) +++ stable/8/sys/netinet/in_proto.c Sat Jun 18 22:09:22 2011 (r223272) @@ -93,6 +93,8 @@ static struct pr_usrreqs nousrreqs; #include #endif +FEATURE(inet, "Internet Protocol version 4"); + extern struct domain inetdomain; /* Spacer for loadable protocols. */ Modified: stable/8/sys/netinet6/in6_proto.c ============================================================================== --- stable/8/sys/netinet6/in6_proto.c Sat Jun 18 21:53:36 2011 (r223271) +++ stable/8/sys/netinet6/in6_proto.c Sat Jun 18 22:09:22 2011 (r223272) @@ -128,6 +128,7 @@ __FBSDID("$FreeBSD$"); /* * TCP/IP protocol family: IP6, ICMP6, UDP, TCP. */ +FEATURE(inet6, "Internet Protocol version 6"); extern struct domain inet6domain; static struct pr_usrreqs nousrreqs; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 22:09:44 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B76781065674; Sat, 18 Jun 2011 22:09:44 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A650F8FC18; Sat, 18 Jun 2011 22:09:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IM9iti059108; Sat, 18 Jun 2011 22:09:44 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IM9i45059105; Sat, 18 Jun 2011 22:09:44 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106182209.p5IM9i45059105@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 18 Jun 2011 22:09:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223273 - in stable/7/sys: netinet netinet6 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 22:09:44 -0000 Author: bz Date: Sat Jun 18 22:09:44 2011 New Revision: 223273 URL: http://svn.freebsd.org/changeset/base/223273 Log: MFC r222272: Add FEATURE() definitions for IPv4 and IPv6 so that we can use feature_present(3) to dynamically decide whether to use one or the other family. Modified: stable/7/sys/netinet/in_proto.c stable/7/sys/netinet6/in6_proto.c Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/netinet/in_proto.c ============================================================================== --- stable/7/sys/netinet/in_proto.c Sat Jun 18 22:09:22 2011 (r223272) +++ stable/7/sys/netinet/in_proto.c Sat Jun 18 22:09:44 2011 (r223273) @@ -91,6 +91,8 @@ static struct pr_usrreqs nousrreqs; #include #endif +FEATURE(inet, "Internet Protocol version 4"); + extern struct domain inetdomain; /* Spacer for loadable protocols. */ Modified: stable/7/sys/netinet6/in6_proto.c ============================================================================== --- stable/7/sys/netinet6/in6_proto.c Sat Jun 18 22:09:22 2011 (r223272) +++ stable/7/sys/netinet6/in6_proto.c Sat Jun 18 22:09:44 2011 (r223273) @@ -127,6 +127,7 @@ __FBSDID("$FreeBSD$"); /* * TCP/IP protocol family: IP6, ICMP6, UDP, TCP. */ +FEATURE(inet6, "Internet Protocol version 6"); extern struct domain inet6domain; static struct pr_usrreqs nousrreqs; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 22:12:17 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7AF67106564A; Sat, 18 Jun 2011 22:12:17 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 68C568FC08; Sat, 18 Jun 2011 22:12:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IMCHda059303; Sat, 18 Jun 2011 22:12:17 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IMCHMX059295; Sat, 18 Jun 2011 22:12:17 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106182212.p5IMCHMX059295@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 18 Jun 2011 22:12:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223274 - stable/8/usr.sbin/mfiutil X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 22:12:17 -0000 Author: bz Date: Sat Jun 18 22:12:17 2011 New Revision: 223274 URL: http://svn.freebsd.org/changeset/base/223274 Log: MFC r219722 (by jhb): Preserve errno in an error case. Submitted by: gcooper MFC r222899: Contrary to when returning in all-good cases at the end of functions we did not free memory (1) or close the file descriptor (2) in error cases. Reported by: Mark Johnston (1) Reported by: attilio (2) Reviewed by: jhb Sponsored by: Sandvine Incorporated Modified: stable/8/usr.sbin/mfiutil/mfi_config.c stable/8/usr.sbin/mfiutil/mfi_drive.c stable/8/usr.sbin/mfiutil/mfi_evt.c stable/8/usr.sbin/mfiutil/mfi_flash.c stable/8/usr.sbin/mfiutil/mfi_patrol.c stable/8/usr.sbin/mfiutil/mfi_show.c stable/8/usr.sbin/mfiutil/mfi_volume.c Directory Properties: stable/8/usr.sbin/mfiutil/ (props changed) Modified: stable/8/usr.sbin/mfiutil/mfi_config.c ============================================================================== --- stable/8/usr.sbin/mfiutil/mfi_config.c Sat Jun 18 22:09:44 2011 (r223273) +++ stable/8/usr.sbin/mfiutil/mfi_config.c Sat Jun 18 22:12:17 2011 (r223274) @@ -85,6 +85,7 @@ mfi_config_read(int fd, struct mfi_confi { struct mfi_config_data *config; uint32_t config_size; + int error; /* * Keep fetching the config in a loop until we have a large enough @@ -97,8 +98,12 @@ fetch: if (config == NULL) return (-1); if (mfi_dcmd_command(fd, MFI_DCMD_CFG_READ, config, - config_size, NULL, 0, NULL) < 0) + config_size, NULL, 0, NULL) < 0) { + error = errno; + free(config); + errno = error; return (-1); + } if (config->size > config_size) { config_size = config->size; @@ -162,12 +167,14 @@ clear_config(int ac, char **av) if (!mfi_reconfig_supported()) { warnx("The current mfi(4) driver does not support " "configuration changes."); + close(fd); return (EOPNOTSUPP); } if (mfi_ld_get_list(fd, &list, NULL) < 0) { error = errno; warn("Failed to get volume list"); + close(fd); return (error); } @@ -175,6 +182,7 @@ clear_config(int ac, char **av) if (mfi_volume_busy(fd, list.ld_list[i].ld.v.target_id)) { warnx("Volume %s is busy and cannot be deleted", mfi_volume_name(fd, list.ld_list[i].ld.v.target_id)); + close(fd); return (EBUSY); } } @@ -185,12 +193,14 @@ clear_config(int ac, char **av) ch = getchar(); if (ch != 'y' && ch != 'Y') { printf("\nAborting\n"); + close(fd); return (0); } if (mfi_dcmd_command(fd, MFI_DCMD_CFG_CLEAR, NULL, 0, NULL, 0, NULL) < 0) { error = errno; warn("Failed to clear configuration"); + close(fd); return (error); } @@ -336,17 +346,21 @@ parse_array(int fd, int raid_type, char for (pinfo = info->drives; (cp = strsep(&array_str, ",")) != NULL; pinfo++) { error = mfi_lookup_drive(fd, cp, &device_id); - if (error) + if (error) { + free(info->drives); return (error); + } if (mfi_pd_get_info(fd, device_id, pinfo, NULL) < 0) { error = errno; warn("Failed to fetch drive info for drive %s", cp); + free(info->drives); return (error); } if (pinfo->fw_state != MFI_PD_STATE_UNCONFIGURED_GOOD) { warnx("Drive %u is not available", device_id); + free(info->drives); return (EINVAL); } } @@ -551,7 +565,12 @@ create_volume(int ac, char **av) return (EINVAL); } - + bzero(&state, sizeof(state)); + config = NULL; + arrays = NULL; + narrays = 0; + error = 0; + fd = mfi_open(mfi_unit); if (fd < 0) { error = errno; @@ -562,7 +581,8 @@ create_volume(int ac, char **av) if (!mfi_reconfig_supported()) { warnx("The current mfi(4) driver does not support " "configuration changes."); - return (EOPNOTSUPP); + error = EOPNOTSUPP; + goto error; } /* Lookup the RAID type first. */ @@ -575,7 +595,8 @@ create_volume(int ac, char **av) if (raid_type == -1) { warnx("Unknown or unsupported volume type %s", av[1]); - return (EINVAL); + error = EINVAL; + goto error; } /* Parse any options. */ @@ -603,7 +624,8 @@ create_volume(int ac, char **av) break; case '?': default: - return (EINVAL); + error = EINVAL; + goto error; } } ac -= optind; @@ -613,7 +635,8 @@ create_volume(int ac, char **av) narrays = ac; if (narrays == 0) { warnx("At least one drive list is required"); - return (EINVAL); + error = EINVAL; + goto error; } switch (raid_type) { case RT_RAID0: @@ -623,7 +646,8 @@ create_volume(int ac, char **av) case RT_CONCAT: if (narrays != 1) { warnx("Only one drive list can be specified"); - return (EINVAL); + error = EINVAL; + goto error; } break; case RT_RAID10: @@ -632,24 +656,27 @@ create_volume(int ac, char **av) if (narrays < 1) { warnx("RAID10, RAID50, and RAID60 require at least " "two drive lists"); - return (EINVAL); + error = EINVAL; + goto error; } if (narrays > MFI_MAX_SPAN_DEPTH) { warnx("Volume spans more than %d arrays", MFI_MAX_SPAN_DEPTH); - return (EINVAL); + error = EINVAL; + goto error; } break; } arrays = calloc(narrays, sizeof(*arrays)); if (arrays == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } for (i = 0; i < narrays; i++) { error = parse_array(fd, raid_type, av[i], &arrays[i]); if (error) - return (error); + goto error; } switch (raid_type) { @@ -660,7 +687,8 @@ create_volume(int ac, char **av) if (arrays[i].drive_count != arrays[0].drive_count) { warnx("All arrays must contain the same " "number of drives"); - return (EINVAL); + error = EINVAL; + goto error; } } break; @@ -673,7 +701,7 @@ create_volume(int ac, char **av) if (mfi_config_read(fd, &config) < 0) { error = errno; warn("Failed to read configuration"); - return (error); + goto error; } p = (char *)config->array; state.array_ref = 0xffff; @@ -683,7 +711,8 @@ create_volume(int ac, char **av) state.arrays = calloc(config->array_count, sizeof(int)); if (state.arrays == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } for (i = 0; i < config->array_count; i++) { ar = (struct mfi_array *)p; @@ -699,7 +728,8 @@ create_volume(int ac, char **av) state.volumes = calloc(config->log_drv_count, sizeof(int)); if (state.volumes == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } for (i = 0; i < config->log_drv_count; i++) { ld = (struct mfi_ld_config *)p; @@ -739,7 +769,8 @@ create_volume(int ac, char **av) config = calloc(1, config_size); if (config == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } config->size = config_size; config->array_count = narrays; @@ -776,21 +807,20 @@ create_volume(int ac, char **av) NULL, 0, NULL) < 0) { error = errno; warn("Failed to add volume"); - return (error); + /* FALLTHROUGH */ } +error: /* Clean up. */ free(config); - if (state.log_drv_count > 0) - free(state.volumes); - if (state.array_count > 0) - free(state.arrays); + free(state.volumes); + free(state.arrays); for (i = 0; i < narrays; i++) free(arrays[i].drives); free(arrays); close(fd); - return (0); + return (error); } MFI_COMMAND(top, create, create_volume); @@ -831,24 +861,28 @@ delete_volume(int ac, char **av) if (!mfi_reconfig_supported()) { warnx("The current mfi(4) driver does not support " "configuration changes."); + close(fd); return (EOPNOTSUPP); } if (mfi_lookup_volume(fd, av[1], &target_id) < 0) { error = errno; warn("Invalid volume %s", av[1]); + close(fd); return (error); } if (mfi_ld_get_info(fd, target_id, &info, NULL) < 0) { error = errno; warn("Failed to get info for volume %d", target_id); + close(fd); return (error); } if (mfi_volume_busy(fd, target_id)) { warnx("Volume %s is busy and cannot be deleted", mfi_volume_name(fd, target_id)); + close(fd); return (EBUSY); } @@ -857,6 +891,7 @@ delete_volume(int ac, char **av) sizeof(mbox), NULL) < 0) { error = errno; warn("Failed to delete volume"); + close(fd); return (error); } @@ -891,40 +926,44 @@ add_spare(int ac, char **av) return (error); } + config = NULL; + spare = NULL; error = mfi_lookup_drive(fd, av[1], &device_id); if (error) - return (error); + goto error; if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch drive info"); - return (error); + goto error; } if (info.fw_state != MFI_PD_STATE_UNCONFIGURED_GOOD) { warnx("Drive %u is not available", device_id); - return (EINVAL); + error = EINVAL; + goto error; } if (ac > 2) { if (mfi_lookup_volume(fd, av[2], &target_id) < 0) { error = errno; warn("Invalid volume %s", av[2]); - return (error); + goto error; } } if (mfi_config_read(fd, &config) < 0) { error = errno; warn("Failed to read configuration"); - return (error); + goto error; } spare = malloc(sizeof(struct mfi_spare) + sizeof(uint16_t) * config->array_count); if (spare == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } bzero(spare, sizeof(struct mfi_spare)); spare->ref = info.ref; @@ -937,7 +976,8 @@ add_spare(int ac, char **av) if (ar->size > info.coerced_size) { warnx("Spare isn't large enough for array %u", ar->array_ref); - return (EINVAL); + error = EINVAL; + goto error; } p += config->array_size; } @@ -950,7 +990,8 @@ add_spare(int ac, char **av) ld = mfi_config_lookup_volume(config, target_id); if (ld == NULL) { warnx("Did not find volume %d", target_id); - return (EINVAL); + error = EINVAL; + goto error; } spare->spare_type |= MFI_SPARE_DEDICATED; @@ -960,29 +1001,33 @@ add_spare(int ac, char **av) ld->span[i].array_ref); if (ar == NULL) { warnx("Missing array; inconsistent config?"); - return (ENXIO); + error = ENXIO; + goto error; } if (ar->size > info.coerced_size) { warnx("Spare isn't large enough for array %u", ar->array_ref); - return (EINVAL); + error = EINVAL; + goto error; } spare->array_ref[i] = ar->array_ref; } } - free(config); if (mfi_dcmd_command(fd, MFI_DCMD_CFG_MAKE_SPARE, spare, sizeof(struct mfi_spare) + sizeof(uint16_t) * spare->array_count, NULL, 0, NULL) < 0) { error = errno; warn("Failed to assign spare"); - return (error); + /* FALLTHROUGH. */ } +error: + free(spare); + free(config); close(fd); - return (0); + return (error); } MFI_COMMAND(top, add, add_spare); @@ -1007,18 +1052,22 @@ remove_spare(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } if (info.fw_state != MFI_PD_STATE_HOT_SPARE) { warnx("Drive %u is not a hot spare", device_id); + close(fd); return (EINVAL); } @@ -1027,6 +1076,7 @@ remove_spare(int ac, char **av) sizeof(mbox), NULL) < 0) { error = errno; warn("Failed to delete spare"); + close(fd); return (error); } @@ -1151,6 +1201,7 @@ debug_config(int ac, char **av) if (mfi_config_read(fd, &config) < 0) { error = errno; warn("Failed to get config"); + close(fd); return (error); } @@ -1190,17 +1241,21 @@ dump(int ac, char **av) warn("Failed to read debug command"); if (error == ENOENT) error = EOPNOTSUPP; + close(fd); return (error); } config = malloc(len); if (config == NULL) { warnx("malloc failed"); + close(fd); return (ENOMEM); } if (sysctlbyname(buf, config, &len, NULL, 0) < 0) { error = errno; warn("Failed to read debug command"); + free(config); + close(fd); return (error); } dump_config(fd, config); Modified: stable/8/usr.sbin/mfiutil/mfi_drive.c ============================================================================== --- stable/8/usr.sbin/mfiutil/mfi_drive.c Sat Jun 18 22:09:44 2011 (r223273) +++ stable/8/usr.sbin/mfiutil/mfi_drive.c Sat Jun 18 22:12:17 2011 (r223274) @@ -310,19 +310,23 @@ drive_set_state(char *drive, uint16_t ne } error = mfi_lookup_drive(fd, drive, &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } /* Try to change the state. */ if (info.fw_state == new_state) { warnx("Drive %u is already in the desired state", device_id); + close(fd); return (EINVAL); } @@ -334,6 +338,7 @@ drive_set_state(char *drive, uint16_t ne error = errno; warn("Failed to set drive %u to %s", device_id, mfi_pdstate(new_state)); + close(fd); return (error); } @@ -406,19 +411,23 @@ start_rebuild(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } /* Check the state, must be REBUILD. */ if (info.fw_state != MFI_PD_STATE_REBUILD) { warnx("Drive %d is not in the REBUILD state", device_id); + close(fd); return (EINVAL); } @@ -428,6 +437,7 @@ start_rebuild(int ac, char **av) NULL) < 0) { error = errno; warn("Failed to start rebuild on drive %u", device_id); + close(fd); return (error); } close(fd); @@ -458,19 +468,23 @@ abort_rebuild(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } /* Check the state, must be REBUILD. */ if (info.fw_state != MFI_PD_STATE_REBUILD) { warn("Drive %d is not in the REBUILD state", device_id); + close(fd); return (EINVAL); } @@ -480,6 +494,7 @@ abort_rebuild(int ac, char **av) NULL) < 0) { error = errno; warn("Failed to abort rebuild on drive %u", device_id); + close(fd); return (error); } close(fd); @@ -509,13 +524,16 @@ drive_progress(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } close(fd); @@ -570,13 +588,16 @@ drive_clear(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } @@ -586,6 +607,7 @@ drive_clear(int ac, char **av) warn("Failed to %s clear on drive %u", opcode == MFI_DCMD_PD_CLEAR_START ? "start" : "stop", device_id); + close(fd); return (error); } @@ -626,8 +648,10 @@ drive_locate(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } mbox_store_device_id(&mbox[0], device_id); @@ -638,6 +662,7 @@ drive_locate(int ac, char **av) warn("Failed to %s locate on drive %u", opcode == MFI_DCMD_PD_LOCATE_START ? "start" : "stop", device_id); + close(fd); return (error); } close(fd); Modified: stable/8/usr.sbin/mfiutil/mfi_evt.c ============================================================================== --- stable/8/usr.sbin/mfiutil/mfi_evt.c Sat Jun 18 22:09:44 2011 (r223273) +++ stable/8/usr.sbin/mfiutil/mfi_evt.c Sat Jun 18 22:12:17 2011 (r223274) @@ -83,6 +83,7 @@ show_logstate(int ac, char **av) if (mfi_event_get_info(fd, &info, NULL) < 0) { error = errno; warn("Failed to get event log info"); + close(fd); return (error); } @@ -550,6 +551,7 @@ show_events(int ac, char **av) if (mfi_event_get_info(fd, &info, NULL) < 0) { error = errno; warn("Failed to get event log info"); + close(fd); return (error); } @@ -570,6 +572,7 @@ show_events(int ac, char **av) if (parse_class(optarg, &filter.members.evt_class) < 0) { error = errno; warn("Error parsing event class"); + close(fd); return (error); } break; @@ -577,6 +580,7 @@ show_events(int ac, char **av) if (parse_locale(optarg, &filter.members.locale) < 0) { error = errno; warn("Error parsing event locale"); + close(fd); return (error); } break; @@ -584,6 +588,7 @@ show_events(int ac, char **av) val = strtol(optarg, &cp, 0); if (*cp != '\0' || val <= 0) { warnx("Invalid event count"); + close(fd); return (EINVAL); } num_events = val; @@ -593,6 +598,7 @@ show_events(int ac, char **av) break; case '?': default: + close(fd); return (EINVAL); } } @@ -604,28 +610,33 @@ show_events(int ac, char **av) (num_events - 1); if (size > getpagesize()) { warnx("Event count is too high"); + close(fd); return (EINVAL); } /* Handle optional start and stop sequence numbers. */ if (ac > 2) { warnx("show events: extra arguments"); + close(fd); return (EINVAL); } if (ac > 0 && parse_seq(&info, av[0], &start) < 0) { error = errno; warn("Error parsing starting sequence number"); + close(fd); return (error); } if (ac > 1 && parse_seq(&info, av[1], &stop) < 0) { error = errno; warn("Error parsing ending sequence number"); + close(fd); return (error); } list = malloc(size); if (list == NULL) { warnx("malloc failed"); + close(fd); return (ENOMEM); } for (seq = start;;) { @@ -633,6 +644,8 @@ show_events(int ac, char **av) &status) < 0) { error = errno; warn("Failed to fetch events"); + free(list); + close(fd); return (error); } if (status == MFI_STAT_NOT_FOUND) { @@ -642,6 +655,8 @@ show_events(int ac, char **av) } if (status != MFI_STAT_OK) { warnx("Error fetching events: %s", mfi_status(status)); + free(list); + close(fd); return (EIO); } Modified: stable/8/usr.sbin/mfiutil/mfi_flash.c ============================================================================== --- stable/8/usr.sbin/mfiutil/mfi_flash.c Sat Jun 18 22:09:44 2011 (r223273) +++ stable/8/usr.sbin/mfiutil/mfi_flash.c Sat Jun 18 22:12:17 2011 (r223274) @@ -136,21 +136,25 @@ flash_adapter(int ac, char **av) return (error); } + buf = NULL; + fd = -1; + if (fstat(flash, &sb) < 0) { error = errno; warn("fstat(%s)", av[1]); - return (error); + goto error; } if (sb.st_size % 1024 != 0 || sb.st_size > 0x7fffffff) { warnx("Invalid flash file size"); - return (EINVAL); + error = EINVAL; + goto error; } fd = mfi_open(mfi_unit); if (fd < 0) { error = errno; warn("mfi_open"); - return (error); + goto error; } /* First, ask the firmware to allocate space for the flash file. */ @@ -158,14 +162,16 @@ flash_adapter(int ac, char **av) mfi_dcmd_command(fd, MFI_DCMD_FLASH_FW_OPEN, NULL, 0, mbox, 4, &status); if (status != MFI_STAT_OK) { warnx("Failed to alloc flash memory: %s", mfi_status(status)); - return (EIO); + error = EIO; + goto error; } /* Upload the file 64k at a time. */ buf = malloc(FLASH_BUF_SIZE); if (buf == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } offset = 0; while (sb.st_size > 0) { @@ -174,7 +180,8 @@ flash_adapter(int ac, char **av) warnx("Bad read from flash file"); mfi_dcmd_command(fd, MFI_DCMD_FLASH_FW_CLOSE, NULL, 0, NULL, 0, NULL); - return (ENXIO); + error = ENXIO; + goto error; } mbox_store_word(mbox, offset); @@ -184,12 +191,12 @@ flash_adapter(int ac, char **av) warnx("Flash download failed: %s", mfi_status(status)); mfi_dcmd_command(fd, MFI_DCMD_FLASH_FW_CLOSE, NULL, 0, NULL, 0, NULL); - return (ENXIO); + error = ENXIO; + goto error; } sb.st_size -= nread; offset += nread; } - close(flash); /* Kick off the flash. */ printf("WARNING: Firmware flash in progress, do not reboot machine... "); @@ -198,12 +205,17 @@ flash_adapter(int ac, char **av) NULL, 0, &status); if (status != MFI_STAT_OK) { printf("failed:\n\t%s\n", mfi_status(status)); - return (ENXIO); + error = ENXIO; + goto error; } printf("finished\n"); error = display_pending_firmware(fd); - close(fd); +error: + free(buf); + if (fd >= 0) + close(fd); + close(flash); return (error); } Modified: stable/8/usr.sbin/mfiutil/mfi_patrol.c ============================================================================== --- stable/8/usr.sbin/mfiutil/mfi_patrol.c Sat Jun 18 22:09:44 2011 (r223273) +++ stable/8/usr.sbin/mfiutil/mfi_patrol.c Sat Jun 18 22:12:17 2011 (r223274) @@ -96,8 +96,10 @@ show_patrol(int ac, char **av) time(&now); mfi_get_time(fd, &at); error = patrol_get_props(fd, &prop); - if (error) + if (error) { + close(fd); return (error); + } printf("Operation Mode: "); switch (prop.op_mode) { case MFI_PR_OPMODE_AUTO: @@ -128,6 +130,7 @@ show_patrol(int ac, char **av) sizeof(status), NULL, 0, NULL) < 0) { error = errno; warn("Failed to get patrol read properties"); + close(fd); return (error); } printf("Runs Completed: %u\n", status.num_iteration); @@ -153,6 +156,7 @@ show_patrol(int ac, char **av) if (mfi_pd_get_list(fd, &list, NULL) < 0) { error = errno; warn("Failed to get drive list"); + close(fd); return (error); } @@ -165,6 +169,8 @@ show_patrol(int ac, char **av) error = errno; warn("Failed to fetch info for drive %u", list->addr[i].device_id); + free(list); + close(fd); return (error); } if (info.prog_info.active & MFI_PD_PROGRESS_PATROL) { @@ -174,6 +180,7 @@ show_patrol(int ac, char **av) &info.prog_info.patrol); } } + free(list); } close(fd); @@ -198,6 +205,7 @@ start_patrol(int ac, char **av) 0) { error = errno; warn("Failed to start patrol read"); + close(fd); return (error); } @@ -223,6 +231,7 @@ stop_patrol(int ac, char **av) 0) { error = errno; warn("Failed to stop patrol read"); + close(fd); return (error); } @@ -290,8 +299,10 @@ patrol_config(int ac, char **av) } error = patrol_get_props(fd, &prop); - if (error) + if (error) { + close(fd); return (error); + } prop.op_mode = op_mode; if (op_mode == MFI_PR_OPMODE_AUTO) { if (ac > 2) @@ -299,8 +310,10 @@ patrol_config(int ac, char **av) if (ac > 3) { time(&now); mfi_get_time(fd, &at); - if (at == 0) + if (at == 0) { + close(fd); return (ENXIO); + } prop.next_exec = at + next_exec; printf("Starting next patrol read at %s", adapter_time(now, at, prop.next_exec)); @@ -310,6 +323,7 @@ patrol_config(int ac, char **av) sizeof(prop), NULL, 0, NULL) < 0) { error = errno; warn("Failed to set patrol read properties"); + close(fd); return (error); } Modified: stable/8/usr.sbin/mfiutil/mfi_show.c ============================================================================== --- stable/8/usr.sbin/mfiutil/mfi_show.c Sat Jun 18 22:09:44 2011 (r223273) +++ stable/8/usr.sbin/mfiutil/mfi_show.c Sat Jun 18 22:12:17 2011 (r223274) @@ -71,6 +71,7 @@ show_adapter(int ac, char **av) if (mfi_ctrl_get_info(fd, &info, NULL) < 0) { error = errno; warn("Failed to get controller info"); + close(fd); return (error); } printf("mfi%d Adapter:\n", mfi_unit); @@ -158,10 +159,12 @@ show_battery(int ac, char **av) sizeof(cap), NULL, 0, &status) < 0) { if (status == MFI_STAT_NO_HW_PRESENT) { printf("mfi%d: No battery present\n", mfi_unit); + close(fd); return (0); } error = errno; warn("Failed to get capacity info"); + close(fd); return (error); } @@ -169,13 +172,16 @@ show_battery(int ac, char **av) sizeof(design), NULL, 0, NULL) < 0) { error = errno; warn("Failed to get design info"); + close(fd); return (error); } if (mfi_dcmd_command(fd, MFI_DCMD_BBU_GET_STATUS, &stat, sizeof(stat), NULL, 0, NULL) < 0) { + error = errno; warn("Failed to get status"); - return (errno); + close(fd); + return (error); } printf("mfi%d: Battery State:\n", mfi_unit); @@ -307,6 +313,7 @@ show_config(int ac, char **av) if (mfi_config_read(fd, &config) < 0) { error = errno; warn("Failed to get config"); + close(fd); return (error); } @@ -375,6 +382,7 @@ show_config(int ac, char **av) printf("\n"); p += config->spares_size; } + free(config); close(fd); return (0); @@ -405,6 +413,7 @@ show_volumes(int ac, char **av) if (mfi_ld_get_list(fd, &list, NULL) < 0) { error = errno; warn("Failed to get volume list"); + close(fd); return (error); } @@ -430,6 +439,7 @@ show_volumes(int ac, char **av) error = errno; warn("Failed to get info for volume %d", list.ld_list[i].ld.v.target_id); + close(fd); return (error); } printf("%6s ", @@ -482,10 +492,11 @@ show_drives(int ac, char **av) return (error); } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 22:12:54 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 137AF106566C; Sat, 18 Jun 2011 22:12:54 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 012638FC17; Sat, 18 Jun 2011 22:12:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IMCrlk059360; Sat, 18 Jun 2011 22:12:53 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IMCref059352; Sat, 18 Jun 2011 22:12:53 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201106182212.p5IMCref059352@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sat, 18 Jun 2011 22:12:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223275 - stable/7/usr.sbin/mfiutil X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 22:12:54 -0000 Author: bz Date: Sat Jun 18 22:12:53 2011 New Revision: 223275 URL: http://svn.freebsd.org/changeset/base/223275 Log: MFC r219722 (by jhb): Preserve errno in an error case. Submitted by: gcooper MFC r222899: Contrary to when returning in all-good cases at the end of functions we did not free memory (1) or close the file descriptor (2) in error cases. Reported by: Mark Johnston (1) Reported by: attilio (2) Reviewed by: jhb Sponsored by: Sandvine Incorporated Modified: stable/7/usr.sbin/mfiutil/mfi_config.c stable/7/usr.sbin/mfiutil/mfi_drive.c stable/7/usr.sbin/mfiutil/mfi_evt.c stable/7/usr.sbin/mfiutil/mfi_flash.c stable/7/usr.sbin/mfiutil/mfi_patrol.c stable/7/usr.sbin/mfiutil/mfi_show.c stable/7/usr.sbin/mfiutil/mfi_volume.c Directory Properties: stable/7/usr.sbin/mfiutil/ (props changed) Modified: stable/7/usr.sbin/mfiutil/mfi_config.c ============================================================================== --- stable/7/usr.sbin/mfiutil/mfi_config.c Sat Jun 18 22:12:17 2011 (r223274) +++ stable/7/usr.sbin/mfiutil/mfi_config.c Sat Jun 18 22:12:53 2011 (r223275) @@ -85,6 +85,7 @@ mfi_config_read(int fd, struct mfi_confi { struct mfi_config_data *config; uint32_t config_size; + int error; /* * Keep fetching the config in a loop until we have a large enough @@ -97,8 +98,12 @@ fetch: if (config == NULL) return (-1); if (mfi_dcmd_command(fd, MFI_DCMD_CFG_READ, config, - config_size, NULL, 0, NULL) < 0) + config_size, NULL, 0, NULL) < 0) { + error = errno; + free(config); + errno = error; return (-1); + } if (config->size > config_size) { config_size = config->size; @@ -162,12 +167,14 @@ clear_config(int ac, char **av) if (!mfi_reconfig_supported()) { warnx("The current mfi(4) driver does not support " "configuration changes."); + close(fd); return (EOPNOTSUPP); } if (mfi_ld_get_list(fd, &list, NULL) < 0) { error = errno; warn("Failed to get volume list"); + close(fd); return (error); } @@ -175,6 +182,7 @@ clear_config(int ac, char **av) if (mfi_volume_busy(fd, list.ld_list[i].ld.v.target_id)) { warnx("Volume %s is busy and cannot be deleted", mfi_volume_name(fd, list.ld_list[i].ld.v.target_id)); + close(fd); return (EBUSY); } } @@ -185,12 +193,14 @@ clear_config(int ac, char **av) ch = getchar(); if (ch != 'y' && ch != 'Y') { printf("\nAborting\n"); + close(fd); return (0); } if (mfi_dcmd_command(fd, MFI_DCMD_CFG_CLEAR, NULL, 0, NULL, 0, NULL) < 0) { error = errno; warn("Failed to clear configuration"); + close(fd); return (error); } @@ -336,17 +346,21 @@ parse_array(int fd, int raid_type, char for (pinfo = info->drives; (cp = strsep(&array_str, ",")) != NULL; pinfo++) { error = mfi_lookup_drive(fd, cp, &device_id); - if (error) + if (error) { + free(info->drives); return (error); + } if (mfi_pd_get_info(fd, device_id, pinfo, NULL) < 0) { error = errno; warn("Failed to fetch drive info for drive %s", cp); + free(info->drives); return (error); } if (pinfo->fw_state != MFI_PD_STATE_UNCONFIGURED_GOOD) { warnx("Drive %u is not available", device_id); + free(info->drives); return (EINVAL); } } @@ -551,7 +565,12 @@ create_volume(int ac, char **av) return (EINVAL); } - + bzero(&state, sizeof(state)); + config = NULL; + arrays = NULL; + narrays = 0; + error = 0; + fd = mfi_open(mfi_unit); if (fd < 0) { error = errno; @@ -562,7 +581,8 @@ create_volume(int ac, char **av) if (!mfi_reconfig_supported()) { warnx("The current mfi(4) driver does not support " "configuration changes."); - return (EOPNOTSUPP); + error = EOPNOTSUPP; + goto error; } /* Lookup the RAID type first. */ @@ -575,7 +595,8 @@ create_volume(int ac, char **av) if (raid_type == -1) { warnx("Unknown or unsupported volume type %s", av[1]); - return (EINVAL); + error = EINVAL; + goto error; } /* Parse any options. */ @@ -603,7 +624,8 @@ create_volume(int ac, char **av) break; case '?': default: - return (EINVAL); + error = EINVAL; + goto error; } } ac -= optind; @@ -613,7 +635,8 @@ create_volume(int ac, char **av) narrays = ac; if (narrays == 0) { warnx("At least one drive list is required"); - return (EINVAL); + error = EINVAL; + goto error; } switch (raid_type) { case RT_RAID0: @@ -623,7 +646,8 @@ create_volume(int ac, char **av) case RT_CONCAT: if (narrays != 1) { warnx("Only one drive list can be specified"); - return (EINVAL); + error = EINVAL; + goto error; } break; case RT_RAID10: @@ -632,24 +656,27 @@ create_volume(int ac, char **av) if (narrays < 1) { warnx("RAID10, RAID50, and RAID60 require at least " "two drive lists"); - return (EINVAL); + error = EINVAL; + goto error; } if (narrays > MFI_MAX_SPAN_DEPTH) { warnx("Volume spans more than %d arrays", MFI_MAX_SPAN_DEPTH); - return (EINVAL); + error = EINVAL; + goto error; } break; } arrays = calloc(narrays, sizeof(*arrays)); if (arrays == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } for (i = 0; i < narrays; i++) { error = parse_array(fd, raid_type, av[i], &arrays[i]); if (error) - return (error); + goto error; } switch (raid_type) { @@ -660,7 +687,8 @@ create_volume(int ac, char **av) if (arrays[i].drive_count != arrays[0].drive_count) { warnx("All arrays must contain the same " "number of drives"); - return (EINVAL); + error = EINVAL; + goto error; } } break; @@ -673,7 +701,7 @@ create_volume(int ac, char **av) if (mfi_config_read(fd, &config) < 0) { error = errno; warn("Failed to read configuration"); - return (error); + goto error; } p = (char *)config->array; state.array_ref = 0xffff; @@ -683,7 +711,8 @@ create_volume(int ac, char **av) state.arrays = calloc(config->array_count, sizeof(int)); if (state.arrays == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } for (i = 0; i < config->array_count; i++) { ar = (struct mfi_array *)p; @@ -699,7 +728,8 @@ create_volume(int ac, char **av) state.volumes = calloc(config->log_drv_count, sizeof(int)); if (state.volumes == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } for (i = 0; i < config->log_drv_count; i++) { ld = (struct mfi_ld_config *)p; @@ -739,7 +769,8 @@ create_volume(int ac, char **av) config = calloc(1, config_size); if (config == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } config->size = config_size; config->array_count = narrays; @@ -776,21 +807,20 @@ create_volume(int ac, char **av) NULL, 0, NULL) < 0) { error = errno; warn("Failed to add volume"); - return (error); + /* FALLTHROUGH */ } +error: /* Clean up. */ free(config); - if (state.log_drv_count > 0) - free(state.volumes); - if (state.array_count > 0) - free(state.arrays); + free(state.volumes); + free(state.arrays); for (i = 0; i < narrays; i++) free(arrays[i].drives); free(arrays); close(fd); - return (0); + return (error); } MFI_COMMAND(top, create, create_volume); @@ -831,24 +861,28 @@ delete_volume(int ac, char **av) if (!mfi_reconfig_supported()) { warnx("The current mfi(4) driver does not support " "configuration changes."); + close(fd); return (EOPNOTSUPP); } if (mfi_lookup_volume(fd, av[1], &target_id) < 0) { error = errno; warn("Invalid volume %s", av[1]); + close(fd); return (error); } if (mfi_ld_get_info(fd, target_id, &info, NULL) < 0) { error = errno; warn("Failed to get info for volume %d", target_id); + close(fd); return (error); } if (mfi_volume_busy(fd, target_id)) { warnx("Volume %s is busy and cannot be deleted", mfi_volume_name(fd, target_id)); + close(fd); return (EBUSY); } @@ -857,6 +891,7 @@ delete_volume(int ac, char **av) sizeof(mbox), NULL) < 0) { error = errno; warn("Failed to delete volume"); + close(fd); return (error); } @@ -891,40 +926,44 @@ add_spare(int ac, char **av) return (error); } + config = NULL; + spare = NULL; error = mfi_lookup_drive(fd, av[1], &device_id); if (error) - return (error); + goto error; if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch drive info"); - return (error); + goto error; } if (info.fw_state != MFI_PD_STATE_UNCONFIGURED_GOOD) { warnx("Drive %u is not available", device_id); - return (EINVAL); + error = EINVAL; + goto error; } if (ac > 2) { if (mfi_lookup_volume(fd, av[2], &target_id) < 0) { error = errno; warn("Invalid volume %s", av[2]); - return (error); + goto error; } } if (mfi_config_read(fd, &config) < 0) { error = errno; warn("Failed to read configuration"); - return (error); + goto error; } spare = malloc(sizeof(struct mfi_spare) + sizeof(uint16_t) * config->array_count); if (spare == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } bzero(spare, sizeof(struct mfi_spare)); spare->ref = info.ref; @@ -937,7 +976,8 @@ add_spare(int ac, char **av) if (ar->size > info.coerced_size) { warnx("Spare isn't large enough for array %u", ar->array_ref); - return (EINVAL); + error = EINVAL; + goto error; } p += config->array_size; } @@ -950,7 +990,8 @@ add_spare(int ac, char **av) ld = mfi_config_lookup_volume(config, target_id); if (ld == NULL) { warnx("Did not find volume %d", target_id); - return (EINVAL); + error = EINVAL; + goto error; } spare->spare_type |= MFI_SPARE_DEDICATED; @@ -960,29 +1001,33 @@ add_spare(int ac, char **av) ld->span[i].array_ref); if (ar == NULL) { warnx("Missing array; inconsistent config?"); - return (ENXIO); + error = ENXIO; + goto error; } if (ar->size > info.coerced_size) { warnx("Spare isn't large enough for array %u", ar->array_ref); - return (EINVAL); + error = EINVAL; + goto error; } spare->array_ref[i] = ar->array_ref; } } - free(config); if (mfi_dcmd_command(fd, MFI_DCMD_CFG_MAKE_SPARE, spare, sizeof(struct mfi_spare) + sizeof(uint16_t) * spare->array_count, NULL, 0, NULL) < 0) { error = errno; warn("Failed to assign spare"); - return (error); + /* FALLTHROUGH. */ } +error: + free(spare); + free(config); close(fd); - return (0); + return (error); } MFI_COMMAND(top, add, add_spare); @@ -1007,18 +1052,22 @@ remove_spare(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } if (info.fw_state != MFI_PD_STATE_HOT_SPARE) { warnx("Drive %u is not a hot spare", device_id); + close(fd); return (EINVAL); } @@ -1027,6 +1076,7 @@ remove_spare(int ac, char **av) sizeof(mbox), NULL) < 0) { error = errno; warn("Failed to delete spare"); + close(fd); return (error); } @@ -1151,6 +1201,7 @@ debug_config(int ac, char **av) if (mfi_config_read(fd, &config) < 0) { error = errno; warn("Failed to get config"); + close(fd); return (error); } @@ -1190,17 +1241,21 @@ dump(int ac, char **av) warn("Failed to read debug command"); if (error == ENOENT) error = EOPNOTSUPP; + close(fd); return (error); } config = malloc(len); if (config == NULL) { warnx("malloc failed"); + close(fd); return (ENOMEM); } if (sysctlbyname(buf, config, &len, NULL, 0) < 0) { error = errno; warn("Failed to read debug command"); + free(config); + close(fd); return (error); } dump_config(fd, config); Modified: stable/7/usr.sbin/mfiutil/mfi_drive.c ============================================================================== --- stable/7/usr.sbin/mfiutil/mfi_drive.c Sat Jun 18 22:12:17 2011 (r223274) +++ stable/7/usr.sbin/mfiutil/mfi_drive.c Sat Jun 18 22:12:53 2011 (r223275) @@ -310,19 +310,23 @@ drive_set_state(char *drive, uint16_t ne } error = mfi_lookup_drive(fd, drive, &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } /* Try to change the state. */ if (info.fw_state == new_state) { warnx("Drive %u is already in the desired state", device_id); + close(fd); return (EINVAL); } @@ -334,6 +338,7 @@ drive_set_state(char *drive, uint16_t ne error = errno; warn("Failed to set drive %u to %s", device_id, mfi_pdstate(new_state)); + close(fd); return (error); } @@ -406,19 +411,23 @@ start_rebuild(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } /* Check the state, must be REBUILD. */ if (info.fw_state != MFI_PD_STATE_REBUILD) { warnx("Drive %d is not in the REBUILD state", device_id); + close(fd); return (EINVAL); } @@ -428,6 +437,7 @@ start_rebuild(int ac, char **av) NULL) < 0) { error = errno; warn("Failed to start rebuild on drive %u", device_id); + close(fd); return (error); } close(fd); @@ -458,19 +468,23 @@ abort_rebuild(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } /* Check the state, must be REBUILD. */ if (info.fw_state != MFI_PD_STATE_REBUILD) { warn("Drive %d is not in the REBUILD state", device_id); + close(fd); return (EINVAL); } @@ -480,6 +494,7 @@ abort_rebuild(int ac, char **av) NULL) < 0) { error = errno; warn("Failed to abort rebuild on drive %u", device_id); + close(fd); return (error); } close(fd); @@ -509,13 +524,16 @@ drive_progress(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } close(fd); @@ -570,13 +588,16 @@ drive_clear(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } /* Get the info for this drive. */ if (mfi_pd_get_info(fd, device_id, &info, NULL) < 0) { error = errno; warn("Failed to fetch info for drive %u", device_id); + close(fd); return (error); } @@ -586,6 +607,7 @@ drive_clear(int ac, char **av) warn("Failed to %s clear on drive %u", opcode == MFI_DCMD_PD_CLEAR_START ? "start" : "stop", device_id); + close(fd); return (error); } @@ -626,8 +648,10 @@ drive_locate(int ac, char **av) } error = mfi_lookup_drive(fd, av[1], &device_id); - if (error) + if (error) { + close(fd); return (error); + } mbox_store_device_id(&mbox[0], device_id); @@ -638,6 +662,7 @@ drive_locate(int ac, char **av) warn("Failed to %s locate on drive %u", opcode == MFI_DCMD_PD_LOCATE_START ? "start" : "stop", device_id); + close(fd); return (error); } close(fd); Modified: stable/7/usr.sbin/mfiutil/mfi_evt.c ============================================================================== --- stable/7/usr.sbin/mfiutil/mfi_evt.c Sat Jun 18 22:12:17 2011 (r223274) +++ stable/7/usr.sbin/mfiutil/mfi_evt.c Sat Jun 18 22:12:53 2011 (r223275) @@ -83,6 +83,7 @@ show_logstate(int ac, char **av) if (mfi_event_get_info(fd, &info, NULL) < 0) { error = errno; warn("Failed to get event log info"); + close(fd); return (error); } @@ -550,6 +551,7 @@ show_events(int ac, char **av) if (mfi_event_get_info(fd, &info, NULL) < 0) { error = errno; warn("Failed to get event log info"); + close(fd); return (error); } @@ -570,6 +572,7 @@ show_events(int ac, char **av) if (parse_class(optarg, &filter.members.class) < 0) { error = errno; warn("Error parsing event class"); + close(fd); return (error); } break; @@ -577,6 +580,7 @@ show_events(int ac, char **av) if (parse_locale(optarg, &filter.members.locale) < 0) { error = errno; warn("Error parsing event locale"); + close(fd); return (error); } break; @@ -584,6 +588,7 @@ show_events(int ac, char **av) val = strtol(optarg, &cp, 0); if (*cp != '\0' || val <= 0) { warnx("Invalid event count"); + close(fd); return (EINVAL); } num_events = val; @@ -593,6 +598,7 @@ show_events(int ac, char **av) break; case '?': default: + close(fd); return (EINVAL); } } @@ -604,28 +610,33 @@ show_events(int ac, char **av) (num_events - 1); if (size > getpagesize()) { warnx("Event count is too high"); + close(fd); return (EINVAL); } /* Handle optional start and stop sequence numbers. */ if (ac > 2) { warnx("show events: extra arguments"); + close(fd); return (EINVAL); } if (ac > 0 && parse_seq(&info, av[0], &start) < 0) { error = errno; warn("Error parsing starting sequence number"); + close(fd); return (error); } if (ac > 1 && parse_seq(&info, av[1], &stop) < 0) { error = errno; warn("Error parsing ending sequence number"); + close(fd); return (error); } list = malloc(size); if (list == NULL) { warnx("malloc failed"); + close(fd); return (ENOMEM); } for (seq = start;;) { @@ -633,6 +644,8 @@ show_events(int ac, char **av) &status) < 0) { error = errno; warn("Failed to fetch events"); + free(list); + close(fd); return (error); } if (status == MFI_STAT_NOT_FOUND) { @@ -642,6 +655,8 @@ show_events(int ac, char **av) } if (status != MFI_STAT_OK) { warnx("Error fetching events: %s", mfi_status(status)); + free(list); + close(fd); return (EIO); } Modified: stable/7/usr.sbin/mfiutil/mfi_flash.c ============================================================================== --- stable/7/usr.sbin/mfiutil/mfi_flash.c Sat Jun 18 22:12:17 2011 (r223274) +++ stable/7/usr.sbin/mfiutil/mfi_flash.c Sat Jun 18 22:12:53 2011 (r223275) @@ -136,21 +136,25 @@ flash_adapter(int ac, char **av) return (error); } + buf = NULL; + fd = -1; + if (fstat(flash, &sb) < 0) { error = errno; warn("fstat(%s)", av[1]); - return (error); + goto error; } if (sb.st_size % 1024 != 0 || sb.st_size > 0x7fffffff) { warnx("Invalid flash file size"); - return (EINVAL); + error = EINVAL; + goto error; } fd = mfi_open(mfi_unit); if (fd < 0) { error = errno; warn("mfi_open"); - return (error); + goto error; } /* First, ask the firmware to allocate space for the flash file. */ @@ -158,14 +162,16 @@ flash_adapter(int ac, char **av) mfi_dcmd_command(fd, MFI_DCMD_FLASH_FW_OPEN, NULL, 0, mbox, 4, &status); if (status != MFI_STAT_OK) { warnx("Failed to alloc flash memory: %s", mfi_status(status)); - return (EIO); + error = EIO; + goto error; } /* Upload the file 64k at a time. */ buf = malloc(FLASH_BUF_SIZE); if (buf == NULL) { warnx("malloc failed"); - return (ENOMEM); + error = ENOMEM; + goto error; } offset = 0; while (sb.st_size > 0) { @@ -174,7 +180,8 @@ flash_adapter(int ac, char **av) warnx("Bad read from flash file"); mfi_dcmd_command(fd, MFI_DCMD_FLASH_FW_CLOSE, NULL, 0, NULL, 0, NULL); - return (ENXIO); + error = ENXIO; + goto error; } mbox_store_word(mbox, offset); @@ -184,12 +191,12 @@ flash_adapter(int ac, char **av) warnx("Flash download failed: %s", mfi_status(status)); mfi_dcmd_command(fd, MFI_DCMD_FLASH_FW_CLOSE, NULL, 0, NULL, 0, NULL); - return (ENXIO); + error = ENXIO; + goto error; } sb.st_size -= nread; offset += nread; } - close(flash); /* Kick off the flash. */ printf("WARNING: Firmware flash in progress, do not reboot machine... "); @@ -198,12 +205,17 @@ flash_adapter(int ac, char **av) NULL, 0, &status); if (status != MFI_STAT_OK) { printf("failed:\n\t%s\n", mfi_status(status)); - return (ENXIO); + error = ENXIO; + goto error; } printf("finished\n"); error = display_pending_firmware(fd); - close(fd); +error: + free(buf); + if (fd >= 0) + close(fd); + close(flash); return (error); } Modified: stable/7/usr.sbin/mfiutil/mfi_patrol.c ============================================================================== --- stable/7/usr.sbin/mfiutil/mfi_patrol.c Sat Jun 18 22:12:17 2011 (r223274) +++ stable/7/usr.sbin/mfiutil/mfi_patrol.c Sat Jun 18 22:12:53 2011 (r223275) @@ -96,8 +96,10 @@ show_patrol(int ac, char **av) time(&now); mfi_get_time(fd, &at); error = patrol_get_props(fd, &prop); - if (error) + if (error) { + close(fd); return (error); + } printf("Operation Mode: "); switch (prop.op_mode) { case MFI_PR_OPMODE_AUTO: @@ -128,6 +130,7 @@ show_patrol(int ac, char **av) sizeof(status), NULL, 0, NULL) < 0) { error = errno; warn("Failed to get patrol read properties"); + close(fd); return (error); } printf("Runs Completed: %u\n", status.num_iteration); @@ -153,6 +156,7 @@ show_patrol(int ac, char **av) if (mfi_pd_get_list(fd, &list, NULL) < 0) { error = errno; warn("Failed to get drive list"); + close(fd); return (error); } @@ -165,6 +169,8 @@ show_patrol(int ac, char **av) error = errno; warn("Failed to fetch info for drive %u", list->addr[i].device_id); + free(list); + close(fd); return (error); } if (info.prog_info.active & MFI_PD_PROGRESS_PATROL) { @@ -174,6 +180,7 @@ show_patrol(int ac, char **av) &info.prog_info.patrol); } } + free(list); } close(fd); @@ -198,6 +205,7 @@ start_patrol(int ac, char **av) 0) { error = errno; warn("Failed to start patrol read"); + close(fd); return (error); } @@ -223,6 +231,7 @@ stop_patrol(int ac, char **av) 0) { error = errno; warn("Failed to stop patrol read"); + close(fd); return (error); } @@ -290,8 +299,10 @@ patrol_config(int ac, char **av) } error = patrol_get_props(fd, &prop); - if (error) + if (error) { + close(fd); return (error); + } prop.op_mode = op_mode; if (op_mode == MFI_PR_OPMODE_AUTO) { if (ac > 2) @@ -299,8 +310,10 @@ patrol_config(int ac, char **av) if (ac > 3) { time(&now); mfi_get_time(fd, &at); - if (at == 0) + if (at == 0) { + close(fd); return (ENXIO); + } prop.next_exec = at + next_exec; printf("Starting next patrol read at %s", adapter_time(now, at, prop.next_exec)); @@ -310,6 +323,7 @@ patrol_config(int ac, char **av) sizeof(prop), NULL, 0, NULL) < 0) { error = errno; warn("Failed to set patrol read properties"); + close(fd); return (error); } Modified: stable/7/usr.sbin/mfiutil/mfi_show.c ============================================================================== --- stable/7/usr.sbin/mfiutil/mfi_show.c Sat Jun 18 22:12:17 2011 (r223274) +++ stable/7/usr.sbin/mfiutil/mfi_show.c Sat Jun 18 22:12:53 2011 (r223275) @@ -71,6 +71,7 @@ show_adapter(int ac, char **av) if (mfi_ctrl_get_info(fd, &info, NULL) < 0) { error = errno; warn("Failed to get controller info"); + close(fd); return (error); } printf("mfi%d Adapter:\n", mfi_unit); @@ -158,10 +159,12 @@ show_battery(int ac, char **av) sizeof(cap), NULL, 0, &status) < 0) { if (status == MFI_STAT_NO_HW_PRESENT) { printf("mfi%d: No battery present\n", mfi_unit); + close(fd); return (0); } error = errno; warn("Failed to get capacity info"); + close(fd); return (error); } @@ -169,13 +172,16 @@ show_battery(int ac, char **av) sizeof(design), NULL, 0, NULL) < 0) { error = errno; warn("Failed to get design info"); + close(fd); return (error); } if (mfi_dcmd_command(fd, MFI_DCMD_BBU_GET_STATUS, &stat, sizeof(stat), NULL, 0, NULL) < 0) { + error = errno; warn("Failed to get status"); - return (errno); + close(fd); + return (error); } printf("mfi%d: Battery State:\n", mfi_unit); @@ -307,6 +313,7 @@ show_config(int ac, char **av) if (mfi_config_read(fd, &config) < 0) { error = errno; warn("Failed to get config"); + close(fd); return (error); } @@ -375,6 +382,7 @@ show_config(int ac, char **av) printf("\n"); p += config->spares_size; } + free(config); close(fd); return (0); @@ -405,6 +413,7 @@ show_volumes(int ac, char **av) if (mfi_ld_get_list(fd, &list, NULL) < 0) { error = errno; warn("Failed to get volume list"); + close(fd); return (error); } @@ -430,6 +439,7 @@ show_volumes(int ac, char **av) error = errno; warn("Failed to get info for volume %d", list.ld_list[i].ld.v.target_id); + close(fd); return (error); } printf("%6s ", @@ -482,10 +492,11 @@ show_drives(int ac, char **av) return (error); } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 22:16:55 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CEDD91065670; Sat, 18 Jun 2011 22:16:55 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A543F8FC13; Sat, 18 Jun 2011 22:16:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IMGt5N059518; Sat, 18 Jun 2011 22:16:55 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IMGtaR059515; Sat, 18 Jun 2011 22:16:55 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106182216.p5IMGtaR059515@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 18 Jun 2011 22:16:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223276 - head/lib/libprocstat X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 22:16:55 -0000 Author: jilles Date: Sat Jun 18 22:16:55 2011 New Revision: 223276 URL: http://svn.freebsd.org/changeset/base/223276 Log: libprocstat: Fix typo in error messages. Modified: head/lib/libprocstat/libprocstat.c Modified: head/lib/libprocstat/libprocstat.c ============================================================================== --- head/lib/libprocstat/libprocstat.c Sat Jun 18 22:12:53 2011 (r223275) +++ head/lib/libprocstat/libprocstat.c Sat Jun 18 22:16:55 2011 (r223276) @@ -229,7 +229,7 @@ procstat_getprocs(struct procstat *procs *count = len / sizeof(*p); return (p); } else { - warnx("unknown access method"); + warnx("unknown access method: %d", procstat->type); return (NULL); } fail: @@ -726,7 +726,7 @@ procstat_get_pipe_info(struct procstat * } else if (procstat->type == PROCSTAT_SYSCTL) { return (procstat_get_pipe_info_sysctl(fst, ps, errbuf)); } else { - warnx("unknow access method: %d", procstat->type); + warnx("unknown access method: %d", procstat->type); snprintf(errbuf, _POSIX2_LINE_MAX, "error"); return (1); } @@ -790,7 +790,7 @@ procstat_get_pts_info(struct procstat *p } else if (procstat->type == PROCSTAT_SYSCTL) { return (procstat_get_pts_info_sysctl(fst, pts, errbuf)); } else { - warnx("unknow access method: %d", procstat->type); + warnx("unknown access method: %d", procstat->type); snprintf(errbuf, _POSIX2_LINE_MAX, "error"); return (1); } @@ -852,7 +852,7 @@ procstat_get_vnode_info(struct procstat } else if (procstat->type == PROCSTAT_SYSCTL) { return (procstat_get_vnode_info_sysctl(fst, vn, errbuf)); } else { - warnx("unknow access method: %d", procstat->type); + warnx("unknown access method: %d", procstat->type); snprintf(errbuf, _POSIX2_LINE_MAX, "error"); return (1); } @@ -1059,7 +1059,7 @@ procstat_get_socket_info(struct procstat } else if (procstat->type == PROCSTAT_SYSCTL) { return (procstat_get_socket_info_sysctl(fst, sock, errbuf)); } else { - warnx("unknow access method: %d", procstat->type); + warnx("unknown access method: %d", procstat->type); snprintf(errbuf, _POSIX2_LINE_MAX, "error"); return (1); } From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 22:26:58 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D376F106564A; Sat, 18 Jun 2011 22:26:58 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C34FC8FC14; Sat, 18 Jun 2011 22:26:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IMQwJJ059849; Sat, 18 Jun 2011 22:26:58 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IMQwoV059847; Sat, 18 Jun 2011 22:26:58 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201106182226.p5IMQwoV059847@svn.freebsd.org> From: Konstantin Belousov Date: Sat, 18 Jun 2011 22:26:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223277 - head/sys/cam/ata X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 22:26:58 -0000 Author: kib Date: Sat Jun 18 22:26:58 2011 New Revision: 223277 URL: http://svn.freebsd.org/changeset/base/223277 Log: Fix a typo in adagetattr() from r223089. In particular, this restores the ability to use ahci(4) for kernel dumps. Modified: head/sys/cam/ata/ata_da.c Modified: head/sys/cam/ata/ata_da.c ============================================================================== --- head/sys/cam/ata/ata_da.c Sat Jun 18 22:16:55 2011 (r223276) +++ head/sys/cam/ata/ata_da.c Sat Jun 18 22:26:58 2011 (r223277) @@ -818,7 +818,7 @@ adagetattr(struct bio *bp) int ret = -1; struct cam_periph *periph; - if (bp->bio_disk == NULL || bp->bio_disk->d_drv1) + if (bp->bio_disk == NULL || bp->bio_disk->d_drv1 == NULL) return ENXIO; periph = (struct cam_periph *)bp->bio_disk->d_drv1; if (periph->path == NULL) From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 22:32:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6C03A1065688; Sat, 18 Jun 2011 22:32:56 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 430DD8FC17; Sat, 18 Jun 2011 22:32:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IMWuA0060055; Sat, 18 Jun 2011 22:32:56 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IMWu87060053; Sat, 18 Jun 2011 22:32:56 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201106182232.p5IMWu87060053@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sat, 18 Jun 2011 22:32:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223278 - head/sbin/ddb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 22:32:56 -0000 Author: pjd Date: Sat Jun 18 22:32:55 2011 New Revision: 223278 URL: http://svn.freebsd.org/changeset/base/223278 Log: Correct subcommand name 'unset' -> 'unscript'. Modified: head/sbin/ddb/ddb.8 Modified: head/sbin/ddb/ddb.8 ============================================================================== --- head/sbin/ddb/ddb.8 Sat Jun 18 22:26:58 2011 (r223277) +++ head/sbin/ddb/ddb.8 Sat Jun 18 22:32:55 2011 (r223278) @@ -126,7 +126,7 @@ it is advisable to enclose in quotes. .It Cm scripts List currently defined scripts. -.It Cm unset Ar scriptname +.It Cm unscript Ar scriptname Delete the script named .Ar scriptname . .El From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 23:01:26 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9CA59106566C; Sat, 18 Jun 2011 23:01:26 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8C1968FC0C; Sat, 18 Jun 2011 23:01:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IN1Q82062310; Sat, 18 Jun 2011 23:01:26 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IN1QQY062308; Sat, 18 Jun 2011 23:01:26 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106182301.p5IN1QQY062308@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 18 Jun 2011 23:01:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223279 - head/lib/libprocstat X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 23:01:26 -0000 Author: jilles Date: Sat Jun 18 23:01:26 2011 New Revision: 223279 URL: http://svn.freebsd.org/changeset/base/223279 Log: libprocstat: For MAP_PRIVATE, do not consider the file open for writing. If a file is mapped with with MAP_PRIVATE, no write permission is required and changes do not end up in the file. Therefore, tools like fuser and fstat should not show the file as open for writing. The protection as displayed by procstat -v still includes write in this case, and shows 'C' for copy-on-write. Modified: head/lib/libprocstat/libprocstat.c Modified: head/lib/libprocstat/libprocstat.c ============================================================================== --- head/lib/libprocstat/libprocstat.c Sat Jun 18 22:32:55 2011 (r223278) +++ head/lib/libprocstat/libprocstat.c Sat Jun 18 23:01:26 2011 (r223279) @@ -522,7 +522,8 @@ do_mmapped: fflags = 0; if (prot & VM_PROT_READ) fflags = PS_FST_FFLAG_READ; - if (prot & VM_PROT_WRITE) + if ((vmentry.eflags & MAP_ENTRY_COW) == 0 && + prot & VM_PROT_WRITE) fflags |= PS_FST_FFLAG_WRITE; /* @@ -696,7 +697,8 @@ procstat_getfiles_sysctl(struct procstat fflags = 0; if (kve->kve_protection & KVME_PROT_READ) fflags = PS_FST_FFLAG_READ; - if (kve->kve_protection & KVME_PROT_WRITE) + if ((kve->kve_flags & KVME_FLAG_COW) == 0 && + kve->kve_protection & KVME_PROT_WRITE) fflags |= PS_FST_FFLAG_WRITE; offset = kve->kve_offset; refcount = kve->kve_ref_count; From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 23:02:53 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C1B4D1065674; Sat, 18 Jun 2011 23:02:53 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AE6E98FC08; Sat, 18 Jun 2011 23:02:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5IN2rOg062567; Sat, 18 Jun 2011 23:02:53 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5IN2rWH062556; Sat, 18 Jun 2011 23:02:53 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201106182302.p5IN2rWH062556@svn.freebsd.org> From: Rick Macklem Date: Sat, 18 Jun 2011 23:02:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223280 - in head/sys: fs/nfs fs/nfsclient modules/dtrace modules/dtrace/dtnfscl modules/dtrace/dtraceall sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 23:02:53 -0000 Author: rmacklem Date: Sat Jun 18 23:02:53 2011 New Revision: 223280 URL: http://svn.freebsd.org/changeset/base/223280 Log: Add DTrace support to the new NFS client. This is essentially cloned from the old NFS client, plus additions for NFSv4. A review of this code is in progress, however it was felt by the reviewer that it could go in now, before code slush. Any changes required by the review can be committed as bug fixes later. Added: head/sys/fs/nfsclient/nfs_clkdtrace.c (contents, props changed) head/sys/fs/nfsclient/nfs_kdtrace.h (contents, props changed) head/sys/modules/dtrace/dtnfscl/ head/sys/modules/dtrace/dtnfscl/Makefile (contents, props changed) Modified: head/sys/fs/nfs/nfs_commonkrpc.c head/sys/fs/nfs/nfsport.h head/sys/fs/nfs/nfsproto.h head/sys/fs/nfsclient/nfs_clbio.c head/sys/fs/nfsclient/nfs_clnode.c head/sys/fs/nfsclient/nfs_clport.c head/sys/fs/nfsclient/nfs_clsubs.c head/sys/fs/nfsclient/nfs_clvnops.c head/sys/modules/dtrace/Makefile head/sys/modules/dtrace/dtraceall/dtraceall.c head/sys/sys/dtrace_bsd.h Modified: head/sys/fs/nfs/nfs_commonkrpc.c ============================================================================== --- head/sys/fs/nfs/nfs_commonkrpc.c Sat Jun 18 23:01:26 2011 (r223279) +++ head/sys/fs/nfs/nfs_commonkrpc.c Sat Jun 18 23:02:53 2011 (r223280) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); */ #include "opt_inet6.h" +#include "opt_kdtrace.h" #include "opt_kgssapi.h" #include "opt_nfs.h" @@ -64,6 +65,28 @@ __FBSDID("$FreeBSD$"); #include +#ifdef KDTRACE_HOOKS +#include + +dtrace_nfsclient_nfs23_start_probe_func_t + dtrace_nfscl_nfs234_start_probe; + +dtrace_nfsclient_nfs23_done_probe_func_t + dtrace_nfscl_nfs234_done_probe; + +/* + * Registered probes by RPC type. + */ +uint32_t nfscl_nfs2_start_probes[NFS_NPROCS + 1]; +uint32_t nfscl_nfs2_done_probes[NFS_NPROCS + 1]; + +uint32_t nfscl_nfs3_start_probes[NFS_NPROCS + 1]; +uint32_t nfscl_nfs3_done_probes[NFS_NPROCS + 1]; + +uint32_t nfscl_nfs4_start_probes[NFS_NPROCS + 1]; +uint32_t nfscl_nfs4_done_probes[NFS_NPROCS + 1]; +#endif + NFSSTATESPINLOCK; NFSREQSPINLOCK; extern struct nfsstats newnfsstats; @@ -568,6 +591,29 @@ newnfs_request(struct nfsrv_descript *nd if ((nd->nd_flag & ND_NFSV4) && procnum == NFSV4PROC_COMPOUND) MALLOC(rep, struct nfsreq *, sizeof(struct nfsreq), M_NFSDREQ, M_WAITOK); +#ifdef KDTRACE_HOOKS + if (dtrace_nfscl_nfs234_start_probe != NULL) { + uint32_t probe_id; + int probe_procnum; + + if (nd->nd_flag & ND_NFSV4) { + probe_id = + nfscl_nfs4_start_probes[nd->nd_procnum]; + probe_procnum = nd->nd_procnum; + } else if (nd->nd_flag & ND_NFSV3) { + probe_id = nfscl_nfs3_start_probes[procnum]; + probe_procnum = procnum; + } else { + probe_id = + nfscl_nfs2_start_probes[nd->nd_procnum]; + probe_procnum = procnum; + } + if (probe_id != 0) + (dtrace_nfscl_nfs234_start_probe) + (probe_id, vp, nd->nd_mreq, cred, + probe_procnum); + } +#endif } trycnt = 0; tryagain: @@ -762,6 +808,27 @@ tryagain: } } +#ifdef KDTRACE_HOOKS + if (nmp != NULL && dtrace_nfscl_nfs234_done_probe != NULL) { + uint32_t probe_id; + int probe_procnum; + + if (nd->nd_flag & ND_NFSV4) { + probe_id = nfscl_nfs4_done_probes[nd->nd_procnum]; + probe_procnum = nd->nd_procnum; + } else if (nd->nd_flag & ND_NFSV3) { + probe_id = nfscl_nfs3_done_probes[procnum]; + probe_procnum = procnum; + } else { + probe_id = nfscl_nfs2_done_probes[nd->nd_procnum]; + probe_procnum = procnum; + } + if (probe_id != 0) + (dtrace_nfscl_nfs234_done_probe)(probe_id, vp, + nd->nd_mreq, cred, probe_procnum, 0); + } +#endif + m_freem(nd->nd_mreq); AUTH_DESTROY(auth); if (rep != NULL) Modified: head/sys/fs/nfs/nfsport.h ============================================================================== --- head/sys/fs/nfs/nfsport.h Sat Jun 18 23:01:26 2011 (r223279) +++ head/sys/fs/nfs/nfsport.h Sat Jun 18 23:02:53 2011 (r223280) @@ -267,6 +267,7 @@ * NFS_V3NPROCS is one greater than the last V3 op and NFS_NPROCS is * one greater than the last number. */ +#ifndef NFS_V3NPROCS #define NFS_V3NPROCS 22 #define NFSPROC_LOOKUPP 22 @@ -293,6 +294,7 @@ * Must be defined as one higher than the last Proc# above. */ #define NFSV4_NPROCS 41 +#endif /* NFS_V3NPROCS */ /* * Stats structure @@ -358,7 +360,9 @@ struct ext_nfsstats { /* * Define NFS_NPROCS as NFSV4_NPROCS for the experimental kernel code. */ +#ifndef NFS_NPROCS #define NFS_NPROCS NFSV4_NPROCS +#endif #include #include Modified: head/sys/fs/nfs/nfsproto.h ============================================================================== --- head/sys/fs/nfs/nfsproto.h Sat Jun 18 23:01:26 2011 (r223279) +++ head/sys/fs/nfs/nfsproto.h Sat Jun 18 23:02:53 2011 (r223280) @@ -226,6 +226,48 @@ #define NFSPROC_COMMIT 21 /* + * The lower numbers -> 21 are used by NFSv2 and v3. These define higher + * numbers used by NFSv4. + * NFS_V3NPROCS is one greater than the last V3 op and NFS_NPROCS is + * one greater than the last number. + */ +#ifndef NFS_V3NPROCS +#define NFS_V3NPROCS 22 + +#define NFSPROC_LOOKUPP 22 +#define NFSPROC_SETCLIENTID 23 +#define NFSPROC_SETCLIENTIDCFRM 24 +#define NFSPROC_LOCK 25 +#define NFSPROC_LOCKU 26 +#define NFSPROC_OPEN 27 +#define NFSPROC_CLOSE 28 +#define NFSPROC_OPENCONFIRM 29 +#define NFSPROC_LOCKT 30 +#define NFSPROC_OPENDOWNGRADE 31 +#define NFSPROC_RENEW 32 +#define NFSPROC_PUTROOTFH 33 +#define NFSPROC_RELEASELCKOWN 34 +#define NFSPROC_DELEGRETURN 35 +#define NFSPROC_RETDELEGREMOVE 36 +#define NFSPROC_RETDELEGRENAME1 37 +#define NFSPROC_RETDELEGRENAME2 38 +#define NFSPROC_GETACL 39 +#define NFSPROC_SETACL 40 + +/* + * Must be defined as one higher than the last Proc# above. + */ +#define NFSV4_NPROCS 41 +#endif /* NFS_V3NPROCS */ + +/* + * Define NFS_NPROCS as NFSV4_NPROCS for the experimental kernel code. + */ +#ifndef NFS_NPROCS +#define NFS_NPROCS NFSV4_NPROCS +#endif + +/* * NFSPROC_NOOP is a fake op# that can't be the same as any V2/3/4 Procedure * or Operation#. Since the NFS V4 Op #s go higher, use NFSV4OP_NOPS, which * is one greater than the highest Op#. Modified: head/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- head/sys/fs/nfsclient/nfs_clbio.c Sat Jun 18 23:01:26 2011 (r223279) +++ head/sys/fs/nfsclient/nfs_clbio.c Sat Jun 18 23:02:53 2011 (r223280) @@ -35,6 +35,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_kdtrace.h" + #include #include #include @@ -55,6 +57,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include extern int newnfs_directio_allow_mmap; extern struct nfsstats newnfsstats; @@ -399,6 +402,7 @@ nfs_bioread_check_cons(struct vnode *vp, goto out; } np->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); error = VOP_GETATTR(vp, &vattr, cred); if (error) goto out; @@ -915,6 +919,7 @@ ncl_write(struct vop_write_args *ap) #endif flush_and_restart: np->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); error = ncl_vinvalbuf(vp, V_SAVE, td, 1); if (error) return (error); @@ -928,6 +933,7 @@ flush_and_restart: */ if (ioflag & IO_APPEND) { np->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); error = VOP_GETATTR(vp, &vattr, cred); if (error) return (error); @@ -1748,6 +1754,7 @@ ncl_doio(struct vnode *vp, struct buf *b mtx_lock(&np->n_mtx); np->n_flag |= NWRITEERR; np->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); mtx_unlock(&np->n_mtx); } bp->b_dirtyoff = bp->b_dirtyend = 0; Added: head/sys/fs/nfsclient/nfs_clkdtrace.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/fs/nfsclient/nfs_clkdtrace.c Sat Jun 18 23:02:53 2011 (r223280) @@ -0,0 +1,600 @@ +/*- + * Copyright (c) 2009 Robert N. M. Watson + * All rights reserved. + * + * This software was developed at the University of Cambridge Computer + * Laboratory with support from a grant from Google, Inc. + * + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include + +/* + * dtnfscl is a DTrace provider that tracks the intent to perform RPCs + * in the NFS client, as well as acess to and maintenance of the access and + * attribute caches. This is not quite the same as RPCs, because NFS may + * issue multiple RPC transactions in the event that authentication fails, + * there's a jukebox error, or none at all if the access or attribute cache + * hits. However, it cleanly represents the logical layer between RPC + * transmission and vnode/vfs operations, providing access to state linking + * the two. + */ + +static int dtnfsclient_unload(void); +static void dtnfsclient_getargdesc(void *, dtrace_id_t, void *, + dtrace_argdesc_t *); +static void dtnfsclient_provide(void *, dtrace_probedesc_t *); +static void dtnfsclient_destroy(void *, dtrace_id_t, void *); +static void dtnfsclient_enable(void *, dtrace_id_t, void *); +static void dtnfsclient_disable(void *, dtrace_id_t, void *); +static void dtnfsclient_load(void *); + +static dtrace_pattr_t dtnfsclient_attr = { +{ DTRACE_STABILITY_STABLE, DTRACE_STABILITY_STABLE, DTRACE_CLASS_COMMON }, +{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN }, +{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN }, +{ DTRACE_STABILITY_STABLE, DTRACE_STABILITY_STABLE, DTRACE_CLASS_COMMON }, +{ DTRACE_STABILITY_STABLE, DTRACE_STABILITY_STABLE, DTRACE_CLASS_COMMON }, +}; + +/* + * Description of NFSv4, NFSv3 and (optional) NFSv2 probes for a procedure. + */ +struct dtnfsclient_rpc { + char *nr_v4_name; + char *nr_v3_name; /* Or NULL if none. */ + char *nr_v2_name; /* Or NULL if none. */ + + /* + * IDs for the start and done cases, for NFSv2, NFSv3 and NFSv4. + */ + uint32_t nr_v2_id_start, nr_v2_id_done; + uint32_t nr_v3_id_start, nr_v3_id_done; + uint32_t nr_v4_id_start, nr_v4_id_done; +}; + +/* + * This table is indexed by NFSv3 procedure number, but also used for NFSv2 + * procedure names and NFSv4 operations. + */ +static struct dtnfsclient_rpc dtnfsclient_rpcs[NFS_NPROCS + 1] = { + { "null", "null", "null" }, + { "getattr", "getattr", "getattr" }, + { "setattr", "setattr", "setattr" }, + { "lookup", "lookup", "lookup" }, + { "access", "access", "noop" }, + { "readlink", "readlink", "readlink" }, + { "read", "read", "read" }, + { "write", "write", "write" }, + { "create", "create", "create" }, + { "mkdir", "mkdir", "mkdir" }, + { "symlink", "symlink", "symlink" }, + { "mknod", "mknod" }, + { "remove", "remove", "remove" }, + { "rmdir", "rmdir", "rmdir" }, + { "rename", "rename", "rename" }, + { "link", "link", "link" }, + { "readdir", "readdir", "readdir" }, + { "readdirplus", "readdirplus" }, + { "fsstat", "fsstat", "statfs" }, + { "fsinfo", "fsinfo" }, + { "pathconf", "pathconf" }, + { "commit", "commit" }, + { "lookupp" }, + { "setclientid" }, + { "setclientidcfrm" }, + { "lock" }, + { "locku" }, + { "open" }, + { "close" }, + { "openconfirm" }, + { "lockt" }, + { "opendowngrade" }, + { "renew" }, + { "putrootfh" }, + { "releaselckown" }, + { "delegreturn" }, + { "retdelegremove" }, + { "retdelegrename1" }, + { "retdelegrename2" }, + { "getacl" }, + { "setacl" }, + { "noop", "noop", "noop" } +}; + +/* + * Module name strings. + */ +static char *dtnfsclient_accesscache_str = "accesscache"; +static char *dtnfsclient_attrcache_str = "attrcache"; +static char *dtnfsclient_nfs2_str = "nfs2"; +static char *dtnfsclient_nfs3_str = "nfs3"; +static char *dtnfsclient_nfs4_str = "nfs4"; + +/* + * Function name strings. + */ +static char *dtnfsclient_flush_str = "flush"; +static char *dtnfsclient_load_str = "load"; +static char *dtnfsclient_get_str = "get"; + +/* + * Name strings. + */ +static char *dtnfsclient_done_str = "done"; +static char *dtnfsclient_hit_str = "hit"; +static char *dtnfsclient_miss_str = "miss"; +static char *dtnfsclient_start_str = "start"; + +static dtrace_pops_t dtnfsclient_pops = { + dtnfsclient_provide, + NULL, + dtnfsclient_enable, + dtnfsclient_disable, + NULL, + NULL, + dtnfsclient_getargdesc, + NULL, + NULL, + dtnfsclient_destroy +}; + +static dtrace_provider_id_t dtnfsclient_id; + +/* + * Most probes are generated from the above RPC table, but for access and + * attribute caches, we have specific IDs we recognize and handle specially + * in various spots. + */ +extern uint32_t nfscl_accesscache_flush_done_id; +extern uint32_t nfscl_accesscache_get_hit_id; +extern uint32_t nfscl_accesscache_get_miss_id; +extern uint32_t nfscl_accesscache_load_done_id; + +extern uint32_t nfscl_attrcache_flush_done_id; +extern uint32_t nfscl_attrcache_get_hit_id; +extern uint32_t nfscl_attrcache_get_miss_id; +extern uint32_t nfscl_attrcache_load_done_id; + +/* + * When tracing on a procedure is enabled, the DTrace ID for an RPC event is + * stored in one of these two NFS client-allocated arrays; 0 indicates that + * the event is not being traced so probes should not be called. + * + * For simplicity, we allocate both v2, v3 and v4 arrays as NFS_NPROCS + 1, and + * the v2, v3 arrays are simply sparse. + */ +extern uint32_t nfscl_nfs2_start_probes[NFS_NPROCS + 1]; +extern uint32_t nfscl_nfs2_done_probes[NFS_NPROCS + 1]; + +extern uint32_t nfscl_nfs3_start_probes[NFS_NPROCS + 1]; +extern uint32_t nfscl_nfs3_done_probes[NFS_NPROCS + 1]; + +extern uint32_t nfscl_nfs4_start_probes[NFS_NPROCS + 1]; +extern uint32_t nfscl_nfs4_done_probes[NFS_NPROCS + 1]; + +/* + * Look up a DTrace probe ID to see if it's associated with a "done" event -- + * if so, we will return a fourth argument type of "int". + */ +static int +dtnfs234_isdoneprobe(dtrace_id_t id) +{ + int i; + + for (i = 0; i < NFS_NPROCS + 1; i++) { + if (dtnfsclient_rpcs[i].nr_v4_id_done == id || + dtnfsclient_rpcs[i].nr_v3_id_done == id || + dtnfsclient_rpcs[i].nr_v2_id_done == id) + return (1); + } + return (0); +} + +static void +dtnfsclient_getargdesc(void *arg, dtrace_id_t id, void *parg, + dtrace_argdesc_t *desc) +{ + const char *p = NULL; + + if (id == nfscl_accesscache_flush_done_id || + id == nfscl_attrcache_flush_done_id || + id == nfscl_attrcache_get_miss_id) { + switch (desc->dtargd_ndx) { + case 0: + p = "struct vnode *"; + break; + default: + desc->dtargd_ndx = DTRACE_ARGNONE; + break; + } + } else if (id == nfscl_accesscache_get_hit_id || + id == nfscl_accesscache_get_miss_id) { + switch (desc->dtargd_ndx) { + case 0: + p = "struct vnode *"; + break; + case 1: + p = "uid_t"; + break; + case 2: + p = "uint32_t"; + break; + default: + desc->dtargd_ndx = DTRACE_ARGNONE; + break; + } + } else if (id == nfscl_accesscache_load_done_id) { + switch (desc->dtargd_ndx) { + case 0: + p = "struct vnode *"; + break; + case 1: + p = "uid_t"; + break; + case 2: + p = "uint32_t"; + break; + case 3: + p = "int"; + break; + default: + desc->dtargd_ndx = DTRACE_ARGNONE; + break; + } + } else if (id == nfscl_attrcache_get_hit_id) { + switch (desc->dtargd_ndx) { + case 0: + p = "struct vnode *"; + break; + case 1: + p = "struct vattr *"; + break; + default: + desc->dtargd_ndx = DTRACE_ARGNONE; + break; + } + } else if (id == nfscl_attrcache_load_done_id) { + switch (desc->dtargd_ndx) { + case 0: + p = "struct vnode *"; + break; + case 1: + p = "struct vattr *"; + break; + case 2: + p = "int"; + break; + default: + desc->dtargd_ndx = DTRACE_ARGNONE; + break; + } + } else { + switch (desc->dtargd_ndx) { + case 0: + p = "struct vnode *"; + break; + case 1: + p = "struct mbuf *"; + break; + case 2: + p = "struct ucred *"; + break; + case 3: + p = "int"; + break; + case 4: + if (dtnfs234_isdoneprobe(id)) { + p = "int"; + break; + } + /* FALLSTHROUGH */ + default: + desc->dtargd_ndx = DTRACE_ARGNONE; + break; + } + } + if (p != NULL) + strlcpy(desc->dtargd_native, p, sizeof(desc->dtargd_native)); +} + +static void +dtnfsclient_provide(void *arg, dtrace_probedesc_t *desc) +{ + int i; + + if (desc != NULL) + return; + + /* + * Register access cache probes. + */ + if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_accesscache_str, + dtnfsclient_flush_str, dtnfsclient_done_str) == 0) { + nfscl_accesscache_flush_done_id = dtrace_probe_create( + dtnfsclient_id, dtnfsclient_accesscache_str, + dtnfsclient_flush_str, dtnfsclient_done_str, 0, NULL); + } + if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_accesscache_str, + dtnfsclient_get_str, dtnfsclient_hit_str) == 0) { + nfscl_accesscache_get_hit_id = dtrace_probe_create( + dtnfsclient_id, dtnfsclient_accesscache_str, + dtnfsclient_get_str, dtnfsclient_hit_str, 0, NULL); + } + if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_accesscache_str, + dtnfsclient_get_str, dtnfsclient_miss_str) == 0) { + nfscl_accesscache_get_miss_id = dtrace_probe_create( + dtnfsclient_id, dtnfsclient_accesscache_str, + dtnfsclient_get_str, dtnfsclient_miss_str, 0, NULL); + } + if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_accesscache_str, + dtnfsclient_load_str, dtnfsclient_done_str) == 0) { + nfscl_accesscache_load_done_id = dtrace_probe_create( + dtnfsclient_id, dtnfsclient_accesscache_str, + dtnfsclient_load_str, dtnfsclient_done_str, 0, NULL); + } + + /* + * Register attribute cache probes. + */ + if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_attrcache_str, + dtnfsclient_flush_str, dtnfsclient_done_str) == 0) { + nfscl_attrcache_flush_done_id = dtrace_probe_create( + dtnfsclient_id, dtnfsclient_attrcache_str, + dtnfsclient_flush_str, dtnfsclient_done_str, 0, NULL); + } + if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_attrcache_str, + dtnfsclient_get_str, dtnfsclient_hit_str) == 0) { + nfscl_attrcache_get_hit_id = dtrace_probe_create( + dtnfsclient_id, dtnfsclient_attrcache_str, + dtnfsclient_get_str, dtnfsclient_hit_str, 0, NULL); + } + if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_attrcache_str, + dtnfsclient_get_str, dtnfsclient_miss_str) == 0) { + nfscl_attrcache_get_miss_id = dtrace_probe_create( + dtnfsclient_id, dtnfsclient_attrcache_str, + dtnfsclient_get_str, dtnfsclient_miss_str, 0, NULL); + } + if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_attrcache_str, + dtnfsclient_load_str, dtnfsclient_done_str) == 0) { + nfscl_attrcache_load_done_id = dtrace_probe_create( + dtnfsclient_id, dtnfsclient_attrcache_str, + dtnfsclient_load_str, dtnfsclient_done_str, 0, NULL); + } + + /* + * Register NFSv2 RPC procedures; note sparseness check for each slot + * in the NFSv3, NFSv4 procnum-indexed array. + */ + for (i = 0; i < NFS_NPROCS + 1; i++) { + if (dtnfsclient_rpcs[i].nr_v2_name != NULL && + dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs2_str, + dtnfsclient_rpcs[i].nr_v2_name, dtnfsclient_start_str) == + 0) { + dtnfsclient_rpcs[i].nr_v2_id_start = + dtrace_probe_create(dtnfsclient_id, + dtnfsclient_nfs2_str, + dtnfsclient_rpcs[i].nr_v2_name, + dtnfsclient_start_str, 0, + &nfscl_nfs2_start_probes[i]); + } + if (dtnfsclient_rpcs[i].nr_v2_name != NULL && + dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs2_str, + dtnfsclient_rpcs[i].nr_v2_name, dtnfsclient_done_str) == + 0) { + dtnfsclient_rpcs[i].nr_v2_id_done = + dtrace_probe_create(dtnfsclient_id, + dtnfsclient_nfs2_str, + dtnfsclient_rpcs[i].nr_v2_name, + dtnfsclient_done_str, 0, + &nfscl_nfs2_done_probes[i]); + } + } + + /* + * Register NFSv3 RPC procedures; note sparseness check for each slot + * in the NFSv4 procnum-indexed array. + */ + for (i = 0; i < NFS_NPROCS + 1; i++) { + if (dtnfsclient_rpcs[i].nr_v3_name != NULL && + dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs3_str, + dtnfsclient_rpcs[i].nr_v3_name, dtnfsclient_start_str) == + 0) { + dtnfsclient_rpcs[i].nr_v3_id_start = + dtrace_probe_create(dtnfsclient_id, + dtnfsclient_nfs3_str, + dtnfsclient_rpcs[i].nr_v3_name, + dtnfsclient_start_str, 0, + &nfscl_nfs3_start_probes[i]); + } + if (dtnfsclient_rpcs[i].nr_v3_name != NULL && + dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs3_str, + dtnfsclient_rpcs[i].nr_v3_name, dtnfsclient_done_str) == + 0) { + dtnfsclient_rpcs[i].nr_v3_id_done = + dtrace_probe_create(dtnfsclient_id, + dtnfsclient_nfs3_str, + dtnfsclient_rpcs[i].nr_v3_name, + dtnfsclient_done_str, 0, + &nfscl_nfs3_done_probes[i]); + } + } + + /* + * Register NFSv4 RPC procedures. + */ + for (i = 0; i < NFS_NPROCS + 1; i++) { + if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs4_str, + dtnfsclient_rpcs[i].nr_v4_name, dtnfsclient_start_str) == + 0) { + dtnfsclient_rpcs[i].nr_v4_id_start = + dtrace_probe_create(dtnfsclient_id, + dtnfsclient_nfs4_str, + dtnfsclient_rpcs[i].nr_v4_name, + dtnfsclient_start_str, 0, + &nfscl_nfs4_start_probes[i]); + } + if (dtrace_probe_lookup(dtnfsclient_id, dtnfsclient_nfs4_str, + dtnfsclient_rpcs[i].nr_v4_name, dtnfsclient_done_str) == + 0) { + dtnfsclient_rpcs[i].nr_v4_id_done = + dtrace_probe_create(dtnfsclient_id, + dtnfsclient_nfs4_str, + dtnfsclient_rpcs[i].nr_v4_name, + dtnfsclient_done_str, 0, + &nfscl_nfs4_done_probes[i]); + } + } +} + +static void +dtnfsclient_destroy(void *arg, dtrace_id_t id, void *parg) +{ +} + +static void +dtnfsclient_enable(void *arg, dtrace_id_t id, void *parg) +{ + uint32_t *p = parg; + void *f = dtrace_probe; + + if (id == nfscl_accesscache_flush_done_id) + dtrace_nfscl_accesscache_flush_done_probe = f; + else if (id == nfscl_accesscache_get_hit_id) + dtrace_nfscl_accesscache_get_hit_probe = f; + else if (id == nfscl_accesscache_get_miss_id) + dtrace_nfscl_accesscache_get_miss_probe = f; + else if (id == nfscl_accesscache_load_done_id) + dtrace_nfscl_accesscache_load_done_probe = f; + else if (id == nfscl_attrcache_flush_done_id) + dtrace_nfscl_attrcache_flush_done_probe = f; + else if (id == nfscl_attrcache_get_hit_id) + dtrace_nfscl_attrcache_get_hit_probe = f; + else if (id == nfscl_attrcache_get_miss_id) + dtrace_nfscl_attrcache_get_miss_probe = f; + else if (id == nfscl_attrcache_load_done_id) + dtrace_nfscl_attrcache_load_done_probe = f; + else + *p = id; +} + +static void +dtnfsclient_disable(void *arg, dtrace_id_t id, void *parg) +{ + uint32_t *p = parg; + + if (id == nfscl_accesscache_flush_done_id) + dtrace_nfscl_accesscache_flush_done_probe = NULL; + else if (id == nfscl_accesscache_get_hit_id) + dtrace_nfscl_accesscache_get_hit_probe = NULL; + else if (id == nfscl_accesscache_get_miss_id) + dtrace_nfscl_accesscache_get_miss_probe = NULL; + else if (id == nfscl_accesscache_load_done_id) + dtrace_nfscl_accesscache_load_done_probe = NULL; + else if (id == nfscl_attrcache_flush_done_id) + dtrace_nfscl_attrcache_flush_done_probe = NULL; + else if (id == nfscl_attrcache_get_hit_id) + dtrace_nfscl_attrcache_get_hit_probe = NULL; + else if (id == nfscl_attrcache_get_miss_id) + dtrace_nfscl_attrcache_get_miss_probe = NULL; + else if (id == nfscl_attrcache_load_done_id) + dtrace_nfscl_attrcache_load_done_probe = NULL; + else + *p = 0; +} + +static void +dtnfsclient_load(void *dummy) +{ + + if (dtrace_register("nfscl", &dtnfsclient_attr, + DTRACE_PRIV_USER, NULL, &dtnfsclient_pops, NULL, + &dtnfsclient_id) != 0) + return; + + dtrace_nfscl_nfs234_start_probe = + (dtrace_nfsclient_nfs23_start_probe_func_t)dtrace_probe; + dtrace_nfscl_nfs234_done_probe = + (dtrace_nfsclient_nfs23_done_probe_func_t)dtrace_probe; +} + + +static int +dtnfsclient_unload() +{ + + dtrace_nfscl_nfs234_start_probe = NULL; + dtrace_nfscl_nfs234_done_probe = NULL; + + return (dtrace_unregister(dtnfsclient_id)); +} + +static int +dtnfsclient_modevent(module_t mod __unused, int type, void *data __unused) +{ + int error = 0; + + switch (type) { + case MOD_LOAD: + break; + + case MOD_UNLOAD: + break; + + case MOD_SHUTDOWN: + break; + + default: + error = EOPNOTSUPP; + break; + } + + return (error); +} + +SYSINIT(dtnfsclient_load, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY, + dtnfsclient_load, NULL); +SYSUNINIT(dtnfsclient_unload, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY, + dtnfsclient_unload, NULL); + +DEV_MODULE(dtnfscl, dtnfsclient_modevent, NULL); +MODULE_VERSION(dtnfscl, 1); +MODULE_DEPEND(dtnfscl, dtrace, 1, 1, 1); +MODULE_DEPEND(dtnfscl, opensolaris, 1, 1, 1); +MODULE_DEPEND(dtnfscl, nfscl, 1, 1, 1); +MODULE_DEPEND(dtnfscl, nfscommon, 1, 1, 1); Modified: head/sys/fs/nfsclient/nfs_clnode.c ============================================================================== --- head/sys/fs/nfsclient/nfs_clnode.c Sat Jun 18 23:01:26 2011 (r223279) +++ head/sys/fs/nfsclient/nfs_clnode.c Sat Jun 18 23:02:53 2011 (r223280) @@ -35,6 +35,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_kdtrace.h" + #include #include #include @@ -53,6 +55,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include @@ -300,7 +303,9 @@ ncl_invalcaches(struct vnode *vp) mtx_lock(&np->n_mtx); for (i = 0; i < NFS_ACCESSCACHESIZE; i++) np->n_accesscache[i].stamp = 0; + KDTRACE_NFS_ACCESSCACHE_FLUSH_DONE(vp); np->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); mtx_unlock(&np->n_mtx); } Modified: head/sys/fs/nfsclient/nfs_clport.c ============================================================================== --- head/sys/fs/nfsclient/nfs_clport.c Sat Jun 18 23:01:26 2011 (r223279) +++ head/sys/fs/nfsclient/nfs_clport.c Sat Jun 18 23:02:53 2011 (r223280) @@ -34,6 +34,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_kdtrace.h" + /* * generally, I don't like #includes inside .h files, but it seems to * be the easiest way to handle the port. @@ -43,6 +45,26 @@ __FBSDID("$FreeBSD$"); #include #include +#include + +#ifdef KDTRACE_HOOKS +dtrace_nfsclient_attrcache_flush_probe_func_t + dtrace_nfscl_attrcache_flush_done_probe; +uint32_t nfscl_attrcache_flush_done_id; + +dtrace_nfsclient_attrcache_get_hit_probe_func_t + dtrace_nfscl_attrcache_get_hit_probe; +uint32_t nfscl_attrcache_get_hit_id; + +dtrace_nfsclient_attrcache_get_miss_probe_func_t + dtrace_nfscl_attrcache_get_miss_probe; +uint32_t nfscl_attrcache_get_miss_id; + +dtrace_nfsclient_attrcache_load_probe_func_t + dtrace_nfscl_attrcache_load_done_probe; +uint32_t nfscl_attrcache_load_done_id; +#endif /* !KDTRACE_HOOKS */ + extern u_int32_t newnfs_true, newnfs_false, newnfs_xdrneg1; extern struct vop_vector newnfs_vnodeops; extern struct vop_vector newnfs_fifoops; @@ -407,6 +429,7 @@ nfscl_loadattrcache(struct vnode **vpp, */ vap->va_size = np->n_size; np->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); } else if (np->n_flag & NMODIFIED) { /* * We've modified the file: Use the larger @@ -439,9 +462,11 @@ nfscl_loadattrcache(struct vnode **vpp, * We detect this by for the mtime moving back. We invalidate the * attrcache when this happens. */ - if (timespeccmp(&mtime_save, &vap->va_mtime, >)) + if (timespeccmp(&mtime_save, &vap->va_mtime, >)) { /* Size changed or mtime went backwards */ np->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); + } if (vaper != NULL) { NFSBCOPY((caddr_t)vap, (caddr_t)vaper, sizeof(*vap)); if (np->n_flag & NCHG) { @@ -451,6 +476,10 @@ nfscl_loadattrcache(struct vnode **vpp, vaper->va_mtime = np->n_mtim; } } +#ifdef KDTRACE_HOOKS + if (np->n_attrstamp != 0) + KDTRACE_NFS_ATTRCACHE_LOAD_DONE(vp, vap, 0); +#endif NFSUNLOCKNODE(np); return (0); } Modified: head/sys/fs/nfsclient/nfs_clsubs.c ============================================================================== --- head/sys/fs/nfsclient/nfs_clsubs.c Sat Jun 18 23:01:26 2011 (r223279) +++ head/sys/fs/nfsclient/nfs_clsubs.c Sat Jun 18 23:02:53 2011 (r223280) @@ -35,6 +35,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_kdtrace.h" + /* * These functions support the macros and help fiddle mbuf chains for * the nfs op functions. They do things like create the rpc header and @@ -68,6 +70,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include @@ -238,6 +241,7 @@ ncl_getattrcache(struct vnode *vp, struc #ifdef NFS_ACDEBUG mtx_unlock(&Giant); /* ncl_printf() */ #endif + KDTRACE_NFS_ATTRCACHE_GET_MISS(vp); return( ENOENT); } newnfsstats.attrcache_hits++; @@ -267,6 +271,7 @@ ncl_getattrcache(struct vnode *vp, struc #ifdef NFS_ACDEBUG mtx_unlock(&Giant); /* ncl_printf() */ #endif + KDTRACE_NFS_ATTRCACHE_GET_HIT(vp, vap); return (0); } Modified: head/sys/fs/nfsclient/nfs_clvnops.c ============================================================================== --- head/sys/fs/nfsclient/nfs_clvnops.c Sat Jun 18 23:01:26 2011 (r223279) +++ head/sys/fs/nfsclient/nfs_clvnops.c Sat Jun 18 23:02:53 2011 (r223280) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); * vnode op calls for Sun NFS version 2, 3 and 4 */ +#include "opt_kdtrace.h" #include "opt_inet.h" #include @@ -70,6 +71,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -77,6 +79,24 @@ __FBSDID("$FreeBSD$"); #include +#ifdef KDTRACE_HOOKS +#include + +dtrace_nfsclient_accesscache_flush_probe_func_t + dtrace_nfscl_accesscache_flush_done_probe; +uint32_t nfscl_accesscache_flush_done_id; + +dtrace_nfsclient_accesscache_get_probe_func_t + dtrace_nfscl_accesscache_get_hit_probe, + dtrace_nfscl_accesscache_get_miss_probe; +uint32_t nfscl_accesscache_get_hit_id; +uint32_t nfscl_accesscache_get_miss_id; + +dtrace_nfsclient_accesscache_load_probe_func_t *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 23:43:29 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3490E106564A; Sat, 18 Jun 2011 23:43:29 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 23C468FC0C; Sat, 18 Jun 2011 23:43:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5INhT3f068784; Sat, 18 Jun 2011 23:43:29 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5INhTvI068781; Sat, 18 Jun 2011 23:43:29 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106182343.p5INhTvI068781@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 18 Jun 2011 23:43:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223281 - head/bin/sh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 23:43:29 -0000 Author: jilles Date: Sat Jun 18 23:43:28 2011 New Revision: 223281 URL: http://svn.freebsd.org/changeset/base/223281 Log: sh: Add do-nothing -h option. POSIX requires a -h option to sh and set, to locate and remember utilities invoked by functions as they are defined. Given that this locate-and-remember process is optional elsewhere, it seems safe enough to make this option do nothing. POSIX does not specify a long name for this option. Follow ksh in calling it "trackall". Modified: head/bin/sh/options.h head/bin/sh/sh.1 Modified: head/bin/sh/options.h ============================================================================== --- head/bin/sh/options.h Sat Jun 18 23:02:53 2011 (r223280) +++ head/bin/sh/options.h Sat Jun 18 23:43:28 2011 (r223281) @@ -62,8 +62,9 @@ struct shparam { #define privileged optlist[15].val #define Tflag optlist[16].val #define Pflag optlist[17].val +#define hflag optlist[18].val -#define NOPTS 18 +#define NOPTS 19 struct optent { const char *name; @@ -91,6 +92,7 @@ struct optent optlist[NOPTS] = { { "privileged", 'p', 0 }, { "trapsasync", 'T', 0 }, { "physical", 'P', 0 }, + { "trackall", 'h', 0 }, }; #else extern struct optent optlist[NOPTS]; Modified: head/bin/sh/sh.1 ============================================================================== --- head/bin/sh/sh.1 Sat Jun 18 23:02:53 2011 (r223280) +++ head/bin/sh/sh.1 Sat Jun 18 23:43:28 2011 (r223281) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd June 17, 2011 +.Dd June 18, 2011 .Dt SH 1 .Os .Sh NAME @@ -241,6 +241,10 @@ tested, all commands of the function are well. .It Fl f Li noglob Disable pathname expansion. +.It Fl h Li trackall +A do-nothing option for +.Tn POSIX +compliance. .It Fl I Li ignoreeof Ignore .Dv EOF Ap s From owner-svn-src-all@FreeBSD.ORG Sat Jun 18 23:58:59 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DE8D2106566B; Sat, 18 Jun 2011 23:58:59 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B4A678FC0A; Sat, 18 Jun 2011 23:58:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5INwxm7069335; Sat, 18 Jun 2011 23:58:59 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5INwxAF069331; Sat, 18 Jun 2011 23:58:59 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201106182358.p5INwxAF069331@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 18 Jun 2011 23:58:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223282 - head/bin/sh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jun 2011 23:59:00 -0000 Author: jilles Date: Sat Jun 18 23:58:59 2011 New Revision: 223282 URL: http://svn.freebsd.org/changeset/base/223282 Log: sh: Remove special support for background simple commands. It expands the arguments in the parent shell process, which is incorrect. Modified: head/bin/sh/eval.c head/bin/sh/nodetypes head/bin/sh/parser.c Modified: head/bin/sh/eval.c ============================================================================== --- head/bin/sh/eval.c Sat Jun 18 23:43:28 2011 (r223281) +++ head/bin/sh/eval.c Sat Jun 18 23:58:59 2011 (r223282) @@ -894,14 +894,13 @@ evalcommand(union node *cmd, int flags, } /* Fork off a child process if necessary. */ - if (cmd->ncmd.backgnd - || ((cmdentry.cmdtype == CMDNORMAL || cmdentry.cmdtype == CMDUNKNOWN) + if (((cmdentry.cmdtype == CMDNORMAL || cmdentry.cmdtype == CMDUNKNOWN) && ((flags & EV_EXIT) == 0 || have_traps())) || ((flags & EV_BACKCMD) != 0 && (cmdentry.cmdtype != CMDBUILTIN || !safe_builtin(cmdentry.u.index, argc, argv)))) { jp = makejob(cmd, 1); - mode = cmd->ncmd.backgnd; + mode = FORK_FG; if (flags & EV_BACKCMD) { mode = FORK_NOJOB; if (pipe(pip) < 0) @@ -1068,8 +1067,7 @@ parent: /* parent process gets here (if backcmd->fd = pip[0]; close(pip[1]); backcmd->jp = jp; - } else - exitstatus = 0; + } out: if (lastarg) Modified: head/bin/sh/nodetypes ============================================================================== --- head/bin/sh/nodetypes Sat Jun 18 23:43:28 2011 (r223281) +++ head/bin/sh/nodetypes Sat Jun 18 23:58:59 2011 (r223282) @@ -56,7 +56,6 @@ NSEMI nbinary # two commands separated NCMD ncmd # a simple command type int - backgnd int # set to run command in background args nodeptr # the arguments redirect nodeptr # list of file redirections Modified: head/bin/sh/parser.c ============================================================================== --- head/bin/sh/parser.c Sat Jun 18 23:43:28 2011 (r223281) +++ head/bin/sh/parser.c Sat Jun 18 23:58:59 2011 (r223282) @@ -240,8 +240,8 @@ list(int nlflag, int erflag) n2 = andor(); tok = readtoken(); if (tok == TBACKGND) { - if (n2->type == NCMD || n2->type == NPIPE) { - n2->ncmd.backgnd = 1; + if (n2->type == NPIPE) { + n2->npipe.backgnd = 1; } else if (n2->type == NREDIR) { n2->type = NBACKGND; } else { @@ -689,7 +689,6 @@ simplecmd(union node **rpp, union node * *rpp = NULL; n = (union node *)stalloc(sizeof (struct ncmd)); n->type = NCMD; - n->ncmd.backgnd = 0; n->ncmd.args = args; n->ncmd.redirect = redir; return n;