From owner-p4-projects@FreeBSD.ORG Mon Apr 24 21:28:05 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A314716A405; Mon, 24 Apr 2006 21:28:05 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 674C816A402 for ; Mon, 24 Apr 2006 21:28:05 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0E4FA43D46 for ; Mon, 24 Apr 2006 21:28:05 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k3OLS4hZ038666 for ; Mon, 24 Apr 2006 21:28:04 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k3OLS4vu038660 for perforce@freebsd.org; Mon, 24 Apr 2006 21:28:04 GMT (envelope-from marcel@freebsd.org) Date: Mon, 24 Apr 2006 21:28:04 GMT Message-Id: <200604242128.k3OLS4vu038660@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Cc: Subject: PERFORCE change 96015 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Apr 2006 21:28:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=96015 Change 96015 by marcel@marcel_nfs on 2006/04/24 21:27:06 IFC @96013 Affected files ... .. //depot/projects/uart/alpha/conf/GENERIC#13 integrate .. //depot/projects/uart/amd64/amd64/mp_machdep.c#13 integrate .. //depot/projects/uart/amd64/conf/GENERIC#17 integrate .. //depot/projects/uart/i386/conf/GENERIC#16 integrate .. //depot/projects/uart/i386/i386/mp_machdep.c#21 integrate .. //depot/projects/uart/kern/serdev_if.m#7 integrate .. //depot/projects/uart/kern/uipc_usrreq.c#13 integrate .. //depot/projects/uart/netinet/tcp_usrreq.c#13 integrate .. //depot/projects/uart/sparc64/conf/GENERIC#18 integrate Differences ... ==== //depot/projects/uart/alpha/conf/GENERIC#13 (text+ko) ==== @@ -18,7 +18,7 @@ # # For hardware specific information check HARDWARE.TXT # -# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.192 2006/01/10 09:19:07 phk Exp $ +# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.193 2006/04/24 08:44:33 delphij Exp $ cpu EV4 cpu EV5 @@ -70,8 +70,6 @@ options SYSVMSG # SYSV-style message queues options SYSVSEM # SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions -options AHC_REG_PRETTY_PRINT # Print register bitfields in debug - # output. Adds ~128k to driver. options ADAPTIVE_GIANT # Giant mutex is adaptive. # Debugging for use in -current @@ -106,6 +104,8 @@ # SCSI Controllers device ahc # AHA2940 and onboard AIC7xxx devices +options AHC_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~128k to driver. device isp # Qlogic family device ispfw # Firmware module for Qlogic host adapters device mpt # LSI-Logic MPT-Fusion ==== //depot/projects/uart/amd64/amd64/mp_machdep.c#13 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.271 2006/03/18 19:32:46 ups Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.272 2006/04/24 21:17:01 cperciva Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -385,8 +385,8 @@ * are available, use them. */ if (cpu_high >= 4) { - /* Ask the processor about up to 32 caches. */ - for (i = 0; i < 32; i++) { + /* Ask the processor about the L1 cache. */ + for (i = 0; i < 1; i++) { cpuid_count(4, i, p); threads_per_cache = ((p[0] & 0x3ffc000) >> 14) + 1; if (hyperthreading_cpus < threads_per_cache) ==== //depot/projects/uart/amd64/conf/GENERIC#17 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.452 2006/04/10 20:04:22 ps Exp $ +# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.453 2006/04/24 08:44:33 delphij Exp $ cpu HAMMER ident GENERIC @@ -57,10 +57,6 @@ options SYSVSEM # SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options KBD_INSTALL_CDEV # install a CDEV entry in /dev -options AHC_REG_PRETTY_PRINT # Print register bitfields in debug - # output. Adds ~128k to driver. -options AHD_REG_PRETTY_PRINT # Print register bitfields in debug - # output. Adds ~215k to driver. options ADAPTIVE_GIANT # Giant mutex is adaptive. options STOP_NMI # Stop CPUS using NMI instead of IPI @@ -98,7 +94,11 @@ # SCSI Controllers device ahc # AHA2940 and onboard AIC7xxx devices +options AHC_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~128k to driver. device ahd # AHA39320/29320 and onboard AIC79xx devices +options AHD_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~215k to driver. device amd # AMD 53C974 (Tekram DC-390(T)) device isp # Qlogic family #device ispfw # Firmware for QLogic HBAs- normally a module ==== //depot/projects/uart/i386/conf/GENERIC#16 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.441 2006/04/10 20:04:22 ps Exp $ +# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.442 2006/04/24 08:44:34 delphij Exp $ cpu I486_CPU cpu I586_CPU @@ -57,10 +57,6 @@ options SYSVSEM # SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options KBD_INSTALL_CDEV # install a CDEV entry in /dev -options AHC_REG_PRETTY_PRINT # Print register bitfields in debug - # output. Adds ~128k to driver. -options AHD_REG_PRETTY_PRINT # Print register bitfields in debug - # output. Adds ~215k to driver. options ADAPTIVE_GIANT # Giant mutex is adaptive. options STOP_NMI # Stop CPUS using NMI instead of IPI @@ -96,7 +92,11 @@ # SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices +options AHC_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~128k to driver. device ahd # AHA39320/29320 and onboard AIC79xx devices +options AHD_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~215k to driver. device amd # AMD 53C974 (Tekram DC-390(T)) device isp # Qlogic family #device ispfw # Firmware for QLogic HBAs- normally a module ==== //depot/projects/uart/i386/i386/mp_machdep.c#21 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.264 2006/03/09 16:38:52 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.265 2006/04/24 21:17:01 cperciva Exp $"); #include "opt_apic.h" #include "opt_cpu.h" @@ -434,8 +434,8 @@ * are available, use them. */ if (cpu_high >= 4) { - /* Ask the processor about up to 32 caches. */ - for (i = 0; i < 32; i++) { + /* Ask the processor about the L1 cache. */ + for (i = 0; i < 1; i++) { cpuid_count(4, i, p); threads_per_cache = ((p[0] & 0x3ffc000) >> 14) + 1; if (hyperthreading_cpus < threads_per_cache) ==== //depot/projects/uart/kern/serdev_if.m#7 (text+ko) ==== @@ -23,7 +23,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/sys/kern/serdev_if.m,v 1.1 2006/03/30 18:33:22 marcel Exp $ +# $FreeBSD: src/sys/kern/serdev_if.m,v 1.2 2006/04/23 22:12:39 marcel Exp $ # #include ==== //depot/projects/uart/kern/uipc_usrreq.c#13 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/uipc_usrreq.c,v 1.166 2006/04/21 09:25:39 ps Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/uipc_usrreq.c,v 1.167 2006/04/24 19:09:33 maxim Exp $"); #include "opt_mac.h" @@ -950,6 +950,8 @@ memcpy(&unp->unp_peercred, &unp2->unp_peercred, sizeof(unp->unp_peercred)); unp->unp_flags |= UNP_HAVEPC; + if (unp2->unp_flags & UNP_WANTCRED) + unp3->unp_flags |= UNP_WANTCRED; #ifdef MAC SOCK_LOCK(so); mac_set_socket_peer_from_socket(so, so3); ==== //depot/projects/uart/netinet/tcp_usrreq.c#13 (text+ko) ==== @@ -29,7 +29,7 @@ * SUCH DAMAGE. * * From: @(#)tcp_usrreq.c 8.2 (Berkeley) 1/3/94 - * $FreeBSD: src/sys/netinet/tcp_usrreq.c,v 1.135 2006/04/03 12:43:56 rwatson Exp $ + * $FreeBSD: src/sys/netinet/tcp_usrreq.c,v 1.136 2006/04/24 08:20:02 rwatson Exp $ */ #include "opt_inet.h" @@ -139,46 +139,27 @@ } /* - * pru_detach() detaches the TCP protocol from the socket. - * If the protocol state is non-embryonic, then can't - * do this directly: have to initiate a pru_disconnect(), - * which may finish later; embryonic TCB's can just - * be discarded here. + * tcp_detach() releases any protocol state that can be reasonably released + * when a socket shutdown is requested, and is a shared code path for + * tcp_usr_detach() and tcp_usr_abort(), the two socket close entry points. + * + * Accepts pcbinfo, inpcb locked, will unlock the inpcb (if needed) on + * return. */ static void -tcp_usr_detach(struct socket *so) +tcp_detach(struct socket *so, struct inpcb *inp) { - struct inpcb *inp; struct tcpcb *tp; #ifdef INET6 int isipv6 = INP_CHECK_SOCKAF(so, AF_INET6) != 0; #endif - TCPDEBUG0; - inp = sotoinpcb(so); - KASSERT(inp != NULL, ("tcp_usr_detach: inp == NULL")); - INP_INFO_WLOCK(&tcbinfo); - INP_LOCK(inp); - KASSERT(inp->inp_socket != NULL, - ("tcp_usr_detach: inp_socket == NULL")); - TCPDEBUG1(); + INP_INFO_WLOCK_ASSERT(&tcbinfo); + INP_LOCK_ASSERT(inp); - /* - * First, if we still have full TCP state, and we're not dropped, - * initiate a disconnect. - */ - if (!(inp->inp_vflag & INP_TIMEWAIT) && - !(inp->inp_vflag & INP_DROPPED)) { - tp = intotcpcb(inp); - tcp_disconnect(tp); - } + KASSERT(so->so_pcb == inp, ("tcp_detach: so_pcb != inp")); + KASSERT(inp->inp_socket == so, ("tcp_detach: inp_socket != so")); - /* - * Second, release any protocol state that we can reasonably release. - * Note that the call to tcp_disconnect() may actually have changed - * the TCP state, so we have to re-evaluate INP_TIMEWAIT and - * INP_DROPPED. - */ if (inp->inp_vflag & INP_TIMEWAIT) { if (inp->inp_vflag & INP_DROPPED) { /* @@ -248,6 +229,40 @@ INP_UNLOCK(inp); } } +} + +/* + * pru_detach() detaches the TCP protocol from the socket. + * If the protocol state is non-embryonic, then can't + * do this directly: have to initiate a pru_disconnect(), + * which may finish later; embryonic TCB's can just + * be discarded here. + */ +static void +tcp_usr_detach(struct socket *so) +{ + struct inpcb *inp; + struct tcpcb *tp; + TCPDEBUG0; + + inp = sotoinpcb(so); + KASSERT(inp != NULL, ("tcp_usr_detach: inp == NULL")); + INP_INFO_WLOCK(&tcbinfo); + INP_LOCK(inp); + KASSERT(inp->inp_socket != NULL, + ("tcp_usr_detach: inp_socket == NULL")); + TCPDEBUG1(); + + /* + * First, if we still have full TCP state, and we're not dropped, + * initiate a disconnect. + */ + if (!(inp->inp_vflag & INP_TIMEWAIT) && + !(inp->inp_vflag & INP_DROPPED)) { + tp = intotcpcb(inp); + tcp_disconnect(tp); + } + tcp_detach(so, inp); tp = NULL; TCPDEBUG2(PRU_DETACH); INP_INFO_WUNLOCK(&tcbinfo); @@ -916,41 +931,38 @@ /* * Abort the TCP. + * + * First, drop the connection. Then collect state if possible. */ static void tcp_usr_abort(struct socket *so) { -#if 0 struct inpcb *inp; struct tcpcb *tp; -#endif + TCPDEBUG0; - /* - * XXXRW: This is not really quite the same, as we want to tcp_drop() - * rather than tcp_disconnect(), I think, but for now I'll avoid - * replicating all the tear-down logic here. - */ - tcp_usr_detach(so); + inp = sotoinpcb(so); + KASSERT(inp != NULL, ("tcp_usr_abort: inp == NULL")); -#if 0 - TCPDEBUG0; INP_INFO_WLOCK(&tcbinfo); - inp = sotoinpcb(so); INP_LOCK(inp); + KASSERT(inp->inp_socket != NULL, + ("tcp_usr_abort: inp_socket == NULL")); + TCPDEBUG1(); + /* - * Do we need to handle timewait here? Aborted connections should - * never generate a FIN? + * First, if we still have full TCP state, and we're not dropped, + * drop. */ - KASSERT((inp->inp_vflag & INP_TIMEWAIT) == 0, - ("tcp_usr_abort: timewait")); - tp = intotcpcb(inp); - TCPDEBUG1(); - tp = tcp_drop(tp, ECONNABORTED); - TCPDEBUG2(PRU_ABORT); - if (tp != NULL) - INP_UNLOCK(inp); + if (!(inp->inp_vflag & INP_TIMEWAIT) && + !(inp->inp_vflag & INP_DROPPED)) { + tp = intotcpcb(inp); + tcp_drop(tp, ECONNABORTED); + } + tcp_detach(so, inp); + tp = NULL; + TCPDEBUG2(PRU_DETACH); INP_INFO_WUNLOCK(&tcbinfo); -#endif } /* ==== //depot/projects/uart/sparc64/conf/GENERIC#18 (text+ko) ==== @@ -18,7 +18,7 @@ # # For hardware specific information check HARDWARE.TXT # -# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.106 2006/03/30 18:40:25 marcel Exp $ +# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.107 2006/04/24 08:44:34 delphij Exp $ cpu SUN4U ident GENERIC @@ -58,8 +58,6 @@ options SYSVMSG # SYSV-style message queues options SYSVSEM # SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions -options AHC_REG_PRETTY_PRINT # Print register bitfields in debug - # output. Adds ~128k to driver. options ADAPTIVE_GIANT # Giant mutex is adaptive. # Debugging for use in -current @@ -97,6 +95,8 @@ # SCSI Controllers device ahc # AHA2940 and onboard AIC7xxx devices +options AHC_REG_PRETTY_PRINT # Print register bitfields in debug + # output. Adds ~128k to driver. device isp # Qlogic family device ispfw # Firmware module for Qlogic host adapters #device mpt # LSI-Logic MPT-Fusion (not yet)