From owner-svn-src-stable-8@FreeBSD.ORG Sun Jul 25 11:52:09 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D845C1065677; Sun, 25 Jul 2010 11:52:09 +0000 (UTC) (envelope-from rafan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E87318FC14; Sun, 25 Jul 2010 11:52:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6PBq9Fu037073; Sun, 25 Jul 2010 11:52:09 GMT (envelope-from rafan@svn.freebsd.org) Received: (from rafan@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6PBq9lL037071; Sun, 25 Jul 2010 11:52:09 GMT (envelope-from rafan@svn.freebsd.org) Message-Id: <201007251152.o6PBq9lL037071@svn.freebsd.org> From: Rong-En Fan Date: Sun, 25 Jul 2010 11:52: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: r210466 - stable/8/contrib/ncurses/man X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jul 2010 11:52:10 -0000 Author: rafan Date: Sun Jul 25 11:52:09 2010 New Revision: 210466 URL: http://svn.freebsd.org/changeset/base/210466 Log: MFC r210465 - Fix wrong manpage title for keybound.3X PR: docs/148864 Obtained from: ncurses-5.7-20081213 snapshot Modified: stable/8/contrib/ncurses/man/keybound.3x Directory Properties: stable/8/contrib/ncurses/ (props changed) Modified: stable/8/contrib/ncurses/man/keybound.3x ============================================================================== --- stable/8/contrib/ncurses/man/keybound.3x Sun Jul 25 11:48:27 2010 (r210465) +++ stable/8/contrib/ncurses/man/keybound.3x Sun Jul 25 11:52:09 2010 (r210466) @@ -1,5 +1,5 @@ .\"*************************************************************************** -.\" Copyright (c) 1999-2003,2006 Free Software Foundation, Inc. * +.\" Copyright (c) 1999-2006,2008 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * .\" copy of this software and associated documentation files (the * @@ -28,8 +28,8 @@ .\" .\" Author: Thomas E. Dickey 1999 .\" -.\" $Id: keybound.3x,v 1.6 2006/02/25 21:47:06 tom Exp $ -.TH keyok 3X "" +.\" $Id: keybound.3x,v 1.7 2008/12/13 18:19:07 Frederic.Culot Exp $ +.TH keybound 3X "" .SH NAME \fBkeybound\fP \- return definition of keycode .SH SYNOPSIS From owner-svn-src-stable-8@FreeBSD.ORG Sun Jul 25 15:53:28 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0A15D106564A; Sun, 25 Jul 2010 15:53:28 +0000 (UTC) (envelope-from gavin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 15EC78FC12; Sun, 25 Jul 2010 15:53:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6PFrRE8090635; Sun, 25 Jul 2010 15:53:27 GMT (envelope-from gavin@svn.freebsd.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6PFrRQf090633; Sun, 25 Jul 2010 15:53:27 GMT (envelope-from gavin@svn.freebsd.org) Message-Id: <201007251553.o6PFrRQf090633@svn.freebsd.org> From: Gavin Atkinson Date: Sun, 25 Jul 2010 15:53: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: r210472 - stable/8 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jul 2010 15:53:28 -0000 Author: gavin Date: Sun Jul 25 15:53:27 2010 New Revision: 210472 URL: http://svn.freebsd.org/changeset/base/210472 Log: Merge r198005 (originally by markm) from head: We haven't installed usbdevs for many moons now, and it doesn't work any more anyway. Add it to the "obsolete" list. PR: usb/146799 Reported by: Warren Block Modified: stable/8/ObsoleteFiles.inc (contents, props changed) Modified: stable/8/ObsoleteFiles.inc ============================================================================== --- stable/8/ObsoleteFiles.inc Sun Jul 25 15:43:52 2010 (r210471) +++ stable/8/ObsoleteFiles.inc Sun Jul 25 15:53:27 2010 (r210472) @@ -596,6 +596,8 @@ OLD_FILES+=usr/include/dev/usb/usb_quirk OLD_FILES+=usr/include/dev/usb/usbcdc.h OLD_FILES+=usr/include/dev/usb/usbdivar.h OLD_FILES+=usr/include/dev/usb/uxb360gp_rdesc.h +OLD_FILES+=usr/sbin/usbdevs +OLD_FILES+=usr/share/man/man8/usbdevs.8.gz # 20090203: removal of pccard header files OLD_FILES+=usr/include/pccard/cardinfo.h OLD_FILES+=usr/include/pccard/cis.h From owner-svn-src-stable-8@FreeBSD.ORG Sun Jul 25 17:40:49 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 53E801065673; Sun, 25 Jul 2010 17:40:49 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6CBB38FC22; Sun, 25 Jul 2010 17:40:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6PHenVo014405; Sun, 25 Jul 2010 17:40:49 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6PHengU014403; Sun, 25 Jul 2010 17:40:49 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201007251740.o6PHengU014403@svn.freebsd.org> From: Rui Paulo Date: Sun, 25 Jul 2010 17:40: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: r210474 - stable/8/sys/net80211 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jul 2010 17:40:49 -0000 Author: rpaulo Date: Sun Jul 25 17:40:48 2010 New Revision: 210474 URL: http://svn.freebsd.org/changeset/base/210474 Log: MFC r209016, r209022: Some odd APs send beacons on the same TX queue as non-beacons. This breaks 802.11 duplicate detection. Upon looking at the standard, we discover that 802.11-2007 says: "A receiving QoS STA is also required to keep only the most recent cache entry per
triple, storing only the most recently received fragment number for that triple. A receiving STA may omit tuples obtained from broadcast/multicast or ATIM frames from the cache." To fix this, we just disable duplicate detection for multicast/broadcast frames. Reviewed by: sam Obtained from: DragonFly Modified: stable/8/sys/net80211/ieee80211_sta.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/net80211/ieee80211_sta.c ============================================================================== --- stable/8/sys/net80211/ieee80211_sta.c Sun Jul 25 17:11:57 2010 (r210473) +++ stable/8/sys/net80211/ieee80211_sta.c Sun Jul 25 17:40:48 2010 (r210474) @@ -585,7 +585,7 @@ sta_input(struct ieee80211_node *ni, str } IEEE80211_RSSI_LPF(ni->ni_avgrssi, rssi); ni->ni_noise = nf; - if (HAS_SEQ(type)) { + if (HAS_SEQ(type) && !IEEE80211_IS_MULTICAST(wh->i_addr1)) { uint8_t tid = ieee80211_gettid(wh); if (IEEE80211_QOS_HAS_SEQ(wh) && TID_TO_WME_AC(tid) >= WME_AC_VI) From owner-svn-src-stable-8@FreeBSD.ORG Sun Jul 25 17:48:16 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A3062106566B; Sun, 25 Jul 2010 17:48:16 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 94EFD8FC17; Sun, 25 Jul 2010 17:48:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6PHmGvp016122; Sun, 25 Jul 2010 17:48:16 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6PHmG3H016115; Sun, 25 Jul 2010 17:48:16 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201007251748.o6PHmG3H016115@svn.freebsd.org> From: Rui Paulo Date: Sun, 25 Jul 2010 17:48:16 +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: r210476 - in stable/8: share/man/man4 sys/conf sys/dev/acpi_support sys/i386/conf sys/modules/acpi sys/modules/acpi/aibs X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jul 2010 17:48:16 -0000 Author: rpaulo Date: Sun Jul 25 17:48:16 2010 New Revision: 210476 URL: http://svn.freebsd.org/changeset/base/210476 Log: MFC r209523: Import the acpi_aibs(4) driver written by Constantine A. Murenin. It has more features than acpi_aiboost(4) and it will eventually replace acpi_aiboost(4). Submitted by: Constantine A. Murenin Reviewed by: freebsd-acpi, imp Added: stable/8/share/man/man4/aibs.4 - copied unchanged from r209523, head/share/man/man4/aibs.4 stable/8/sys/dev/acpi_support/atk0110.c - copied unchanged from r209523, head/sys/dev/acpi_support/atk0110.c stable/8/sys/modules/acpi/aibs/ - copied from r209523, head/sys/modules/acpi/aibs/ Modified: stable/8/share/man/man4/Makefile stable/8/sys/conf/files stable/8/sys/i386/conf/NOTES stable/8/sys/modules/acpi/Makefile Directory Properties: stable/8/share/man/man4/ (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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/share/man/man4/Makefile ============================================================================== --- stable/8/share/man/man4/Makefile Sun Jul 25 17:43:38 2010 (r210475) +++ stable/8/share/man/man4/Makefile Sun Jul 25 17:48:16 2010 (r210476) @@ -26,6 +26,7 @@ MAN= aac.4 \ ahc.4 \ ahci.4 \ ahd.4 \ + ${_aibs.4} \ aio.4 \ alc.4 \ ale.4 \ @@ -629,6 +630,7 @@ _acpi_panasonic.4=acpi_panasonic.4 _acpi_sony.4= acpi_sony.4 _acpi_toshiba.4=acpi_toshiba.4 _acpi_wmi.4= acpi_wmi.4 +_aibs.4= aibs.4 _amdsmb.4= amdsmb.4 _amdtemp.4= amdtemp.4 _asmc.4= asmc.4 Copied: stable/8/share/man/man4/aibs.4 (from r209523, head/share/man/man4/aibs.4) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/share/man/man4/aibs.4 Sun Jul 25 17:48:16 2010 (r210476, copy of r209523, head/share/man/man4/aibs.4) @@ -0,0 +1,209 @@ +.\" $FreeBSD$ +.\" $NetBSD: aibs.4,v 1.2 2010/02/09 05:37:25 cnst Exp $ +.\" $OpenBSD: aibs.4,v 1.4 2009/07/30 06:30:45 jmc Exp $ +.\" +.\" Copyright (c) 2009/2010 Constantine A. Murenin +.\" +.\" 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. +.\" +.\" 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. +.\" +.Dd April 4, 2010 +.Dt AIBS 4 +.Os +.Sh NAME +.Nm aibs +.Nd "ASUSTeK AI Booster ACPI ATK0110 voltage, temperature and fan sensor" +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following lines in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device acpi" +.Cd "device aibs" +.Ed +.Pp +Alternatively, to load the driver as a +module at boot time, place the following lines in +.Xr loader.conf 5 : +.Bd -literal -offset indent +acpi_load="YES" +aibs_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +driver provides support for the voltage, temperature and fan sensors +available through the +.Tn ATK0110 +.Tn ASOC +.Tn ACPI +device +on +.Tn ASUSTeK +motherboards. +The number of sensors of each type, +as well as the description of each sensor, +varies according to the motherboard. +.Pp +The driver supports an arbitrary set of sensors, +provides descriptions regarding what each sensor is used for, +and reports the current values as well as +the supposed range specifications of each sensor's input +as defined by the motherboard manufacturer through +.Tn ACPI . +.Pp +The range specifications are as follows: +.Bl -bullet +.It +Voltage sensors have a lower and an upper range specification. +.It +Temperature sensors have two upper specifications. +.It +Fan sensors may either have only the lower specification, +or, depending on the +.Tn DSDT , +one lower and one upper specification. +.El +.Pp +Sensor readings and the range specifications are made available through the +.Xr sysctl 3 +interface, +and can be monitored with +.Xr sysctl 8 . +For example, on an ASUS V3-P5G965 barebone: +.Bd -literal -offset indent +> sysctl dev.aibs.0.{volt,temp,fan} +dev.aibs.0.volt.0: 1192 850 1600 +dev.aibs.0.volt.1: 3312 2970 3630 +dev.aibs.0.volt.2: 5017 4500 5500 +dev.aibs.0.volt.3: 12302 10200 13800 +dev.aibs.0.temp.0: 28.0C 80.0C 95.0C +dev.aibs.0.temp.1: 55.0C 60.0C 95.0C +dev.aibs.0.fan.0: 878 600 7200 +dev.aibs.0.fan.1: 0 700 7200 +.Pp +> sysctl -d dev.aibs.0.{volt,temp,fan} +dev.aibs.0.volt: +dev.aibs.0.volt.0: Vcore Voltage +dev.aibs.0.volt.1: +3.3 Voltage +dev.aibs.0.volt.2: +5 Voltage +dev.aibs.0.volt.3: +12 Voltage +dev.aibs.0.temp: +dev.aibs.0.temp.0: CPU Temperature +dev.aibs.0.temp.1: MB Temperature +dev.aibs.0.fan: +dev.aibs.0.fan.0: CPU FAN Speed +dev.aibs.0.fan.1: CHASSIS FAN Speed +.Ed +.Pp +Generally, sensors provided by the +.Nm +driver may also be supported by certain other drivers or utilities +that access the +.Tn ISA / +.Tn LPC +or +.Tn I2C / +.Tn SMBus +devices directly. +The precise collection of +.Nm +sensors is comprised of the sensors +specifically utilised in the motherboard +design, which may be supported through +a combination of one or more physical hardware monitoring chips. +.Pp +The +.Nm +driver, however, provides the following advantages +when compared to the native hardware monitoring drivers or other utilities: +.Bl -bullet +.It +Sensor values from +.Nm +are expected to be more reliable. +For example, voltage sensors in many hardware monitoring chips +can only sense voltage from 0 to 2 or 4 volts, and the excessive +voltage is removed by the resistors, which may vary with the motherboard +and with the voltage that is being sensed. +In +.Nm , +the required resistor factors are provided by +the motherboard manufacturer through +.Tn ACPI ; +in the native drivers, the resistor factors +are encoded into the driver based on the chip manufacturer's recommendations. +In essence, sensor values from +.Nm +are very likely to be identical to the readings from the +Hardware Monitor screen in the BIOS. +.It +Sensor descriptions from +.Nm +are more likely to match the markings on the motherboard. +.It +Sensor range specifications are supported by +.Nm . +The range specification is reported +for each individual sensor as suggested by the motherboard manufacturer. +For example, the threshold for the CPU temperature sensor is likely +to be significantly higher than that for the chassis temperature sensor. +.It +Support for newer chips in +.Nm . +Newer chips may miss a native driver, +but should be supported through +.Nm +regardless. +.El +.Sh SEE ALSO +.Xr sysctl 3 , +.Xr acpi 4 , +.Xr sysctl 8 +.Sh HISTORY +The +.Nm +driver first appeared in +.Ox 4.7 , +.Dx 2.5 , +.Nx 6.0 +and +.Fx 9.0 . +.Pp +An earlier version of the driver, +.Nm acpi_aiboost , +first appeared in +.Fx 7.0 +and +.Nx 5.0 . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written for +.Ox , +.Dx , +.Nx +and +.Fx +by +.An Constantine A. Murenin Aq cnst@FreeBSD.org , +Raouf Boutaba Research Group, +David R. Cheriton School of Computer Science, +University of Waterloo. +.Pp +An earlier version of the driver, named +.Nm acpi_aiboost , +was written for +.Fx +by +.An Takanori Watanabe . Modified: stable/8/sys/conf/files ============================================================================== --- stable/8/sys/conf/files Sun Jul 25 17:43:38 2010 (r210475) +++ stable/8/sys/conf/files Sun Jul 25 17:48:16 2010 (r210476) @@ -416,6 +416,7 @@ dev/acpi_support/acpi_ibm.c optional acp dev/acpi_support/acpi_panasonic.c optional acpi_panasonic acpi dev/acpi_support/acpi_sony.c optional acpi_sony acpi dev/acpi_support/acpi_toshiba.c optional acpi_toshiba acpi +dev/acpi_support/atk0110.c optional aibs acpi dev/acpica/Osd/OsdDebug.c optional acpi dev/acpica/Osd/OsdHardware.c optional acpi dev/acpica/Osd/OsdInterrupt.c optional acpi Copied: stable/8/sys/dev/acpi_support/atk0110.c (from r209523, head/sys/dev/acpi_support/atk0110.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/sys/dev/acpi_support/atk0110.c Sun Jul 25 17:48:16 2010 (r210476, copy of r209523, head/sys/dev/acpi_support/atk0110.c) @@ -0,0 +1,358 @@ +/* $NetBSD: atk0110.c,v 1.4 2010/02/11 06:54:57 cnst Exp $ */ +/* $OpenBSD: atk0110.c,v 1.1 2009/07/23 01:38:16 cnst Exp $ */ + +/* + * Copyright (c) 2009, 2010 Constantine A. Murenin + * + * 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. + * + * 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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +/* + * ASUSTeK AI Booster (ACPI ASOC ATK0110). + * + * This code was originally written for OpenBSD after the techniques + * described in the Linux's asus_atk0110.c and FreeBSD's Takanori Watanabe's + * acpi_aiboost.c were verified to be accurate on the actual hardware kindly + * provided by Sam Fourman Jr. It was subsequently ported from OpenBSD to + * DragonFly BSD, to NetBSD's sysmon_envsys(9) and to FreeBSD's sysctl(9). + * + * -- Constantine A. Murenin + */ + +#define _COMPONENT ACPI_OEM +ACPI_MODULE_NAME("aibs"); +ACPI_SERIAL_DECL(aibs, "aibs"); + +#define AIBS_MORE_SENSORS +#define AIBS_VERBOSE + +enum aibs_type { + AIBS_VOLT, + AIBS_TEMP, + AIBS_FAN +}; + +struct aibs_sensor { + ACPI_INTEGER v; + ACPI_INTEGER i; + ACPI_INTEGER l; + ACPI_INTEGER h; + enum aibs_type t; +}; + +struct aibs_softc { + struct device *sc_dev; + ACPI_HANDLE sc_ah; + + struct aibs_sensor *sc_asens_volt; + struct aibs_sensor *sc_asens_temp; + struct aibs_sensor *sc_asens_fan; +}; + +static int aibs_probe(device_t); +static int aibs_attach(device_t); +static int aibs_detach(device_t); +static int aibs_sysctl(SYSCTL_HANDLER_ARGS); + +static void aibs_attach_sif(struct aibs_softc *, enum aibs_type); + +static device_method_t aibs_methods[] = { + DEVMETHOD(device_probe, aibs_probe), + DEVMETHOD(device_attach, aibs_attach), + DEVMETHOD(device_detach, aibs_detach), + { NULL, NULL } +}; + +static driver_t aibs_driver = { + "aibs", + aibs_methods, + sizeof(struct aibs_softc) +}; + +static devclass_t aibs_devclass; + +DRIVER_MODULE(aibs, acpi, aibs_driver, aibs_devclass, NULL, NULL); + + +static char* aibs_hids[] = { + "ATK0110", + NULL +}; + +static int +aibs_probe(device_t dev) +{ + if (acpi_disabled("aibs") || + ACPI_ID_PROBE(device_get_parent(dev), dev, aibs_hids) == NULL) + return ENXIO; + + device_set_desc(dev, "ASUSTeK AI Booster (ACPI ASOC ATK0110)"); + return 0; +} + +static int +aibs_attach(device_t dev) +{ + struct aibs_softc *sc = device_get_softc(dev); + + sc->sc_dev = dev; + sc->sc_ah = acpi_get_handle(dev); + + aibs_attach_sif(sc, AIBS_VOLT); + aibs_attach_sif(sc, AIBS_TEMP); + aibs_attach_sif(sc, AIBS_FAN); + + return 0; +} + +static void +aibs_attach_sif(struct aibs_softc *sc, enum aibs_type st) +{ + ACPI_STATUS s; + ACPI_BUFFER b; + ACPI_OBJECT *bp, *o; + int i, n; + const char *node; + char name[] = "?SIF"; + struct aibs_sensor *as; + struct sysctl_oid *so; + + switch (st) { + case AIBS_VOLT: + node = "volt"; + name[0] = 'V'; + break; + case AIBS_TEMP: + node = "temp"; + name[0] = 'T'; + break; + case AIBS_FAN: + node = "fan"; + name[0] = 'F'; + break; + default: + return; + } + + b.Length = ACPI_ALLOCATE_BUFFER; + s = AcpiEvaluateObjectTyped(sc->sc_ah, name, NULL, &b, + ACPI_TYPE_PACKAGE); + if (ACPI_FAILURE(s)) { + device_printf(sc->sc_dev, "%s not found\n", name); + return; + } + + bp = b.Pointer; + o = bp->Package.Elements; + if (o[0].Type != ACPI_TYPE_INTEGER) { + device_printf(sc->sc_dev, "%s[0]: invalid type\n", name); + AcpiOsFree(b.Pointer); + return; + } + + n = o[0].Integer.Value; + if (bp->Package.Count - 1 < n) { + device_printf(sc->sc_dev, "%s: invalid package\n", name); + AcpiOsFree(b.Pointer); + return; + } else if (bp->Package.Count - 1 > n) { + int on = n; + +#ifdef AIBS_MORE_SENSORS + n = bp->Package.Count - 1; +#endif + device_printf(sc->sc_dev, "%s: malformed package: %i/%i" + ", assume %i\n", name, on, bp->Package.Count - 1, n); + } + if (n < 1) { + device_printf(sc->sc_dev, "%s: no members in the package\n", + name); + AcpiOsFree(b.Pointer); + return; + } + + as = malloc(sizeof(*as) * n, M_DEVBUF, M_NOWAIT | M_ZERO); + if (as == NULL) { + device_printf(sc->sc_dev, "%s: malloc fail\n", name); + AcpiOsFree(b.Pointer); + return; + } + switch (st) { + case AIBS_VOLT: + sc->sc_asens_volt = as; + break; + case AIBS_TEMP: + sc->sc_asens_temp = as; + break; + case AIBS_FAN: + sc->sc_asens_fan = as; + break; + } + + /* sysctl subtree for sensors of this type */ + so = SYSCTL_ADD_NODE(device_get_sysctl_ctx(sc->sc_dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(sc->sc_dev)), st, + node, CTLFLAG_RD, NULL, NULL); + + for (i = 0, o++; i < n; i++, o++) { + ACPI_OBJECT *oi; + char si[3]; + const char *desc; + + /* acpica5 automatically evaluates the referenced package */ + if (o[0].Type != ACPI_TYPE_PACKAGE) { + device_printf(sc->sc_dev, + "%s: %i: not a package: %i type\n", + name, i, o[0].Type); + continue; + } + oi = o[0].Package.Elements; + if (o[0].Package.Count != 5 || + oi[0].Type != ACPI_TYPE_INTEGER || + oi[1].Type != ACPI_TYPE_STRING || + oi[2].Type != ACPI_TYPE_INTEGER || + oi[3].Type != ACPI_TYPE_INTEGER || + oi[4].Type != ACPI_TYPE_INTEGER) { + device_printf(sc->sc_dev, + "%s: %i: invalid package\n", + name, i); + continue; + } + as[i].i = oi[0].Integer.Value; + desc = oi[1].String.Pointer; + as[i].l = oi[2].Integer.Value; + as[i].h = oi[3].Integer.Value; + as[i].t = st; +#ifdef AIBS_VERBOSE + device_printf(sc->sc_dev, "%c%i: " + "0x%08"PRIx64" %20s %5"PRIi64" / %5"PRIi64" " + "0x%"PRIx64"\n", + name[0], i, + as[i].i, desc, (int64_t)as[i].l, (int64_t)as[i].h, + oi[4].Integer.Value); +#endif + snprintf(si, sizeof(si), "%i", i); + SYSCTL_ADD_PROC(device_get_sysctl_ctx(sc->sc_dev), + SYSCTL_CHILDREN(so), i, si, CTLTYPE_OPAQUE | CTLFLAG_RD, + sc, st, aibs_sysctl, st == AIBS_TEMP ? "IK" : "I", desc); + } + + AcpiOsFree(b.Pointer); +} + +static int +aibs_detach(device_t dev) +{ + struct aibs_softc *sc = device_get_softc(dev); + + if (sc->sc_asens_volt != NULL) + free(sc->sc_asens_volt, M_DEVBUF); + if (sc->sc_asens_temp != NULL) + free(sc->sc_asens_temp, M_DEVBUF); + if (sc->sc_asens_fan != NULL) + free(sc->sc_asens_fan, M_DEVBUF); + return 0; +} + +#ifdef AIBS_VERBOSE +#define ddevice_printf(x...) device_printf(x) +#else +#define ddevice_printf(x...) +#endif + +static int +aibs_sysctl(SYSCTL_HANDLER_ARGS) +{ + struct aibs_softc *sc = arg1; + enum aibs_type st = arg2; + int i = oidp->oid_number; + ACPI_STATUS rs; + ACPI_OBJECT p, *bp; + ACPI_OBJECT_LIST mp; + ACPI_BUFFER b; + char *name; + struct aibs_sensor *as; + ACPI_INTEGER v, l, h; + int so[3]; + + switch (st) { + case AIBS_VOLT: + name = "RVLT"; + as = sc->sc_asens_volt; + break; + case AIBS_TEMP: + name = "RTMP"; + as = sc->sc_asens_temp; + break; + case AIBS_FAN: + name = "RFAN"; + as = sc->sc_asens_fan; + break; + default: + return ENOENT; + } + if (as == NULL) + return ENOENT; + l = as[i].l; + h = as[i].h; + p.Type = ACPI_TYPE_INTEGER; + p.Integer.Value = as[i].i; + mp.Count = 1; + mp.Pointer = &p; + b.Length = ACPI_ALLOCATE_BUFFER; + ACPI_SERIAL_BEGIN(aibs); + rs = AcpiEvaluateObjectTyped(sc->sc_ah, name, &mp, &b, + ACPI_TYPE_INTEGER); + if (ACPI_FAILURE(rs)) { + ddevice_printf(sc->sc_dev, + "%s: %i: evaluation failed\n", + name, i); + ACPI_SERIAL_END(aibs); + return EIO; + } + bp = b.Pointer; + v = bp->Integer.Value; + AcpiOsFree(b.Pointer); + ACPI_SERIAL_END(aibs); + + switch (st) { + case AIBS_VOLT: + break; + case AIBS_TEMP: + v += 2732; + l += 2732; + h += 2732; + break; + case AIBS_FAN: + break; + } + so[0] = v; + so[1] = l; + so[2] = h; + return sysctl_handle_opaque(oidp, &so, sizeof(so), req); +} Modified: stable/8/sys/i386/conf/NOTES ============================================================================== --- stable/8/sys/i386/conf/NOTES Sun Jul 25 17:43:38 2010 (r210475) +++ stable/8/sys/i386/conf/NOTES Sun Jul 25 17:48:16 2010 (r210476) @@ -506,6 +506,9 @@ device acpi_video # ACPI Docking Station device acpi_dock +# ACPI ASOC ATK0110 ASUSTeK AI Booster (voltage, temperature and fan sensors) +device aibs + # The cpufreq(4) driver provides support for non-ACPI CPU frequency control device cpufreq Modified: stable/8/sys/modules/acpi/Makefile ============================================================================== --- stable/8/sys/modules/acpi/Makefile Sun Jul 25 17:43:38 2010 (r210475) +++ stable/8/sys/modules/acpi/Makefile Sun Jul 25 17:48:16 2010 (r210476) @@ -6,6 +6,6 @@ SUBDIR= acpi SUBDIR+= acpi_aiboost acpi_asus acpi_fujitsu acpi_hp acpi_ibm \ acpi_panasonic acpi_sony acpi_toshiba acpi_video \ - acpi_dock acpi_wmi + acpi_dock acpi_wmi aibs .include From owner-svn-src-stable-8@FreeBSD.ORG Sun Jul 25 20:00:15 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 808C3106566B; Sun, 25 Jul 2010 20:00:15 +0000 (UTC) (envelope-from brueffer@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 843A28FC16; Sun, 25 Jul 2010 20:00:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6PK0FKT045198; Sun, 25 Jul 2010 20:00:15 GMT (envelope-from brueffer@svn.freebsd.org) Received: (from brueffer@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6PK0FBg045196; Sun, 25 Jul 2010 20:00:15 GMT (envelope-from brueffer@svn.freebsd.org) Message-Id: <201007252000.o6PK0FBg045196@svn.freebsd.org> From: Christian Brueffer Date: Sun, 25 Jul 2010 20:00:15 +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: r210480 - stable/8/share/man/man4 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jul 2010 20:00:15 -0000 Author: brueffer Date: Sun Jul 25 20:00:15 2010 New Revision: 210480 URL: http://svn.freebsd.org/changeset/base/210480 Log: MFC: r207829 Various wording, spelling and markup fixes. Modified: stable/8/share/man/man4/iscsi_initiator.4 Directory Properties: stable/8/share/man/man4/ (props changed) Modified: stable/8/share/man/man4/iscsi_initiator.4 ============================================================================== --- stable/8/share/man/man4/iscsi_initiator.4 Sun Jul 25 18:57:48 2010 (r210479) +++ stable/8/share/man/man4/iscsi_initiator.4 Sun Jul 25 20:00:15 2010 (r210480) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 23, 2007 +.Dd May 9, 2010 .Os .Dt ISCSI_INITIATOR 4 .Sh NAME @@ -48,34 +48,39 @@ iscsi_initiator_load="YES" The .Nm implements the kernel side of the Internet SCSI (iSCSI) network -protocol standard, the user land companion is +protocol standard. +The userland companion is .Xr iscontrol 8 , and permits access to remote .Em virtual SCSI devices via .Xr cam 4 . .Sh SYSCTL VARIABLES -.Bl -tag -width ".Va net.iscsi.n.targeaddress" +.Bl -tag -width "net.iscsi.n.targedaddress" .It Va debug.iscsi_initiator set the debug-level, 0 means no debugging, 9 for maximum. .It Va net.iscsi.isid the initiator part of the Session Identifier. -.It "the following are informative only:" +.El +.Pp +The following are informative only: +.Pp +.Bl -tag -width "net.iscsi.n.targedaddress" .It Va net.iscsi.driver_version the current version of the driver. .It Va net.iscsi.sessions the number of current active sessions. .It Va net.iscsi.n.targetname -is the targe name of session +the target name of session .Em n . -.It Va net.iscsi.n.targeaddress -is the IP address of the target of session +.It Va net.iscsi.n.targedaddress +the IP address of the target of session .Em n . .It Va net.iscsi.n.stats -are some statistics for session +statistics for session .EM n .It Va net.iscsi.n.pid -is the +the .Em "process id" of the userland side of session .Em n , From owner-svn-src-stable-8@FreeBSD.ORG Sun Jul 25 21:32:46 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A7F37106566B; Sun, 25 Jul 2010 21:32:46 +0000 (UTC) (envelope-from gavin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 89C668FC0A; Sun, 25 Jul 2010 21:32:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6PLWkWj065816; Sun, 25 Jul 2010 21:32:46 GMT (envelope-from gavin@svn.freebsd.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6PLWkbf065813; Sun, 25 Jul 2010 21:32:46 GMT (envelope-from gavin@svn.freebsd.org) Message-Id: <201007252132.o6PLWkbf065813@svn.freebsd.org> From: Gavin Atkinson Date: Sun, 25 Jul 2010 21:32:46 +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: r210483 - in stable/8/sys/dev/usb: . quirk X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jul 2010 21:32:46 -0000 Author: gavin Date: Sun Jul 25 21:32:46 2010 New Revision: 210483 URL: http://svn.freebsd.org/changeset/base/210483 Log: Merge r209445 from head (original commit by thompsa): Add a mass storage quirk. PR: usb/147196 Modified: stable/8/sys/dev/usb/quirk/usb_quirk.c stable/8/sys/dev/usb/usbdevs 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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/dev/usb/quirk/usb_quirk.c ============================================================================== --- stable/8/sys/dev/usb/quirk/usb_quirk.c Sun Jul 25 20:21:32 2010 (r210482) +++ stable/8/sys/dev/usb/quirk/usb_quirk.c Sun Jul 25 21:32:46 2010 (r210483) @@ -450,6 +450,7 @@ static struct usb_quirk_entry usb_quirks UQ_MSC_FORCE_PROTO_SCSI, UQ_MSC_NO_SYNC_CACHE), USB_QUIRK(ASUS, GMSC, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE), USB_QUIRK(UNKNOWN4, USBMEMSTICK, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE), + USB_QUIRK(UNKNOWN5, USB2IDEBRIDGE, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE), }; #undef USB_QUIRK_VP #undef USB_QUIRK Modified: stable/8/sys/dev/usb/usbdevs ============================================================================== --- stable/8/sys/dev/usb/usbdevs Sun Jul 25 20:21:32 2010 (r210482) +++ stable/8/sys/dev/usb/usbdevs Sun Jul 25 21:32:46 2010 (r210483) @@ -407,6 +407,7 @@ vendor ARASAN 0x07da Arasan Chip System vendor ALLIEDCABLE 0x07e6 Allied Cable vendor STSN 0x07ef STSN vendor CENTURY 0x07f7 Century Corp +vendor UNKNOWN5 0x07ff Unknown vendor ZOOM 0x0803 Zoom Telephonics vendor PCS 0x0810 Personal Communication Systems vendor ALPHASMART 0x081e AlphaSmart, Inc. @@ -3052,6 +3053,9 @@ product UNIACCESS PANACHE 0x0101 Panache /* Unknown vendors */ product UNKNOWN4 USBMEMSTICK 0x6025 Flash Disk CBM +/* Unknown vendors */ +product UNKNOWN5 USB2IDEBRIDGE 0x00ff USB 2.0 ATA/SATA Bridge + /* U.S. Robotics products */ product USR USR5423 0x0121 USR5423 WLAN From owner-svn-src-stable-8@FreeBSD.ORG Sun Jul 25 21:38:23 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 079DB106566C; Sun, 25 Jul 2010 21:38:23 +0000 (UTC) (envelope-from gavin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0EE7C8FC12; Sun, 25 Jul 2010 21:38:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6PLcMDo067126; Sun, 25 Jul 2010 21:38:22 GMT (envelope-from gavin@svn.freebsd.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6PLcMa4067123; Sun, 25 Jul 2010 21:38:22 GMT (envelope-from gavin@svn.freebsd.org) Message-Id: <201007252138.o6PLcMa4067123@svn.freebsd.org> From: Gavin Atkinson Date: Sun, 25 Jul 2010 21:38: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: r210485 - in stable/8/sys/dev/usb: . wlan X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jul 2010 21:38:23 -0000 Author: gavin Date: Sun Jul 25 21:38:22 2010 New Revision: 210485 URL: http://svn.freebsd.org/changeset/base/210485 Log: Merge r209447 (by thompsa) from head: Add new device id. PR: usb/147190 Modified: stable/8/sys/dev/usb/usbdevs stable/8/sys/dev/usb/wlan/if_upgt.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/dev/usb/usbdevs ============================================================================== --- stable/8/sys/dev/usb/usbdevs Sun Jul 25 21:35:56 2010 (r210484) +++ stable/8/sys/dev/usb/usbdevs Sun Jul 25 21:38:22 2010 (r210485) @@ -3057,6 +3057,7 @@ product UNKNOWN4 USBMEMSTICK 0x6025 Flas product UNKNOWN5 USB2IDEBRIDGE 0x00ff USB 2.0 ATA/SATA Bridge /* U.S. Robotics products */ +product USR USR5422 0x0118 USR5422 WLAN product USR USR5423 0x0121 USR5423 WLAN /* VIA Technologies products */ Modified: stable/8/sys/dev/usb/wlan/if_upgt.c ============================================================================== --- stable/8/sys/dev/usb/wlan/if_upgt.c Sun Jul 25 21:35:56 2010 (r210484) +++ stable/8/sys/dev/usb/wlan/if_upgt.c Sun Jul 25 21:38:22 2010 (r210485) @@ -184,6 +184,7 @@ static const struct usb_device_id upgt_d UPGT_DEV(GLOBESPAN, PRISM_GT_2), UPGT_DEV(INTERSIL, PRISM_GT), UPGT_DEV(SMC, 2862WG), + UPGT_DEV(USR, USR5422), UPGT_DEV(WISTRONNEWEB, UR045G), UPGT_DEV(XYRATEX, PRISM_GT_1), UPGT_DEV(XYRATEX, PRISM_GT_2), From owner-svn-src-stable-8@FreeBSD.ORG Mon Jul 26 01:28:34 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A2F951065675; Mon, 26 Jul 2010 01:28:34 +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 7A71B8FC0C; Mon, 26 Jul 2010 01:28:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6Q1SYMU017974; Mon, 26 Jul 2010 01:28:34 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6Q1SYJL017973; Mon, 26 Jul 2010 01:28:34 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201007260128.o6Q1SYJL017973@svn.freebsd.org> From: Doug Barton Date: Mon, 26 Jul 2010 01:28: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: r210489 - in stable/8/games/fortune: . datfiles X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jul 2010 01:28:34 -0000 Author: dougb Date: Mon Jul 26 01:28:34 2010 New Revision: 210489 URL: http://svn.freebsd.org/changeset/base/210489 Log: Pull spurious mergeinfo from datfiles up to src/games/fortune Modified: Directory Properties: stable/8/games/fortune/ (props changed) stable/8/games/fortune/datfiles/ (props changed) From owner-svn-src-stable-8@FreeBSD.ORG Mon Jul 26 01:31:49 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 40254106564A; Mon, 26 Jul 2010 01:31:49 +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 2D34F8FC0C; Mon, 26 Jul 2010 01:31:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6Q1VnEn018764; Mon, 26 Jul 2010 01:31:49 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6Q1VlHp018730; Mon, 26 Jul 2010 01:31:47 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201007260131.o6Q1VlHp018730@svn.freebsd.org> From: Doug Barton Date: Mon, 26 Jul 2010 01:31: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: r210490 - stable/8/games/fortune/datfiles X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jul 2010 01:31:49 -0000 Author: dougb Date: Mon Jul 26 01:31:47 2010 New Revision: 210490 URL: http://svn.freebsd.org/changeset/base/210490 Log: MFC 209531: Taken from actual police videos ... MFC 210484: Correct a Cecil Beaton quote Modified: stable/8/games/fortune/datfiles/fortunes stable/8/games/fortune/datfiles/fortunes-o.real Directory Properties: stable/8/games/fortune/ (props changed) Modified: stable/8/games/fortune/datfiles/fortunes ============================================================================== --- stable/8/games/fortune/datfiles/fortunes Mon Jul 26 01:28:34 2010 (r210489) +++ stable/8/games/fortune/datfiles/fortunes Mon Jul 26 01:31:47 2010 (r210490) @@ -37880,7 +37880,7 @@ behave very differently from those who n order to get power we would have to become very much like them. (Lenin's fatal mistake, both in theory and in practice.) % -Perhaps the world's second words crime is boredom. The first is +Perhaps the world's second-worst crime is boredom. The first is being a bore. -- Cecil Beaton % Modified: stable/8/games/fortune/datfiles/fortunes-o.real ============================================================================== --- stable/8/games/fortune/datfiles/fortunes-o.real Mon Jul 26 01:28:34 2010 (r210489) +++ stable/8/games/fortune/datfiles/fortunes-o.real Mon Jul 26 01:31:47 2010 (r210490) @@ -12433,6 +12433,39 @@ And sure enough she'll take you home and (chorus) -- Crosby, Stills, Nash, "Fair Game" % +Taken from actual police car videos: + +(15) Relax! The handcuffs are tight because they're new. They'll + stretch out after you wear them awhile. +(14) Take your hands off the car and I'll make your birth certificate + a worthless document. +(13) If you run you'll only go to jail tired. +(12) Can you run faster than 1200 feet per second? In case you didn't + know that's the average speed of a 9 mm bullet fired from my gun. +(11) So you don't know how fast you were going. I guess that means I + can write anything I want on the ticket, huh? +(10) Yes, sir, you can talk to the shift supervisor, but I don't think + it will help. Oh, did I mention that I AM the shift supervisor? +(9) Warning? You want a warning? OK, I'm warning you not to do that + again or I'll give you another ticket. +(8) The answer to this last question will determine whether you are + drunk or not. Is Mickey Mouse a cat or a dog? +% +Taken from actual police car videos: + +(7) Fair? You want me to be fair? Listen, fair is a place where you + go to ride on rides, eat cotton candy, and step in monkey poop. +(6) Yeah, we have a quota. Two more tickets and my wife gets a toaster + oven. +(5) No, sir, we don't have quotas anymore. We used to have quotas but + now we're allowed to write as many tickets as we want. +(4) Just how big were those two beers? +(3) In God we trust, all others we run through CPIC/NCIC. +(2) I'm glad to hear the Chief of Police is a good personal friend of + yours. At least you know someone who can post your bail. +(1) You didn't think we gave pretty women tickets? + You're right, we don't -- sign here. +% Taoism: Shit Happens. Confucianism: Confucius say, "Shit Happens". Buddhism: If shit happens, it isn't really shit. From owner-svn-src-stable-8@FreeBSD.ORG Mon Jul 26 12:47:39 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EF6591065675; Mon, 26 Jul 2010 12:47:39 +0000 (UTC) (envelope-from gavin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E281A8FC18; Mon, 26 Jul 2010 12:47:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6QCldKf073616; Mon, 26 Jul 2010 12:47:39 GMT (envelope-from gavin@svn.freebsd.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6QClddw073614; Mon, 26 Jul 2010 12:47:39 GMT (envelope-from gavin@svn.freebsd.org) Message-Id: <201007261247.o6QClddw073614@svn.freebsd.org> From: Gavin Atkinson Date: Mon, 26 Jul 2010 12:47:39 +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: r210497 - stable/8/sys/dev/usb/net X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jul 2010 12:47:40 -0000 Author: gavin Date: Mon Jul 26 12:47:39 2010 New Revision: 210497 URL: http://svn.freebsd.org/changeset/base/210497 Log: Merge r209444 (by thompsa) from head: Add new device ID. PR: usb/146907 Submitted by: Modified: stable/8/sys/dev/usb/net/if_rue.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/dev/usb/net/if_rue.c ============================================================================== --- stable/8/sys/dev/usb/net/if_rue.c Mon Jul 26 10:37:14 2010 (r210496) +++ stable/8/sys/dev/usb/net/if_rue.c Mon Jul 26 12:47:39 2010 (r210497) @@ -112,6 +112,7 @@ SYSCTL_INT(_hw_usb_rue, OID_AUTO, debug, static const struct usb_device_id rue_devs[] = { {USB_VPI(USB_VENDOR_MELCO, USB_PRODUCT_MELCO_LUAKTX, 0)}, {USB_VPI(USB_VENDOR_REALTEK, USB_PRODUCT_REALTEK_USBKR100, 0)}, + {USB_VPI(USB_VENDOR_OQO, USB_PRODUCT_OQO_ETHER01, 0)}, }; /* prototypes */ From owner-svn-src-stable-8@FreeBSD.ORG Mon Jul 26 17:38:56 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 67680106566C; Mon, 26 Jul 2010 17:38:56 +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 572018FC15; Mon, 26 Jul 2010 17:38:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6QHcuEv038818; Mon, 26 Jul 2010 17:38:56 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6QHcuos038816; Mon, 26 Jul 2010 17:38:56 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201007261738.o6QHcuos038816@svn.freebsd.org> From: John Baldwin Date: Mon, 26 Jul 2010 17:38: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: r210506 - stable/8/sys/pc98/pc98 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jul 2010 17:38:56 -0000 Author: jhb Date: Mon Jul 26 17:38:56 2010 New Revision: 210506 URL: http://svn.freebsd.org/changeset/base/210506 Log: MFC 208633 (Missed in earlier CMCI MFC): Defer initializing machine checks for the boot CPU until the local APIC is fully configured. Modified: stable/8/sys/pc98/pc98/machdep.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/pc98/pc98/machdep.c ============================================================================== --- stable/8/sys/pc98/pc98/machdep.c Mon Jul 26 17:31:15 2010 (r210505) +++ stable/8/sys/pc98/pc98/machdep.c Mon Jul 26 17:38:56 2010 (r210506) @@ -257,8 +257,6 @@ cpu_startup(dummy) vm_pager_bufferinit(); cpu_setregs(); - - mca_init(); } /* From owner-svn-src-stable-8@FreeBSD.ORG Mon Jul 26 18:22:46 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9E5C11065676; Mon, 26 Jul 2010 18:22:46 +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 8B68F8FC14; Mon, 26 Jul 2010 18:22:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6QIMkuB048695; Mon, 26 Jul 2010 18:22:46 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6QIMkjv048687; Mon, 26 Jul 2010 18:22:46 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201007261822.o6QIMkjv048687@svn.freebsd.org> From: John Baldwin Date: Mon, 26 Jul 2010 18:22:46 +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: r210509 - in stable/8/sys: amd64/acpica amd64/amd64 amd64/include i386/acpica i386/i386 i386/include X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jul 2010 18:22:46 -0000 Author: jhb Date: Mon Jul 26 18:22:46 2010 New Revision: 210509 URL: http://svn.freebsd.org/changeset/base/210509 Log: MFC 209212: Restore the machine check register banks on resume. For banks being monitored via CMCI, reset the interrupt threshold to 1 on resume. Modified: stable/8/sys/amd64/acpica/acpi_wakeup.c stable/8/sys/amd64/amd64/mca.c stable/8/sys/amd64/amd64/mp_machdep.c stable/8/sys/amd64/include/mca.h stable/8/sys/i386/acpica/acpi_wakeup.c stable/8/sys/i386/i386/mca.c stable/8/sys/i386/include/mca.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/amd64/acpica/acpi_wakeup.c ============================================================================== --- stable/8/sys/amd64/acpica/acpi_wakeup.c Mon Jul 26 18:07:43 2010 (r210508) +++ stable/8/sys/amd64/acpica/acpi_wakeup.c Mon Jul 26 18:22:46 2010 (r210509) @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -306,6 +307,7 @@ out: #endif load_cr3(cr3); + mca_resume(); intr_resume(); intr_restore(rf); Modified: stable/8/sys/amd64/amd64/mca.c ============================================================================== --- stable/8/sys/amd64/amd64/mca.c Mon Jul 26 18:07:43 2010 (r210508) +++ stable/8/sys/amd64/amd64/mca.c Mon Jul 26 18:22:46 2010 (r210509) @@ -642,6 +642,15 @@ static void mca_setup(uint64_t mcg_cap) { + /* + * On AMD Family 10h processors, unless logging of level one TLB + * parity (L1TP) errors is disabled, enable the recommended workaround + * for Erratum 383. + */ + if (cpu_vendor_id == CPU_VENDOR_AMD && + CPUID_TO_FAMILY(cpu_id) == 0x10 && amd10h_L1TP) + workaround_erratum383 = 1; + mtx_init(&mca_lock, "mca", NULL, MTX_SPIN); STAILQ_INIT(&mca_records); TASK_INIT(&mca_task, 0x8000, mca_scan_cpus, NULL); @@ -708,36 +717,54 @@ cmci_monitor(int i) PCPU_SET(cmci_mask, PCPU_GET(cmci_mask) | 1 << i); } -/* Must be executed on each CPU. */ -void -mca_init(void) +/* + * For resume, reset the threshold for any banks we monitor back to + * one and throw away the timestamp of the last interrupt. + */ +static void +cmci_resume(int i) +{ + struct cmc_state *cc; + uint64_t ctl; + + KASSERT(i < cmc_banks, ("CPU %d has more MC banks", PCPU_GET(cpuid))); + + /* Ignore banks not monitored by this CPU. */ + if (!(PCPU_GET(cmci_mask) & 1 << i)) + return; + + cc = &cmc_state[PCPU_GET(cpuid)][i]; + cc->last_intr = -ticks; + ctl = rdmsr(MSR_MC_CTL2(i)); + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= MC_CTL2_CMCI_EN | 1; + wrmsr(MSR_MC_CTL2(i), ctl); +} + +/* + * Initializes per-CPU machine check registers and enables corrected + * machine check interrupts. + */ +static void +_mca_init(int boot) { uint64_t mcg_cap; uint64_t ctl, mask; - int skip; - int i; + int i, skip; /* MCE is required. */ if (!mca_enabled || !(cpu_feature & CPUID_MCE)) return; - /* - * On AMD Family 10h processors, unless logging of level one TLB - * parity (L1TP) errors is disabled, enable the recommended workaround - * for Erratum 383. - */ - if (cpu_vendor_id == CPU_VENDOR_AMD && - CPUID_TO_FAMILY(cpu_id) == 0x10 && amd10h_L1TP) - workaround_erratum383 = 1; - if (cpu_feature & CPUID_MCA) { - PCPU_SET(cmci_mask, 0); + if (boot) + PCPU_SET(cmci_mask, 0); mcg_cap = rdmsr(MSR_MCG_CAP); if (mcg_cap & MCG_CAP_CTL_P) /* Enable MCA features. */ wrmsr(MSR_MCG_CTL, MCG_CTL_ENABLE); - if (PCPU_GET(cpuid) == 0) + if (PCPU_GET(cpuid) == 0 && boot) mca_setup(mcg_cap); /* @@ -775,20 +802,40 @@ mca_init(void) if (!skip) wrmsr(MSR_MC_CTL(i), ctl); - if (mcg_cap & MCG_CAP_CMCI_P) - cmci_monitor(i); + if (mcg_cap & MCG_CAP_CMCI_P) { + if (boot) + cmci_monitor(i); + else + cmci_resume(i); + } /* Clear all errors. */ wrmsr(MSR_MC_STATUS(i), 0); } - if (PCPU_GET(cmci_mask) != 0) + if (PCPU_GET(cmci_mask) != 0 && boot) lapic_enable_cmc(); } load_cr4(rcr4() | CR4_MCE); } +/* Must be executed on each CPU during boot. */ +void +mca_init(void) +{ + + _mca_init(1); +} + +/* Must be executed on each CPU during resume. */ +void +mca_resume(void) +{ + + _mca_init(0); +} + /* * The machine check registers for the BSP cannot be initialized until * the local APIC is initialized. This happens at SI_SUB_CPU, Modified: stable/8/sys/amd64/amd64/mp_machdep.c ============================================================================== --- stable/8/sys/amd64/amd64/mp_machdep.c Mon Jul 26 18:07:43 2010 (r210508) +++ stable/8/sys/amd64/amd64/mp_machdep.c Mon Jul 26 18:22:46 2010 (r210509) @@ -1273,6 +1273,7 @@ cpususpend_handler(void) /* Restore CR3 and enable interrupts */ load_cr3(cr3); + mca_resume(); lapic_setup(0); intr_restore(rf); } Modified: stable/8/sys/amd64/include/mca.h ============================================================================== --- stable/8/sys/amd64/include/mca.h Mon Jul 26 18:07:43 2010 (r210508) +++ stable/8/sys/amd64/include/mca.h Mon Jul 26 18:22:46 2010 (r210509) @@ -49,6 +49,7 @@ struct mca_record { void cmc_intr(void); void mca_init(void); int mca_intr(void); +void mca_resume(void); #endif Modified: stable/8/sys/i386/acpica/acpi_wakeup.c ============================================================================== --- stable/8/sys/i386/acpica/acpi_wakeup.c Mon Jul 26 18:07:43 2010 (r210508) +++ stable/8/sys/i386/acpica/acpi_wakeup.c Mon Jul 26 18:22:46 2010 (r210509) @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -272,6 +273,7 @@ acpi_sleep_machdep(struct acpi_softc *sc for (;;) ; } else { /* Execute Wakeup */ + mca_resume(); intr_resume(); if (bootverbose) { Modified: stable/8/sys/i386/i386/mca.c ============================================================================== --- stable/8/sys/i386/i386/mca.c Mon Jul 26 18:07:43 2010 (r210508) +++ stable/8/sys/i386/i386/mca.c Mon Jul 26 18:22:46 2010 (r210509) @@ -657,6 +657,15 @@ static void mca_setup(uint64_t mcg_cap) { + /* + * On AMD Family 10h processors, unless logging of level one TLB + * parity (L1TP) errors is disabled, enable the recommended workaround + * for Erratum 383. + */ + if (cpu_vendor_id == CPU_VENDOR_AMD && + CPUID_TO_FAMILY(cpu_id) == 0x10 && amd10h_L1TP) + workaround_erratum383 = 1; + mtx_init(&mca_lock, "mca", NULL, MTX_SPIN); STAILQ_INIT(&mca_records); TASK_INIT(&mca_task, 0x8000, mca_scan_cpus, NULL); @@ -725,38 +734,56 @@ cmci_monitor(int i) /* Mark this bank as monitored. */ PCPU_SET(cmci_mask, PCPU_GET(cmci_mask) | 1 << i); } + +/* + * For resume, reset the threshold for any banks we monitor back to + * one and throw away the timestamp of the last interrupt. + */ +static void +cmci_resume(int i) +{ + struct cmc_state *cc; + uint64_t ctl; + + KASSERT(i < cmc_banks, ("CPU %d has more MC banks", PCPU_GET(cpuid))); + + /* Ignore banks not monitored by this CPU. */ + if (!(PCPU_GET(cmci_mask) & 1 << i)) + return; + + cc = &cmc_state[PCPU_GET(cpuid)][i]; + cc->last_intr = -ticks; + ctl = rdmsr(MSR_MC_CTL2(i)); + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= MC_CTL2_CMCI_EN | 1; + wrmsr(MSR_MC_CTL2(i), ctl); +} #endif -/* Must be executed on each CPU. */ -void -mca_init(void) +/* + * Initializes per-CPU machine check registers and enables corrected + * machine check interrupts. + */ +static void +_mca_init(int boot) { uint64_t mcg_cap; uint64_t ctl, mask; - int skip; - int i; + int i, skip; /* MCE is required. */ if (!mca_enabled || !(cpu_feature & CPUID_MCE)) return; - /* - * On AMD Family 10h processors, unless logging of level one TLB - * parity (L1TP) errors is disabled, enable the recommended workaround - * for Erratum 383. - */ - if (cpu_vendor_id == CPU_VENDOR_AMD && - CPUID_TO_FAMILY(cpu_id) == 0x10 && amd10h_L1TP) - workaround_erratum383 = 1; - if (cpu_feature & CPUID_MCA) { - PCPU_SET(cmci_mask, 0); + if (boot) + PCPU_SET(cmci_mask, 0); mcg_cap = rdmsr(MSR_MCG_CAP); if (mcg_cap & MCG_CAP_CTL_P) /* Enable MCA features. */ wrmsr(MSR_MCG_CTL, MCG_CTL_ENABLE); - if (PCPU_GET(cpuid) == 0) + if (PCPU_GET(cpuid) == 0 && boot) mca_setup(mcg_cap); /* @@ -795,8 +822,12 @@ mca_init(void) wrmsr(MSR_MC_CTL(i), ctl); #ifdef DEV_APIC - if (mcg_cap & MCG_CAP_CMCI_P) - cmci_monitor(i); + if (mcg_cap & MCG_CAP_CMCI_P) { + if (boot) + cmci_monitor(i); + else + cmci_resume(i); + } #endif /* Clear all errors. */ @@ -804,7 +835,7 @@ mca_init(void) } #ifdef DEV_APIC - if (PCPU_GET(cmci_mask) != 0) + if (PCPU_GET(cmci_mask) != 0 && boot) lapic_enable_cmc(); #endif } @@ -812,6 +843,22 @@ mca_init(void) load_cr4(rcr4() | CR4_MCE); } +/* Must be executed on each CPU during boot. */ +void +mca_init(void) +{ + + _mca_init(1); +} + +/* Must be executed on each CPU during resume. */ +void +mca_resume(void) +{ + + _mca_init(0); +} + /* * The machine check registers for the BSP cannot be initialized until * the local APIC is initialized. This happens at SI_SUB_CPU, Modified: stable/8/sys/i386/include/mca.h ============================================================================== --- stable/8/sys/i386/include/mca.h Mon Jul 26 18:07:43 2010 (r210508) +++ stable/8/sys/i386/include/mca.h Mon Jul 26 18:22:46 2010 (r210509) @@ -49,6 +49,7 @@ struct mca_record { void cmc_intr(void); void mca_init(void); int mca_intr(void); +void mca_resume(void); #endif From owner-svn-src-stable-8@FreeBSD.ORG Mon Jul 26 18:54:57 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0F19F1065670; Mon, 26 Jul 2010 18:54: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 D7EFE8FC16; Mon, 26 Jul 2010 18:54:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6QIsuLh056197; Mon, 26 Jul 2010 18:54:56 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6QIsuFs056195; Mon, 26 Jul 2010 18:54:56 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201007261854.o6QIsuFs056195@svn.freebsd.org> From: John Baldwin Date: Mon, 26 Jul 2010 18:54: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: r210512 - stable/8/sys/nfsclient X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jul 2010 18:54:57 -0000 Author: jhb Date: Mon Jul 26 18:54:56 2010 New Revision: 210512 URL: http://svn.freebsd.org/changeset/base/210512 Log: MFC 209948: A previous change moved the GETATTR RPC for open() calls that hit in the name cache up into nfs_lookup() instead of nfs_open(). Continue this trend by flushing the attribute cache for leaf nodes in nfs_lookup() during an open() if we do a LOOKUP RPC. For NFSv3 this should generally be a NOP as the attributes are flushed before fetching the post-op attributes from the LOOKUP RPC which most (all?) NFSv3 servers provide, so the post-op attributes should populate the cache. Now all NFS open() calls will always clear the cached attributes during the nfs_lookup() prior to nfs_open() in the !NMODIFIED case to provide CTOC. As a result, we can remove the conditional flushing of the attribute cache from nfs_open(). Modified: stable/8/sys/nfsclient/nfs_vnops.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/nfsclient/nfs_vnops.c ============================================================================== --- stable/8/sys/nfsclient/nfs_vnops.c Mon Jul 26 18:33:33 2010 (r210511) +++ stable/8/sys/nfsclient/nfs_vnops.c Mon Jul 26 18:54:56 2010 (r210512) @@ -538,15 +538,6 @@ nfs_open(struct vop_open_args *ap) np->n_mtime = vattr.va_mtime; mtx_unlock(&np->n_mtx); } else { - struct thread *td = curthread; - - if (np->n_ac_ts_syscalls != td->td_syscalls || - np->n_ac_ts_tid != td->td_tid || - td->td_proc == NULL || - np->n_ac_ts_pid != td->td_proc->p_pid) { - np->n_attrstamp = 0; - KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); - } mtx_unlock(&np->n_mtx); error = VOP_GETATTR(vp, &vattr, ap->a_cred); if (error) @@ -1123,6 +1114,20 @@ nfs_lookup(struct vop_lookup_args *ap) return (error); } newvp = NFSTOV(np); + + /* + * Flush the attribute cache when opening a leaf node + * to ensure that fresh attributes are fetched in + * nfs_open() if we are unable to fetch attributes + * from the LOOKUP reply. + */ + if ((flags & (ISLASTCN | ISOPEN)) == (ISLASTCN | ISOPEN) && + !(np->n_flag & NMODIFIED)) { + mtx_lock(&np->n_mtx); + np->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(newvp); + mtx_unlock(&np->n_mtx); + } } if (v3) { nfsm_postop_attr(newvp, attrflag); From owner-svn-src-stable-8@FreeBSD.ORG Tue Jul 27 07:19:18 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 032DF1065672; Tue, 27 Jul 2010 07:19:18 +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 E7AAB8FC3C; Tue, 27 Jul 2010 07:19:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6R7JH09020792; Tue, 27 Jul 2010 07:19:17 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6R7JHn1020791; Tue, 27 Jul 2010 07:19:17 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201007270719.o6R7JHn1020791@svn.freebsd.org> From: Alexander Motin Date: Tue, 27 Jul 2010 07:19: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: r210523 - stable/8/sys/sys X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 07:19:18 -0000 Author: mav Date: Tue Jul 27 07:19:17 2010 New Revision: 210523 URL: http://svn.freebsd.org/changeset/base/210523 Log: MFC r210443: Remove extra commas from KTR_EVENT4() macro to match number of CTR6() args. Comparing to other macros there should be strings concatenation, not a separate arguments. Modified: stable/8/sys/sys/ktr.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/sys/ktr.h ============================================================================== --- stable/8/sys/sys/ktr.h Mon Jul 26 23:24:42 2010 (r210522) +++ stable/8/sys/sys/ktr.h Tue Jul 27 07:19:17 2010 (r210523) @@ -201,7 +201,7 @@ void ktr_tracepoint(u_int mask, const ch ident, edat, (v0), (v1), (v2)) #define KTR_EVENT4(m, egroup, ident, etype, edat, \ a0, v0, a1, v1, a2, v2, a3, v3) \ - CTR6(m,KTR_EFMT(egroup, ident, etype) a0 ", " a1 ", " a2, ", ", a3,\ + CTR6(m,KTR_EFMT(egroup, ident, etype) a0 ", " a1 ", " a2 ", " a3,\ ident, edat, (v0), (v1), (v2), (v3)) /* From owner-svn-src-stable-8@FreeBSD.ORG Tue Jul 27 09:01:04 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 42F241065672; Tue, 27 Jul 2010 09:01:04 +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 33B648FC08; Tue, 27 Jul 2010 09:01:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6R914Kp043337; Tue, 27 Jul 2010 09:01:04 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6R914Fv043335; Tue, 27 Jul 2010 09:01:04 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201007270901.o6R914Fv043335@svn.freebsd.org> From: Konstantin Belousov Date: Tue, 27 Jul 2010 09:01:04 +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: r210526 - stable/8/sys/sys X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 09:01:04 -0000 Author: kib Date: Tue Jul 27 09:01:03 2010 New Revision: 210526 URL: http://svn.freebsd.org/changeset/base/210526 Log: MFC r210446: Reword the comment, fixing typo. Modified: stable/8/sys/sys/imgact_elf.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/sys/imgact_elf.h ============================================================================== --- stable/8/sys/sys/imgact_elf.h Tue Jul 27 08:45:29 2010 (r210525) +++ stable/8/sys/sys/imgact_elf.h Tue Jul 27 09:01:03 2010 (r210526) @@ -60,8 +60,8 @@ typedef struct { int flags; boolean_t (*trans_osrel)(const Elf_Note *, int32_t *); #define BN_CAN_FETCH_OSREL 0x0001 /* Deprecated. */ -#define BN_TRANSLATE_OSREL 0x0002 /* Use trans_osrel fetch osrel after */ - /* checking ABI contraint if needed. */ +#define BN_TRANSLATE_OSREL 0x0002 /* Use trans_osrel to fetch osrel */ + /* after checking the image ABI specification, if needed. */ } Elf_Brandnote; typedef struct { From owner-svn-src-stable-8@FreeBSD.ORG Tue Jul 27 09:12:12 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 36B01106566B; Tue, 27 Jul 2010 09:12:12 +0000 (UTC) (envelope-from roberto@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 273E28FC15; Tue, 27 Jul 2010 09:12:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6R9CCNx045877; Tue, 27 Jul 2010 09:12:12 GMT (envelope-from roberto@svn.freebsd.org) Received: (from roberto@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6R9CCaM045874; Tue, 27 Jul 2010 09:12:12 GMT (envelope-from roberto@svn.freebsd.org) Message-Id: <201007270912.o6R9CCaM045874@svn.freebsd.org> From: Ollivier Robert Date: Tue, 27 Jul 2010 09:12: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: r210527 - stable/8/share/timedef X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 09:12:12 -0000 Author: roberto Date: Tue Jul 27 09:12:11 2010 New Revision: 210527 URL: http://svn.freebsd.org/changeset/base/210527 Log: MFC r210296: Week days are all lowercase in French. cf. http://www.academie-francaise.fr/langue/questions.html#jourdelasemaine (FR) PR: misc/148792 Submitted by: Mathieu Modified: stable/8/share/timedef/fr_FR.ISO8859-1.src stable/8/share/timedef/fr_FR.UTF-8.src Directory Properties: stable/8/share/timedef/ (props changed) Modified: stable/8/share/timedef/fr_FR.ISO8859-1.src ============================================================================== --- stable/8/share/timedef/fr_FR.ISO8859-1.src Tue Jul 27 09:01:03 2010 (r210526) +++ stable/8/share/timedef/fr_FR.ISO8859-1.src Tue Jul 27 09:12:11 2010 (r210527) @@ -35,23 +35,23 @@ décembre # # Short weekday names # -Dim -Lun -Mar -Mer -Jeu -Ven -Sam +dim +lun +mar +mer +jeu +ven +sam # # Long weekday names # -Dimanche -Lundi -Mardi -Mercredi -Jeudi -Vendredi -Samedi +dimanche +lundi +mardi +mercredi +jeudi +vendredi +samedi # # X_fmt # Modified: stable/8/share/timedef/fr_FR.UTF-8.src ============================================================================== --- stable/8/share/timedef/fr_FR.UTF-8.src Tue Jul 27 09:01:03 2010 (r210526) +++ stable/8/share/timedef/fr_FR.UTF-8.src Tue Jul 27 09:12:11 2010 (r210527) @@ -35,23 +35,23 @@ décembre # # Short weekday names # -Dim -Lun -Mar -Mer -Jeu -Ven -Sam +dim +lun +mar +mer +jeu +ven +sam # # Long weekday names # -Dimanche -Lundi -Mardi -Mercredi -Jeudi -Vendredi -Samedi +dimanche +lundi +mardi +mercredi +jeudi +vendredi +samedi # # X_fmt # From owner-svn-src-stable-8@FreeBSD.ORG Tue Jul 27 13:06:19 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 10643106566C; Tue, 27 Jul 2010 13:06:19 +0000 (UTC) (envelope-from tijl@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D9A5F8FC17; Tue, 27 Jul 2010 13:06:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6RD6IUH000895; Tue, 27 Jul 2010 13:06:18 GMT (envelope-from tijl@svn.freebsd.org) Received: (from tijl@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6RD6I9q000892; Tue, 27 Jul 2010 13:06:18 GMT (envelope-from tijl@svn.freebsd.org) Message-Id: <201007271306.o6RD6I9q000892@svn.freebsd.org> From: Tijl Coosemans Date: Tue, 27 Jul 2010 13:06: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: r210536 - in stable/8/sys: i386/i386 pc98/pc98 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 13:06:19 -0000 Author: tijl Date: Tue Jul 27 13:06:18 2010 New Revision: 210536 URL: http://svn.freebsd.org/changeset/base/210536 Log: MFC r210294: Store fsbase and gsbase in the right fields of the mcontext. They were switched. PR: i386/148344 Approved by: kib (mentor) Modified: stable/8/sys/i386/i386/machdep.c stable/8/sys/pc98/pc98/machdep.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/i386/i386/machdep.c ============================================================================== --- stable/8/sys/i386/i386/machdep.c Tue Jul 27 12:53:53 2010 (r210535) +++ stable/8/sys/i386/i386/machdep.c Tue Jul 27 13:06:18 2010 (r210536) @@ -644,10 +644,10 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, /* * Unconditionally fill the fsbase and gsbase into the mcontext. */ - sdp = &td->td_pcb->pcb_gsd; + sdp = &td->td_pcb->pcb_fsd; sf.sf_uc.uc_mcontext.mc_fsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; - sdp = &td->td_pcb->pcb_fsd; + sdp = &td->td_pcb->pcb_gsd; sf.sf_uc.uc_mcontext.mc_gsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; @@ -3255,9 +3255,9 @@ get_mcontext(struct thread *td, mcontext * mcontext after mc_fpstate. */ get_fpcontext(td, mcp); - sdp = &td->td_pcb->pcb_gsd; - mcp->mc_fsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; sdp = &td->td_pcb->pcb_fsd; + mcp->mc_fsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; + sdp = &td->td_pcb->pcb_gsd; mcp->mc_gsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; return (0); Modified: stable/8/sys/pc98/pc98/machdep.c ============================================================================== --- stable/8/sys/pc98/pc98/machdep.c Tue Jul 27 12:53:53 2010 (r210535) +++ stable/8/sys/pc98/pc98/machdep.c Tue Jul 27 13:06:18 2010 (r210536) @@ -566,10 +566,10 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, /* * Unconditionally fill the fsbase and gsbase into the mcontext. */ - sdp = &td->td_pcb->pcb_gsd; + sdp = &td->td_pcb->pcb_fsd; sf.sf_uc.uc_mcontext.mc_fsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; - sdp = &td->td_pcb->pcb_fsd; + sdp = &td->td_pcb->pcb_gsd; sf.sf_uc.uc_mcontext.mc_gsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; @@ -2454,9 +2454,9 @@ get_mcontext(struct thread *td, mcontext mcp->mc_ss = tp->tf_ss; mcp->mc_len = sizeof(*mcp); get_fpcontext(td, mcp); - sdp = &td->td_pcb->pcb_gsd; - mcp->mc_fsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; sdp = &td->td_pcb->pcb_fsd; + mcp->mc_fsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; + sdp = &td->td_pcb->pcb_gsd; mcp->mc_gsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; return (0); From owner-svn-src-stable-8@FreeBSD.ORG Tue Jul 27 14:32:52 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0B89A1065674; Tue, 27 Jul 2010 14:32:52 +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 EEC608FC1D; Tue, 27 Jul 2010 14:32:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6REWpMH020549; Tue, 27 Jul 2010 14:32:51 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6REWpbW020547; Tue, 27 Jul 2010 14:32:51 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201007271432.o6REWpbW020547@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 27 Jul 2010 14:32:51 +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: r210540 - stable/8/sys/net X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 14:32:52 -0000 Author: jkim Date: Tue Jul 27 14:32:51 2010 New Revision: 210540 URL: http://svn.freebsd.org/changeset/base/210540 Log: MFC: r210383 Fix an obvious typo. We were acquiring an exclusive writer lock regardless of the given flags. Modified: stable/8/sys/net/if_llatbl.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/net/if_llatbl.c ============================================================================== --- stable/8/sys/net/if_llatbl.c Tue Jul 27 14:31:39 2010 (r210539) +++ stable/8/sys/net/if_llatbl.c Tue Jul 27 14:32:51 2010 (r210540) @@ -323,7 +323,7 @@ lla_rt_output(struct rt_msghdr *rtm, str LLTABLE_RUNLOCK(); KASSERT(llt != NULL, ("Yep, ugly hacks are bad\n")); - if (flags && LLE_CREATE) + if (flags & LLE_CREATE) flags |= LLE_EXCLUSIVE; IF_AFDATA_LOCK(ifp); From owner-svn-src-stable-8@FreeBSD.ORG Tue Jul 27 14:35:17 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CBDAC1065670; Tue, 27 Jul 2010 14:35:17 +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 BA3BA8FC25; Tue, 27 Jul 2010 14:35:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6REZHSm021171; Tue, 27 Jul 2010 14:35:17 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6REZHH9021169; Tue, 27 Jul 2010 14:35:17 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201007271435.o6REZHH9021169@svn.freebsd.org> From: Martin Matuska Date: Tue, 27 Jul 2010 14:35: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: r210541 - stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 14:35:17 -0000 Author: mm Date: Tue Jul 27 14:35:17 2010 New Revision: 210541 URL: http://svn.freebsd.org/changeset/base/210541 Log: MFC r210282: To improve latency, lower default vfs.zfs.vdev.max_pending from 35 to 10 OpenSolaris onnv changeset (partial): 10801:e0bf032e8673 Approved by: pjd, delphij (mentor) Obtained from: OpenSolaris (Bug ID 6891731) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c Tue Jul 27 14:32:51 2010 (r210540) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c Tue Jul 27 14:35:17 2010 (r210541) @@ -38,7 +38,7 @@ * of i/os pending to each device (before it starts ramping up to * max_pending). */ -int zfs_vdev_max_pending = 35; +int zfs_vdev_max_pending = 10; int zfs_vdev_min_pending = 4; /* deadline = pri + (LBOLT >> time_shift) */ From owner-svn-src-stable-8@FreeBSD.ORG Wed Jul 28 09:12:20 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8D985106564A; Wed, 28 Jul 2010 09:12:20 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7BA168FC1E; Wed, 28 Jul 2010 09:12:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6S9CKYH070400; Wed, 28 Jul 2010 09:12:20 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6S9CK3k070397; Wed, 28 Jul 2010 09:12:20 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201007280912.o6S9CK3k070397@svn.freebsd.org> From: Andriy Gapon Date: Wed, 28 Jul 2010 09:12:20 +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: r210557 - stable/8/share/man/man4 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2010 09:12:20 -0000 Author: avg Date: Wed Jul 28 09:12:20 2010 New Revision: 210557 URL: http://svn.freebsd.org/changeset/base/210557 Log: MFC r199969: add amdsbwd.4 This part of r199969 was left during original MFC, only merge to sys was done at that time. Reported by: hrs Pointyhat to: avg Added: stable/8/share/man/man4/amdsbwd.4 - copied unchanged from r199969, head/share/man/man4/amdsbwd.4 Modified: stable/8/share/man/man4/Makefile Directory Properties: stable/8/share/man/man4/ (props changed) Modified: stable/8/share/man/man4/Makefile ============================================================================== --- stable/8/share/man/man4/Makefile Wed Jul 28 08:48:35 2010 (r210556) +++ stable/8/share/man/man4/Makefile Wed Jul 28 09:12:20 2010 (r210557) @@ -34,6 +34,7 @@ MAN= aac.4 \ altq.4 \ amd.4 \ amdpm.4 \ + ${_amdsbwd.4} \ ${_amdsmb.4} \ ${_amdtemp.4} \ amr.4 \ @@ -631,6 +632,7 @@ _acpi_sony.4= acpi_sony.4 _acpi_toshiba.4=acpi_toshiba.4 _acpi_wmi.4= acpi_wmi.4 _aibs.4= aibs.4 +_amdsbwd.4= amdsbwd.4 _amdsmb.4= amdsmb.4 _amdtemp.4= amdtemp.4 _asmc.4= asmc.4 Copied: stable/8/share/man/man4/amdsbwd.4 (from r199969, head/share/man/man4/amdsbwd.4) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/share/man/man4/amdsbwd.4 Wed Jul 28 09:12:20 2010 (r210557, copy of r199969, head/share/man/man4/amdsbwd.4) @@ -0,0 +1,72 @@ +.\"- +.\" Copyright (c) 2009 Andriy Gapon +.\" 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$ +.\" +.Dd November 30, 2009 +.Dt AMDSBWD 4 +.Os +.Sh NAME +.Nm amdsbwd +.Nd device driver for the AMD SB600/SB700/SB710/SB750 watchdog timer +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following line in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device amdsbwd" +.Ed +.Pp +Alternatively, to load the driver as a +module at boot time, place the following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +amdsbwd_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +driver provides +.Xr watchdog 4 +support for the watchdog timers present on +AMD SB600 and SB7xx south bridge chips. +.Sh SEE ALSO +.Xr watchdog 4 , +.Xr watchdog 8 , +.Xr watchdogd 8 , +.Xr watchdog 9 +.Sh HISTORY +The +.Nm +driver first appeared in +.Fx 9.0 . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An Andiry Gapon Aq avg@FreeBSD.org . +This manual page was written by +.An Andiry Gapon Aq avg@FreeBSD.org . From owner-svn-src-stable-8@FreeBSD.ORG Wed Jul 28 15:55:14 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DB49106564A; Wed, 28 Jul 2010 15:55:14 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5256A8FC12; Wed, 28 Jul 2010 15:55:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6SFtEr9062227; Wed, 28 Jul 2010 15:55:14 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6SFtEPH062224; Wed, 28 Jul 2010 15:55:14 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201007281555.o6SFtEPH062224@svn.freebsd.org> From: Attilio Rao Date: Wed, 28 Jul 2010 15:55:14 +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: r210566 - stable/8/usr.bin/uname X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2010 15:55:14 -0000 Author: attilio Date: Wed Jul 28 15:55:14 2010 New Revision: 210566 URL: http://svn.freebsd.org/changeset/base/210566 Log: MFC r203042, r203735: Allow -o as a synonym for -s, for compatibility with other systems. Sponsored by: Sandvine Incorporated Modified: stable/8/usr.bin/uname/uname.1 stable/8/usr.bin/uname/uname.c Directory Properties: stable/8/usr.bin/uname/ (props changed) Modified: stable/8/usr.bin/uname/uname.1 ============================================================================== --- stable/8/usr.bin/uname/uname.1 Wed Jul 28 15:47:32 2010 (r210565) +++ stable/8/usr.bin/uname/uname.1 Wed Jul 28 15:55:14 2010 (r210566) @@ -32,7 +32,7 @@ .\" @(#)uname.1 8.3 (Berkeley) 4/8/94 .\" $FreeBSD$ .\" -.Dd April 2, 2003 +.Dd January 26, 2010 .Dt UNAME 1 .Os .Sh NAME @@ -40,7 +40,7 @@ .Nd display information about the system .Sh SYNOPSIS .Nm -.Op Fl aimnprsv +.Op Fl aimnoprsv .Sh DESCRIPTION The .Nm @@ -63,6 +63,10 @@ Write the kernel ident to standard outpu Write the type of the current hardware platform to standard output. .It Fl n Write the name of the system to standard output. +.It Fl o +This is a synonym for the +.Fl s +option, for compatibility with other systems. .It Fl p Write the type of the machine processor architecture to standard output. .It Fl r Modified: stable/8/usr.bin/uname/uname.c ============================================================================== --- stable/8/usr.bin/uname/uname.c Wed Jul 28 15:47:32 2010 (r210565) +++ stable/8/usr.bin/uname/uname.c Wed Jul 28 15:55:14 2010 (r210566) @@ -88,7 +88,7 @@ main(int argc, char *argv[]) setup_get(); flags = 0; - while ((ch = getopt(argc, argv, "aimnprsv")) != -1) + while ((ch = getopt(argc, argv, "aimnoprsv")) != -1) switch(ch) { case 'a': flags |= (MFLAG | NFLAG | RFLAG | SFLAG | VFLAG); @@ -109,6 +109,7 @@ main(int argc, char *argv[]) flags |= RFLAG; break; case 's': + case 'o': flags |= SFLAG; break; case 'v': @@ -244,6 +245,6 @@ NATIVE_SYSCTLNAME_GET(ident, "kern.ident void usage(void) { - fprintf(stderr, "usage: uname [-aimnprsv]\n"); + fprintf(stderr, "usage: uname [-aimnoprsv]\n"); exit(1); } From owner-svn-src-stable-8@FreeBSD.ORG Wed Jul 28 16:10:21 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A0EFC1065696; Wed, 28 Jul 2010 16:10:21 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8F90A8FC08; Wed, 28 Jul 2010 16:10:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6SGALH3065746; Wed, 28 Jul 2010 16:10:21 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6SGALBp065741; Wed, 28 Jul 2010 16:10:21 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201007281610.o6SGALBp065741@svn.freebsd.org> From: Attilio Rao Date: Wed, 28 Jul 2010 16:10:21 +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: r210567 - stable/8/usr.bin/gcore X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2010 16:10:21 -0000 Author: attilio Date: Wed Jul 28 16:10:21 2010 New Revision: 210567 URL: http://svn.freebsd.org/changeset/base/210567 Log: MFC r210063, r210065: Fix the way the segments are included in the gcore outputs (with the default invokation): - Right now if segments are not writable are not included. Remove this. - Right now if a segment is mapped with NOCORE the check is not honoured. Change this by checking the newly added flag, from libutil, KVME_FLAG_NOCOREDUMP. Besides that, add a new flag (-f) that forces a 'full' dump of all the segments excluding just the malformed ones. Sponsored by: Sandvine Incorporated Modified: stable/8/usr.bin/gcore/elfcore.c stable/8/usr.bin/gcore/extern.h stable/8/usr.bin/gcore/gcore.1 stable/8/usr.bin/gcore/gcore.c Directory Properties: stable/8/usr.bin/gcore/ (props changed) Modified: stable/8/usr.bin/gcore/elfcore.c ============================================================================== --- stable/8/usr.bin/gcore/elfcore.c Wed Jul 28 15:55:14 2010 (r210566) +++ stable/8/usr.bin/gcore/elfcore.c Wed Jul 28 16:10:21 2010 (r210567) @@ -488,12 +488,17 @@ readmap(pid_t pid) kve = &vmentl[i]; /* - * Ignore segments of the wrong kind and ones which are not - * readable and writable. + * Ignore 'malformed' segments or ones representing memory + * mapping with MAP_NOCORE on. + * If the 'full' support is disabled, just dump the most + * meaningful data segments. */ - if ((kve->kve_protection & KVME_PROT_WRITE) == 0 || - (kve->kve_protection & KVME_PROT_READ) == 0 || - (kve->kve_type != KVME_TYPE_DEFAULT && + if ((kve->kve_protection & KVME_PROT_READ) == 0 || + (kve->kve_flags & KVME_FLAG_NOCOREDUMP) != 0 || + kve->kve_type == KVME_TYPE_DEAD || + kve->kve_type == KVME_TYPE_UNKNOWN || + ((pflags & PFLAGS_FULL) == 0 && + kve->kve_type != KVME_TYPE_DEFAULT && kve->kve_type != KVME_TYPE_VNODE && kve->kve_type != KVME_TYPE_SWAP)) continue; Modified: stable/8/usr.bin/gcore/extern.h ============================================================================== --- stable/8/usr.bin/gcore/extern.h Wed Jul 28 15:55:14 2010 (r210566) +++ stable/8/usr.bin/gcore/extern.h Wed Jul 28 16:10:21 2010 (r210567) @@ -34,7 +34,11 @@ * $FreeBSD$ */ +#define PFLAGS_FULL 0x01 +#define PFLAGS_RESUME 0x02 + struct dumpers { int (*ident)(int efd, pid_t pid, char *binfile); void (*dump)(int efd, int fd, pid_t pid); }; +extern int pflags; Modified: stable/8/usr.bin/gcore/gcore.1 ============================================================================== --- stable/8/usr.bin/gcore/gcore.1 Wed Jul 28 15:55:14 2010 (r210566) +++ stable/8/usr.bin/gcore/gcore.1 Wed Jul 28 16:10:21 2010 (r210567) @@ -32,7 +32,7 @@ .\" @(#)gcore.1 8.2 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd November 18, 2009 +.Dd July 14, 2010 .Dt GCORE 1 .Os .Sh NAME @@ -40,6 +40,7 @@ .Nd get core images of running process .Sh SYNOPSIS .Nm +.Op Fl f .Op Fl s .Op Fl c Ar core .Op Ar executable @@ -61,6 +62,13 @@ The following options are available: .It Fl c Write the core file to the specified file instead of .Dq Pa core. . +.It Fl f +Dumps all the available segments, excluding only the malformed ones and +un-dumpable ones. Unlike the default invocation, it also dumps +device- and sglist-mapped areas that may invalidate the state of +some transactions. This flag must be used very carefully, when the +behavior of the application is fully understood and the fallouts can +be easily controlled. .It Fl s Stop the process while gathering the core image, and resume it when done. Modified: stable/8/usr.bin/gcore/gcore.c ============================================================================== --- stable/8/usr.bin/gcore/gcore.c Wed Jul 28 15:55:14 2010 (r210566) +++ stable/8/usr.bin/gcore/gcore.c Wed Jul 28 16:10:21 2010 (r210567) @@ -72,6 +72,7 @@ __FBSDID("$FreeBSD$"); #include #include "extern.h" +int pflags; static void killed(int); static void restart_target(void); @@ -84,21 +85,24 @@ SET_DECLARE(dumpset, struct dumpers); int main(int argc, char *argv[]) { - int ch, efd, fd, name[4], sflag; + int ch, efd, fd, name[4]; char *binfile, *corefile; char passpath[MAXPATHLEN], fname[MAXPATHLEN]; struct dumpers **d, *dumper; size_t len; - sflag = 0; + pflags = 0; corefile = NULL; - while ((ch = getopt(argc, argv, "c:s")) != -1) { + while ((ch = getopt(argc, argv, "c:fs")) != -1) { switch (ch) { case 'c': corefile = optarg; break; + case 'f': + pflags |= PFLAGS_FULL; + break; case 's': - sflag = 1; + pflags |= PFLAGS_RESUME; break; default: usage(); @@ -148,7 +152,7 @@ main(int argc, char *argv[]) fd = open(corefile, O_RDWR|O_CREAT|O_TRUNC, DEFFILEMODE); if (fd < 0) err(1, "%s", corefile); - if (sflag) { + if ((pflags & PFLAGS_RESUME) != 0) { signal(SIGHUP, killed); signal(SIGINT, killed); signal(SIGTERM, killed); From owner-svn-src-stable-8@FreeBSD.ORG Thu Jul 29 09:20:08 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A07911065676; Thu, 29 Jul 2010 09:20:08 +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 749B88FC14; Thu, 29 Jul 2010 09:20:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6T9K824094786; Thu, 29 Jul 2010 09:20:08 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6T9K8OB094785; Thu, 29 Jul 2010 09:20:08 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201007290920.o6T9K8OB094785@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 29 Jul 2010 09:20: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: r210598 - stable/8/lib/libc/compat-43 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jul 2010 09:20:08 -0000 Author: kib Date: Thu Jul 29 09:20:08 2010 New Revision: 210598 URL: http://svn.freebsd.org/changeset/base/210598 Log: MFC r210370: Verify return value of the sigset manipulation functions to catch invalid signal numbers. Modified: stable/8/lib/libc/compat-43/sigcompat.c Directory Properties: stable/8/lib/libc/ (props changed) stable/8/lib/libc/stdtime/ (props changed) stable/8/lib/libc/sys/ (props changed) Modified: stable/8/lib/libc/compat-43/sigcompat.c ============================================================================== --- stable/8/lib/libc/compat-43/sigcompat.c Thu Jul 29 06:27:41 2010 (r210597) +++ stable/8/lib/libc/compat-43/sigcompat.c Thu Jul 29 09:20:08 2010 (r210598) @@ -112,16 +112,11 @@ int xsi_sigpause(int sig) { sigset_t set; - int error; - if (!_SIG_VALID(sig)) { - errno = EINVAL; + if (_sigprocmask(SIG_BLOCK, NULL, &set) == -1) + return (-1); + if (sigdelset(&set, sig) == -1) return (-1); - } - error = _sigprocmask(SIG_BLOCK, NULL, &set); - if (error != 0) - return (error); - sigdelset(&set, sig); return (_sigsuspend(&set)); } @@ -131,7 +126,8 @@ sighold(int sig) sigset_t set; sigemptyset(&set); - sigaddset(&set, sig); + if (sigaddset(&set, sig) == -1) + return (-1); return (_sigprocmask(SIG_BLOCK, &set, NULL)); } @@ -151,7 +147,8 @@ sigrelse(int sig) sigset_t set; sigemptyset(&set); - sigaddset(&set, sig); + if (sigaddset(&set, sig) == -1) + return (-1); return (_sigprocmask(SIG_UNBLOCK, &set, NULL)); } @@ -160,35 +157,30 @@ void { sigset_t set, pset; struct sigaction sa, psa; - int error; sigemptyset(&set); - sigaddset(&set, sig); - error = _sigprocmask(SIG_BLOCK, NULL, &pset); - if (error == -1) + if (sigaddset(&set, sig) == -1) + return (SIG_ERR); + if (_sigprocmask(SIG_BLOCK, NULL, &pset) == -1) return (SIG_ERR); if ((__sighandler_t *)disp == SIG_HOLD) { - error = _sigprocmask(SIG_BLOCK, &set, &pset); - if (error == -1) + if (_sigprocmask(SIG_BLOCK, &set, &pset) == -1) return (SIG_ERR); if (sigismember(&pset, sig)) return (SIG_HOLD); else { - error = _sigaction(sig, NULL, &psa); - if (error == -1) + if (_sigaction(sig, NULL, &psa) == -1) return (SIG_ERR); return (psa.sa_handler); } } else { - error = _sigprocmask(SIG_UNBLOCK, &set, &pset); - if (error == -1) + if (_sigprocmask(SIG_UNBLOCK, &set, &pset) == -1) return (SIG_ERR); } bzero(&sa, sizeof(sa)); sa.sa_handler = disp; - error = _sigaction(sig, &sa, &psa); - if (error == -1) + if (_sigaction(sig, &sa, &psa) == -1) return (SIG_ERR); if (sigismember(&pset, sig)) return (SIG_HOLD); From owner-svn-src-stable-8@FreeBSD.ORG Thu Jul 29 14:23:59 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F3C381065674; Thu, 29 Jul 2010 14:23:58 +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 E0E7D8FC16; Thu, 29 Jul 2010 14:23:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6TENwqp065223; Thu, 29 Jul 2010 14:23:58 GMT (envelope-from netchild@svn.freebsd.org) Received: (from netchild@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6TENwS2065218; Thu, 29 Jul 2010 14:23:58 GMT (envelope-from netchild@svn.freebsd.org) Message-Id: <201007291423.o6TENwS2065218@svn.freebsd.org> From: Alexander Leidinger Date: Thu, 29 Jul 2010 14: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: r210608 - stable/8/sys/compat/linux X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jul 2010 14:23:59 -0000 Author: netchild Date: Thu Jul 29 14:23:58 2010 New Revision: 210608 URL: http://svn.freebsd.org/changeset/base/210608 Log: MFC r200107,200109-200110,202364,202376,205678,207569: Merge linux emulation parts for video4linux support (requires a native v4l device, e.g. something which works with ports://multimedia/webcamd). Added: stable/8/sys/compat/linux/linux_videodev.h (contents, props changed) - copied, changed from r200109, head/sys/compat/linux/linux_videodev.h stable/8/sys/compat/linux/linux_videodev_compat.h - copied unchanged from r200110, head/sys/compat/linux/linux_videodev_compat.h Modified: stable/8/sys/compat/linux/linux_ioctl.c stable/8/sys/compat/linux/linux_ioctl.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/compat/linux/linux_ioctl.c ============================================================================== --- stable/8/sys/compat/linux/linux_ioctl.c Thu Jul 29 14:13:45 2010 (r210607) +++ stable/8/sys/compat/linux/linux_ioctl.c Thu Jul 29 14:23:58 2010 (r210608) @@ -78,6 +78,9 @@ __FBSDID("$FreeBSD$"); #include #include +#include +#include + CTASSERT(LINUX_IFNAMSIZ == IFNAMSIZ); static linux_ioctl_function_t linux_ioctl_cdrom; @@ -91,6 +94,7 @@ static linux_ioctl_function_t linux_ioct static linux_ioctl_function_t linux_ioctl_private; static linux_ioctl_function_t linux_ioctl_drm; static linux_ioctl_function_t linux_ioctl_sg; +static linux_ioctl_function_t linux_ioctl_v4l; static linux_ioctl_function_t linux_ioctl_special; static struct linux_ioctl_handler cdrom_handler = @@ -115,6 +119,8 @@ static struct linux_ioctl_handler drm_ha { linux_ioctl_drm, LINUX_IOCTL_DRM_MIN, LINUX_IOCTL_DRM_MAX }; static struct linux_ioctl_handler sg_handler = { linux_ioctl_sg, LINUX_IOCTL_SG_MIN, LINUX_IOCTL_SG_MAX }; +static struct linux_ioctl_handler video_handler = +{ linux_ioctl_v4l, LINUX_IOCTL_VIDEO_MIN, LINUX_IOCTL_VIDEO_MAX }; DATA_SET(linux_ioctl_handler_set, cdrom_handler); DATA_SET(linux_ioctl_handler_set, vfat_handler); @@ -127,6 +133,7 @@ DATA_SET(linux_ioctl_handler_set, termio DATA_SET(linux_ioctl_handler_set, private_handler); DATA_SET(linux_ioctl_handler_set, drm_handler); DATA_SET(linux_ioctl_handler_set, sg_handler); +DATA_SET(linux_ioctl_handler_set, video_handler); struct handler_element { @@ -136,7 +143,7 @@ struct handler_element }; static TAILQ_HEAD(, handler_element) handlers = - TAILQ_HEAD_INITIALIZER(handlers); + TAILQ_HEAD_INITIALIZER(handlers); static struct sx linux_ioctl_sx; SX_SYSINIT(linux_ioctl, &linux_ioctl_sx, "linux ioctl handlers"); @@ -2589,6 +2596,361 @@ linux_ioctl_sg(struct thread *td, struct } /* + * Video4Linux (V4L) ioctl handler + */ +static int +linux_to_bsd_v4l_tuner(struct l_video_tuner *lvt, struct video_tuner *vt) +{ + vt->tuner = lvt->tuner; + strlcpy(vt->name, lvt->name, LINUX_VIDEO_TUNER_NAME_SIZE); + vt->rangelow = lvt->rangelow; /* possible long size conversion */ + vt->rangehigh = lvt->rangehigh; /* possible long size conversion */ + vt->flags = lvt->flags; + vt->mode = lvt->mode; + vt->signal = lvt->signal; + return (0); +} + +static int +bsd_to_linux_v4l_tuner(struct video_tuner *vt, struct l_video_tuner *lvt) +{ + lvt->tuner = vt->tuner; + strlcpy(lvt->name, vt->name, LINUX_VIDEO_TUNER_NAME_SIZE); + lvt->rangelow = vt->rangelow; /* possible long size conversion */ + lvt->rangehigh = vt->rangehigh; /* possible long size conversion */ + lvt->flags = vt->flags; + lvt->mode = vt->mode; + lvt->signal = vt->signal; + return (0); +} + +#ifdef COMPAT_LINUX_V4L_CLIPLIST +static int +linux_to_bsd_v4l_clip(struct l_video_clip *lvc, struct video_clip *vc) +{ + vc->x = lvc->x; + vc->y = lvc->y; + vc->width = lvc->width; + vc->height = lvc->height; + vc->next = PTRIN(lvc->next); /* possible pointer size conversion */ + return (0); +} +#endif + +static int +linux_to_bsd_v4l_window(struct l_video_window *lvw, struct video_window *vw) +{ + vw->x = lvw->x; + vw->y = lvw->y; + vw->width = lvw->width; + vw->height = lvw->height; + vw->chromakey = lvw->chromakey; + vw->flags = lvw->flags; + vw->clips = PTRIN(lvw->clips); /* possible pointer size conversion */ + vw->clipcount = lvw->clipcount; + return (0); +} + +static int +bsd_to_linux_v4l_window(struct video_window *vw, struct l_video_window *lvw) +{ + lvw->x = vw->x; + lvw->y = vw->y; + lvw->width = vw->width; + lvw->height = vw->height; + lvw->chromakey = vw->chromakey; + lvw->flags = vw->flags; + lvw->clips = PTROUT(vw->clips); /* possible pointer size conversion */ + lvw->clipcount = vw->clipcount; + return (0); +} + +static int +linux_to_bsd_v4l_buffer(struct l_video_buffer *lvb, struct video_buffer *vb) +{ + vb->base = PTRIN(lvb->base); /* possible pointer size conversion */ + vb->height = lvb->height; + vb->width = lvb->width; + vb->depth = lvb->depth; + vb->bytesperline = lvb->bytesperline; + return (0); +} + +static int +bsd_to_linux_v4l_buffer(struct video_buffer *vb, struct l_video_buffer *lvb) +{ + lvb->base = PTROUT(vb->base); /* possible pointer size conversion */ + lvb->height = vb->height; + lvb->width = vb->width; + lvb->depth = vb->depth; + lvb->bytesperline = vb->bytesperline; + return (0); +} + +static int +linux_to_bsd_v4l_code(struct l_video_code *lvc, struct video_code *vc) +{ + strlcpy(vc->loadwhat, lvc->loadwhat, LINUX_VIDEO_CODE_LOADWHAT_SIZE); + vc->datasize = lvc->datasize; + vc->data = PTRIN(lvc->data); /* possible pointer size conversion */ + return (0); +} + +#ifdef COMPAT_LINUX_V4L_CLIPLIST +static int +linux_v4l_clip_copy(void *lvc, struct video_clip **ppvc) +{ + int error; + struct video_clip vclip; + struct l_video_clip l_vclip; + + error = copyin(lvc, &l_vclip, sizeof(l_vclip)); + if (error) return (error); + linux_to_bsd_v4l_clip(&l_vclip, &vclip); + /* XXX: If there can be no concurrency: s/M_NOWAIT/M_WAITOK/ */ + if ((*ppvc = malloc(sizeof(**ppvc), M_LINUX, M_NOWAIT)) == NULL) + return (ENOMEM); /* XXX: linux has no ENOMEM here */ + memcpy(*ppvc, &vclip, sizeof(vclip)); + (*ppvc)->next = NULL; + return (0); +} + +static int +linux_v4l_cliplist_free(struct video_window *vw) +{ + struct video_clip **ppvc; + struct video_clip **ppvc_next; + + for (ppvc = &(vw->clips); *ppvc != NULL; ppvc = ppvc_next) { + ppvc_next = &((*ppvc)->next); + free(*ppvc, M_LINUX); + } + vw->clips = NULL; + + return (0); +} + +static int +linux_v4l_cliplist_copy(struct l_video_window *lvw, struct video_window *vw) +{ + int error; + int clipcount; + void *plvc; + struct video_clip **ppvc; + + /* + * XXX: The cliplist is used to pass in a list of clipping + * rectangles or, if clipcount == VIDEO_CLIP_BITMAP, a + * clipping bitmap. Some Linux apps, however, appear to + * leave cliplist and clips uninitialized. In any case, + * the cliplist is not used by pwc(4), at the time of + * writing, FreeBSD's only V4L driver. When a driver + * that uses the cliplist is developed, this code may + * need re-examiniation. + */ + error = 0; + clipcount = vw->clipcount; + if (clipcount == VIDEO_CLIP_BITMAP) { + /* + * In this case, the pointer (clips) is overloaded + * to be a "void *" to a bitmap, therefore there + * is no struct video_clip to copy now. + */ + } else if (clipcount > 0 && clipcount <= 16384) { + /* + * Clips points to list of clip rectangles, so + * copy the list. + * + * XXX: Upper limit of 16384 was used here to try to + * avoid cases when clipcount and clips pointer + * are uninitialized and therefore have high random + * values, as is the case in the Linux Skype + * application. The value 16384 was chosen as that + * is what is used in the Linux stradis(4) MPEG + * decoder driver, the only place we found an + * example of cliplist use. + */ + plvc = PTRIN(lvw->clips); + vw->clips = NULL; + ppvc = &(vw->clips); + while (clipcount-- > 0) { + if (plvc == 0) { + error = EFAULT; + break; + } else { + error = linux_v4l_clip_copy(plvc, ppvc); + if (error) { + linux_v4l_cliplist_free(vw); + break; + } + } + ppvc = &((*ppvc)->next); + plvc = PTRIN(((struct l_video_clip *) plvc)->next); + } + } else { + /* + * clipcount == 0 or negative (but not VIDEO_CLIP_BITMAP) + * Force cliplist to null. + */ + vw->clipcount = 0; + vw->clips = NULL; + } + return (error); +} +#endif + +static int +linux_ioctl_v4l(struct thread *td, struct linux_ioctl_args *args) +{ + struct file *fp; + int error; + struct video_tuner vtun; + struct video_window vwin; + struct video_buffer vbuf; + struct video_code vcode; + struct l_video_tuner l_vtun; + struct l_video_window l_vwin; + struct l_video_buffer l_vbuf; + struct l_video_code l_vcode; + + switch (args->cmd & 0xffff) { + case LINUX_VIDIOCGCAP: args->cmd = VIDIOCGCAP; break; + case LINUX_VIDIOCGCHAN: args->cmd = VIDIOCGCHAN; break; + case LINUX_VIDIOCSCHAN: args->cmd = VIDIOCSCHAN; break; + + case LINUX_VIDIOCGTUNER: + if ((error = fget(td, args->fd, &fp)) != 0) + return (error); + error = copyin((void *) args->arg, &l_vtun, sizeof(l_vtun)); + if (error) { + fdrop(fp, td); + return (error); + } + linux_to_bsd_v4l_tuner(&l_vtun, &vtun); + error = fo_ioctl(fp, VIDIOCGTUNER, &vtun, td->td_ucred, td); + if (!error) { + bsd_to_linux_v4l_tuner(&vtun, &l_vtun); + error = copyout(&l_vtun, (void *) args->arg, + sizeof(l_vtun)); + } + fdrop(fp, td); + return (error); + + case LINUX_VIDIOCSTUNER: + if ((error = fget(td, args->fd, &fp)) != 0) + return (error); + error = copyin((void *) args->arg, &l_vtun, sizeof(l_vtun)); + if (error) { + fdrop(fp, td); + return (error); + } + linux_to_bsd_v4l_tuner(&l_vtun, &vtun); + error = fo_ioctl(fp, VIDIOCSTUNER, &vtun, td->td_ucred, td); + fdrop(fp, td); + return (error); + + case LINUX_VIDIOCGPICT: args->cmd = VIDIOCGPICT; break; + case LINUX_VIDIOCSPICT: args->cmd = VIDIOCSPICT; break; + case LINUX_VIDIOCCAPTURE: args->cmd = VIDIOCCAPTURE; break; + + case LINUX_VIDIOCGWIN: + if ((error = fget(td, args->fd, &fp)) != 0) + return (error); + error = fo_ioctl(fp, VIDIOCGWIN, &vwin, td->td_ucred, td); + if (!error) { + bsd_to_linux_v4l_window(&vwin, &l_vwin); + error = copyout(&l_vwin, (void *) args->arg, + sizeof(l_vwin)); + } + fdrop(fp, td); + return (error); + + case LINUX_VIDIOCSWIN: + if ((error = fget(td, args->fd, &fp)) != 0) + return (error); + error = copyin((void *) args->arg, &l_vwin, sizeof(l_vwin)); + if (error) { + fdrop(fp, td); + return (error); + } + linux_to_bsd_v4l_window(&l_vwin, &vwin); +#ifdef COMPAT_LINUX_V4L_CLIPLIST + error = linux_v4l_cliplist_copy(&l_vwin, &vwin); + if (error) { + fdrop(fp, td); + return (error); + } +#endif + error = fo_ioctl(fp, VIDIOCSWIN, &vwin, td->td_ucred, td); + fdrop(fp, td); +#ifdef COMPAT_LINUX_V4L_CLIPLIST + linux_v4l_cliplist_free(&vwin); +#endif + return (error); + + case LINUX_VIDIOCGFBUF: + if ((error = fget(td, args->fd, &fp)) != 0) + return (error); + error = fo_ioctl(fp, VIDIOCGFBUF, &vbuf, td->td_ucred, td); + if (!error) { + bsd_to_linux_v4l_buffer(&vbuf, &l_vbuf); + error = copyout(&l_vbuf, (void *) args->arg, + sizeof(l_vbuf)); + } + fdrop(fp, td); + return (error); + + case LINUX_VIDIOCSFBUF: + if ((error = fget(td, args->fd, &fp)) != 0) + return (error); + error = copyin((void *) args->arg, &l_vbuf, sizeof(l_vbuf)); + if (error) { + fdrop(fp, td); + return (error); + } + linux_to_bsd_v4l_buffer(&l_vbuf, &vbuf); + error = fo_ioctl(fp, VIDIOCSFBUF, &vbuf, td->td_ucred, td); + fdrop(fp, td); + return (error); + + case LINUX_VIDIOCKEY: args->cmd = VIDIOCKEY; break; + case LINUX_VIDIOCGFREQ: args->cmd = VIDIOCGFREQ; break; + case LINUX_VIDIOCSFREQ: args->cmd = VIDIOCSFREQ; break; + case LINUX_VIDIOCGAUDIO: args->cmd = VIDIOCGAUDIO; break; + case LINUX_VIDIOCSAUDIO: args->cmd = VIDIOCSAUDIO; break; + case LINUX_VIDIOCSYNC: args->cmd = VIDIOCSYNC; break; + case LINUX_VIDIOCMCAPTURE: args->cmd = VIDIOCMCAPTURE; break; + case LINUX_VIDIOCGMBUF: args->cmd = VIDIOCGMBUF; break; + case LINUX_VIDIOCGUNIT: args->cmd = VIDIOCGUNIT; break; + case LINUX_VIDIOCGCAPTURE: args->cmd = VIDIOCGCAPTURE; break; + case LINUX_VIDIOCSCAPTURE: args->cmd = VIDIOCSCAPTURE; break; + case LINUX_VIDIOCSPLAYMODE: args->cmd = VIDIOCSPLAYMODE; break; + case LINUX_VIDIOCSWRITEMODE: args->cmd = VIDIOCSWRITEMODE; break; + case LINUX_VIDIOCGPLAYINFO: args->cmd = VIDIOCGPLAYINFO; break; + + case LINUX_VIDIOCSMICROCODE: + if ((error = fget(td, args->fd, &fp)) != 0) + return (error); + error = copyin((void *) args->arg, &l_vcode, sizeof(l_vcode)); + if (error) { + fdrop(fp, td); + return (error); + } + linux_to_bsd_v4l_code(&l_vcode, &vcode); + error = fo_ioctl(fp, VIDIOCSMICROCODE, &vcode, td->td_ucred, td); + fdrop(fp, td); + return (error); + + case LINUX_VIDIOCGVBIFMT: args->cmd = VIDIOCGVBIFMT; break; + case LINUX_VIDIOCSVBIFMT: args->cmd = VIDIOCSVBIFMT; break; + default: return (ENOIOCTL); + } + + error = ioctl(td, (struct ioctl_args *)args); + return (error); +} + +/* * Special ioctl handler */ static int Modified: stable/8/sys/compat/linux/linux_ioctl.h ============================================================================== --- stable/8/sys/compat/linux/linux_ioctl.h Thu Jul 29 14:13:45 2010 (r210607) +++ stable/8/sys/compat/linux/linux_ioctl.h Thu Jul 29 14:23:58 2010 (r210608) @@ -575,4 +575,40 @@ struct ifnet; int linux_ifname(struct ifnet *, char *, size_t); +/* + * video + */ +#define LINUX_VIDIOCGCAP 0x7601 +#define LINUX_VIDIOCGCHAN 0x7602 +#define LINUX_VIDIOCSCHAN 0x7603 +#define LINUX_VIDIOCGTUNER 0x7604 +#define LINUX_VIDIOCSTUNER 0x7605 +#define LINUX_VIDIOCGPICT 0x7606 +#define LINUX_VIDIOCSPICT 0x7607 +#define LINUX_VIDIOCCAPTURE 0x7608 +#define LINUX_VIDIOCGWIN 0x7609 +#define LINUX_VIDIOCSWIN 0x760a +#define LINUX_VIDIOCGFBUF 0x760b +#define LINUX_VIDIOCSFBUF 0x760c +#define LINUX_VIDIOCKEY 0x760d +#define LINUX_VIDIOCGFREQ 0x760e +#define LINUX_VIDIOCSFREQ 0x760f +#define LINUX_VIDIOCGAUDIO 0x7610 +#define LINUX_VIDIOCSAUDIO 0x7611 +#define LINUX_VIDIOCSYNC 0x7623 +#define LINUX_VIDIOCMCAPTURE 0x7613 +#define LINUX_VIDIOCGMBUF 0x7614 +#define LINUX_VIDIOCGUNIT 0x7615 +#define LINUX_VIDIOCGCAPTURE 0x7616 +#define LINUX_VIDIOCSCAPTURE 0x7617 +#define LINUX_VIDIOCSPLAYMODE 0x7618 +#define LINUX_VIDIOCSWRITEMODE 0x7619 +#define LINUX_VIDIOCGPLAYINFO 0x761a +#define LINUX_VIDIOCSMICROCODE 0x761b +#define LINUX_VIDIOCGVBIFMT 0x761c +#define LINUX_VIDIOCSVBIFMT 0x761d + +#define LINUX_IOCTL_VIDEO_MIN LINUX_VIDIOCGCAP +#define LINUX_IOCTL_VIDEO_MAX LINUX_VIDIOCSVBIFMT + #endif /* !_LINUX_IOCTL_H_ */ Copied and modified: stable/8/sys/compat/linux/linux_videodev.h (from r200109, head/sys/compat/linux/linux_videodev.h) ============================================================================== --- head/sys/compat/linux/linux_videodev.h Fri Dec 4 20:46:45 2009 (r200109, copy source) +++ stable/8/sys/compat/linux/linux_videodev.h Thu Jul 29 14:23:58 2010 (r210608) @@ -1,48 +1,41 @@ +/* + * This header comes from linux, but it has no license. The author + * (Alan Cox @ Redhat) gave explicit permissions to use it in FreeBSD. + * The freeBSD vendor branch for v4l gives a more detailed description + * about this. + * + * $FreeBSD$ + */ + #ifndef __LINUX_VIDEODEV_H #define __LINUX_VIDEODEV_H -#include +#include +typedef int32_t __s32; +typedef uint32_t __u32; +typedef uint16_t __u16; +typedef uint8_t __u8; +#if 0 #define HAVE_V4L1 1 #include +#endif -#ifdef __KERNEL__ - -#include - -extern struct video_device* video_devdata(struct file*); - -#define to_video_device(cd) container_of(cd, struct video_device, class_dev) -static inline void -video_device_create_file(struct video_device *vfd, - struct class_device_attribute *attr) -{ - class_device_create_file(&vfd->class_dev, attr); -} -static inline void -video_device_remove_file(struct video_device *vfd, - struct class_device_attribute *attr) -{ - class_device_remove_file(&vfd->class_dev, attr); -} - -#if OBSOLETE_OWNER /* to be removed in 2.6.15 */ -/* helper functions to access driver private data. */ -static inline void *video_get_drvdata(struct video_device *dev) -{ - return dev->priv; -} - -static inline void video_set_drvdata(struct video_device *dev, void *data) -{ - dev->priv = data; -} -#endif - -extern int video_exclusive_open(struct inode *inode, struct file *file); -extern int video_exclusive_release(struct inode *inode, struct file *file); -#endif /* __KERNEL__ */ +#define VID_TYPE_CAPTURE 1 /* Can capture */ +#define VID_TYPE_TUNER 2 /* Can tune */ +#define VID_TYPE_TELETEXT 4 /* Does teletext */ +#define VID_TYPE_OVERLAY 8 /* Overlay onto frame buffer */ +#define VID_TYPE_CHROMAKEY 16 /* Overlay by chromakey */ +#define VID_TYPE_CLIPPING 32 /* Can clip */ +#define VID_TYPE_FRAMERAM 64 /* Uses the frame buffer memory */ +#define VID_TYPE_SCALES 128 /* Scalable */ +#define VID_TYPE_MONOCHROME 256 /* Monochrome only */ +#define VID_TYPE_SUBCAPTURE 512 /* Can capture subareas of the image */ +#define VID_TYPE_MPEG_DECODER 1024 /* Can decode MPEG streams */ +#define VID_TYPE_MPEG_ENCODER 2048 /* Can encode MPEG streams */ +#define VID_TYPE_MJPEG_DECODER 4096 /* Can decode MJPEG streams */ +#define VID_TYPE_MJPEG_ENCODER 8192 /* Can encode MJPEG streams */ struct video_capability { @@ -157,7 +150,7 @@ struct video_window __u32 width,height; /* Its size */ __u32 chromakey; __u32 flags; - struct video_clip __user *clips; /* Set only */ + struct video_clip *clips; /* Set only */ int clipcount; #define VIDEO_WINDOW_INTERLACE 1 #define VIDEO_WINDOW_CHROMAKEY 16 /* Overlay by chromakey */ @@ -197,6 +190,8 @@ struct video_key __u32 flags; }; +#define VIDEO_MAX_FRAME 32 + struct video_mbuf { int size; /* Total memory to map */ Copied: stable/8/sys/compat/linux/linux_videodev_compat.h (from r200110, head/sys/compat/linux/linux_videodev_compat.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/sys/compat/linux/linux_videodev_compat.h Thu Jul 29 14:23:58 2010 (r210608, copy of r200110, head/sys/compat/linux/linux_videodev_compat.h) @@ -0,0 +1,59 @@ +/* + * $FreeBSD$ + */ + +/* + * This file defines compatibility versions of several video structures + * defined in the Linux videodev.h header (linux_videodev.h). The + * structures defined in this file are the ones that have been determined + * to have 32- to 64-bit size dependencies. + */ + +#ifndef _LINUX_VIDEODEV_COMPAT_H_ +#define _LINUX_VIDEODEV_COMPAT_H_ + +struct l_video_tuner +{ + l_int tuner; +#define LINUX_VIDEO_TUNER_NAME_SIZE 32 + char name[LINUX_VIDEO_TUNER_NAME_SIZE]; + l_ulong rangelow, rangehigh; + uint32_t flags; + uint16_t mode; + uint16_t signal; +}; + +struct l_video_clip +{ + int32_t x, y; + int32_t width, height; + l_uintptr_t next; +}; + +struct l_video_window +{ + uint32_t x, y; + uint32_t width, height; + uint32_t chromakey; + uint32_t flags; + l_uintptr_t clips; + l_int clipcount; +}; + +struct l_video_buffer +{ + l_uintptr_t base; + l_int height, width; + l_int depth; + l_int bytesperline; +}; + +struct l_video_code +{ +#define LINUX_VIDEO_CODE_LOADWHAT_SIZE 16 + char loadwhat[LINUX_VIDEO_CODE_LOADWHAT_SIZE]; + l_int datasize; + l_uintptr_t data; +}; + +#endif /* !_LINUX_VIDEODEV_COMPAT_H_ */ From owner-svn-src-stable-8@FreeBSD.ORG Thu Jul 29 16:55:27 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C188A1065675; Thu, 29 Jul 2010 16:55: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 B03418FC0A; Thu, 29 Jul 2010 16:55:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6TGtRps099121; Thu, 29 Jul 2010 16:55:27 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6TGtR0k099119; Thu, 29 Jul 2010 16:55:27 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201007291655.o6TGtR0k099119@svn.freebsd.org> From: Jilles Tjoelker Date: Thu, 29 Jul 2010 16:55: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: r210616 - stable/8/bin/sh X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jul 2010 16:55:27 -0000 Author: jilles Date: Thu Jul 29 16:55:27 2010 New Revision: 210616 URL: http://svn.freebsd.org/changeset/base/210616 Log: MFC r208881: sh: Pass through SIGINT if interactive and job control is enabled. This already worked if without job control. In either case, this depends on it that a process that terminates due to SIGINT exits on it (so not with status 1, or worse, 0). Example: sleep 5; echo continued This does not print "continued" any more if sleep is aborted via ctrl+c. Modified: stable/8/bin/sh/jobs.c Directory Properties: stable/8/bin/sh/ (props changed) Modified: stable/8/bin/sh/jobs.c ============================================================================== --- stable/8/bin/sh/jobs.c Thu Jul 29 16:49:20 2010 (r210615) +++ stable/8/bin/sh/jobs.c Thu Jul 29 16:55:27 2010 (r210616) @@ -862,6 +862,7 @@ waitforjob(struct job *jp, int *origstat { #if JOBS pid_t mypgrp = getpgrp(); + int propagate_int = jp->jobctl && jp->foreground; #endif int status; int st; @@ -899,6 +900,11 @@ waitforjob(struct job *jp, int *origstat else CLEAR_PENDING_INT; } +#if JOBS + else if (rootshell && iflag && propagate_int && + WIFSIGNALED(status) && WTERMSIG(status) == SIGINT) + kill(getpid(), SIGINT); +#endif INTON; return st; } From owner-svn-src-stable-8@FreeBSD.ORG Thu Jul 29 23:46:25 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7D33F1065670; Thu, 29 Jul 2010 23:46:25 +0000 (UTC) (envelope-from jhellenthal@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 1278E8FC1C; Thu, 29 Jul 2010 23:46:24 +0000 (UTC) Received: by iwn35 with SMTP id 35so947604iwn.13 for ; Thu, 29 Jul 2010 16:46:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :x-enigmail-version:openpgp:content-type:content-transfer-encoding; bh=eIN1aXGj21UKkTnXP5IW5NzpCsJQLQPDpmSXvPSIL/c=; b=SgxUqsSWP8O1sZG6dKeDqIHGLGlN0X9123UZKCEi6pBvZmukGRMVQtAnqV0gDQe+Vk dOxNYILIjgEHBOgnR81ox7EyqX/HAGLqNezp8kfFRRlzpgm/YipujbF84epB9FVTqUXH 6S7b4wIFgzyZNmd5dK+rjwo3HR4HqRrBZAD38= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:x-enigmail-version:openpgp:content-type :content-transfer-encoding; b=S7WtmpH6f7KcFNnqwq/b7hVkVQ9whQ/7NWKLMwT30mD9o/3zEvHCq69yr6J3Kp1e9s u1YRYJwUH2OA96F/r+thHC0DD8YsSdH2rH/5GTeQQ76Po7wkEnA0CV4J3fYd+nFeCpkL HMxwYIt1JRM4mcAdxkn35Cymigaeb44qjHv9c= Received: by 10.231.14.76 with SMTP id f12mr646119iba.63.1280447184370; Thu, 29 Jul 2010 16:46:24 -0700 (PDT) Received: from centel.dataix.local (adsl-99-19-46-227.dsl.klmzmi.sbcglobal.net [99.19.46.227]) by mx.google.com with ESMTPS id e8sm1264750ibb.20.2010.07.29.16.46.22 (version=SSLv3 cipher=RC4-MD5); Thu, 29 Jul 2010 16:46:23 -0700 (PDT) Sender: "J. Hellenthal" Message-ID: <4C5212CC.2070201@dataix.net> Date: Thu, 29 Jul 2010 19:46:20 -0400 From: jhell User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1.11) Gecko/20100722 Thunderbird MIME-Version: 1.0 To: Jilles Tjoelker References: <201007291655.o6TGtR0k099119@svn.freebsd.org> In-Reply-To: <201007291655.o6TGtR0k099119@svn.freebsd.org> X-Enigmail-Version: 1.0.1 OpenPGP: id=89D8547E Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-stable@freebsd.org, FreeBSD SVN Source All , src-committers@freebsd.org, svn-src-stable-8@freebsd.org Subject: Re: svn commit: r210616 - stable/8/bin/sh X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jul 2010 23:46:25 -0000 So what has been commited here is implicitly stating that instead of using ( trap 'exit 1' 2 ) in a script to catch SIGINT and exit it is now being done on behalf of the user with no way for them to control it ? Basically this has the same effect on a script that uses ( && ) and to which now have the same meaning. This script should print "PRINTME" twice when ^C during the sleep. #!/bin/sh sleep 5000; echo "PRINTME" echo "PRINTME" Whereas this script with the old behavior would have done what is trying to be done now for the first line but should still print only the second "PRINTME" during a ^C of sleep. #!/bin/sh sleep 5000 && echo "PRINTME" echo "PRINTME" And this script should not print anything when ^C is used during sleep. #!/bin/sh trap 'exit 1' 2 sleep 5000 ; echo "PRINTME" echo "PRINTME" What is being done currently on stable/8 is incorrect... On 07/29/2010 12:55, Jilles Tjoelker wrote: > Author: jilles > Date: Thu Jul 29 16:55:27 2010 > New Revision: 210616 > URL: http://svn.freebsd.org/changeset/base/210616 > > Log: > MFC r208881: sh: Pass through SIGINT if interactive and job control > is enabled. > > This already worked if without job control. > > In either case, this depends on it that a process that terminates due to > SIGINT exits on it (so not with status 1, or worse, 0). > > Example: > sleep 5; echo continued > This does not print "continued" any more if sleep is aborted via ctrl+c. > > Modified: > stable/8/bin/sh/jobs.c > Directory Properties: > stable/8/bin/sh/ (props changed) > > Modified: stable/8/bin/sh/jobs.c > ============================================================================== > --- stable/8/bin/sh/jobs.c Thu Jul 29 16:49:20 2010 (r210615) > +++ stable/8/bin/sh/jobs.c Thu Jul 29 16:55:27 2010 (r210616) > @@ -862,6 +862,7 @@ waitforjob(struct job *jp, int *origstat > { > #if JOBS > pid_t mypgrp = getpgrp(); > + int propagate_int = jp->jobctl && jp->foreground; > #endif > int status; > int st; > @@ -899,6 +900,11 @@ waitforjob(struct job *jp, int *origstat > else > CLEAR_PENDING_INT; > } > +#if JOBS > + else if (rootshell && iflag && propagate_int && > + WIFSIGNALED(status) && WTERMSIG(status) == SIGINT) > + kill(getpid(), SIGINT); > +#endif > INTON; > return st; > } -- jhell,v From owner-svn-src-stable-8@FreeBSD.ORG Fri Jul 30 07:30:57 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D685B1065689; Fri, 30 Jul 2010 07:30:57 +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 C56178FC1A; Fri, 30 Jul 2010 07:30:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6U7UvMB092853; Fri, 30 Jul 2010 07:30:57 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6U7Uvmx092851; Fri, 30 Jul 2010 07:30:57 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201007300730.o6U7Uvmx092851@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Fri, 30 Jul 2010 07:30: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: r210634 - stable/8/sys/geom/part X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 07:30:58 -0000 Author: ae Date: Fri Jul 30 07:30:57 2010 New Revision: 210634 URL: http://svn.freebsd.org/changeset/base/210634 Log: MFC r210401: Prevent access after free to table entry in case when user deletes partition that not yet created (changes doesn't committed to disk). PR: 148687 Approved by: mav (mentor) Modified: stable/8/sys/geom/part/g_part.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/geom/part/g_part.c ============================================================================== --- stable/8/sys/geom/part/g_part.c Fri Jul 30 06:06:33 2010 (r210633) +++ stable/8/sys/geom/part/g_part.c Fri Jul 30 07:30:57 2010 (r210634) @@ -829,14 +829,6 @@ g_part_ctl_delete(struct gctl_req *req, entry->gpe_pp = NULL; } - if (entry->gpe_created) { - LIST_REMOVE(entry, gpe_entry); - g_free(entry); - } else { - entry->gpe_modified = 0; - entry->gpe_deleted = 1; - } - if (pp != NULL) g_wither_provider(pp, ENXIO); @@ -849,6 +841,14 @@ g_part_ctl_delete(struct gctl_req *req, gctl_set_param(req, "output", sbuf_data(sb), sbuf_len(sb) + 1); sbuf_delete(sb); } + + if (entry->gpe_created) { + LIST_REMOVE(entry, gpe_entry); + g_free(entry); + } else { + entry->gpe_modified = 0; + entry->gpe_deleted = 1; + } return (0); } From owner-svn-src-stable-8@FreeBSD.ORG Fri Jul 30 07:31:50 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BBFA2106566B; Fri, 30 Jul 2010 07:31:50 +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 9038C8FC1B; Fri, 30 Jul 2010 07:31:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6U7VoKR093085; Fri, 30 Jul 2010 07:31:50 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6U7VoDg093083; Fri, 30 Jul 2010 07:31:50 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201007300731.o6U7VoDg093083@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Fri, 30 Jul 2010 07:31: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: r210635 - stable/8/sbin/geom/class/part X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 07:31:50 -0000 Author: ae Date: Fri Jul 30 07:31:50 2010 New Revision: 210635 URL: http://svn.freebsd.org/changeset/base/210635 Log: MFC r210408: Document that SI unit suffixes are supported for -b and -s options of add verb. Mention about maximum size limit for "freebsd-boot" partition. It should be smaller than 545 KB (hardcoded in pmbr). Show usage of SI unit suffixes in example. Approved by: mav (mentor) Modified: stable/8/sbin/geom/class/part/gpart.8 Directory Properties: stable/8/sbin/geom/ (props changed) stable/8/sbin/geom/class/part/ (props changed) stable/8/sbin/geom/class/stripe/ (props changed) Modified: stable/8/sbin/geom/class/part/gpart.8 ============================================================================== --- stable/8/sbin/geom/class/part/gpart.8 Fri Jul 30 07:30:57 2010 (r210634) +++ stable/8/sbin/geom/class/part/gpart.8 Fri Jul 30 07:31:50 2010 (r210635) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 24, 2010 +.Dd July 23, 2010 .Dt GPART 8 .Os .Sh NAME @@ -84,9 +84,9 @@ utility: .\" ==== ADD ==== .Nm .Cm add -.Fl b Ar start -.Fl s Ar size .Fl t Ar type +.Op Fl b Ar start +.Op Fl s Ar size .Op Fl i Ar index .Op Fl l Ar label .Op Fl f Ar flags @@ -171,9 +171,13 @@ Add a new partition to the partitioning The partition begins on the logical block address given by the .Fl b Ar start option. -Its size is expressed in logical block numbers and given by the +Its size is given by the .Fl s Ar size -option. +option. SI unit suffixes are allowed. One or both +.Fl b +and +.Fl s +options can be ommitted. If so they are automatically calculated. The type of the partition is given by the .Fl t Ar type option. @@ -542,7 +546,7 @@ from a partition, and install bootstrap code into it. This partition must be larger than .Pa /boot/gptboot , -or the GPT boot you are planning to write. +or the GPT boot you are planning to write, but smaller than 545 KB. A size of 15 blocks (7680 bytes) would be sufficient for booting from UFS but let's use 128 blocks (64 KB) here in this example, in order to reserve some space for potential @@ -569,7 +573,7 @@ Create a 512MB-sized .Cm freebsd-ufs partition that would contain UFS where the system boots from. .Bd -literal -offset indent -/sbin/gpart add -b 0 -s 1048576 -t freebsd-ufs da0 +/sbin/gpart add -s 512M -t freebsd-ufs da0 .Ed .Pp After having created all required partitions, embed bootstrap code into them. From owner-svn-src-stable-8@FreeBSD.ORG Fri Jul 30 11:55:53 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0F7C81065674; Fri, 30 Jul 2010 11:55:53 +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 F234D8FC13; Fri, 30 Jul 2010 11:55:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6UBtqbA052903; Fri, 30 Jul 2010 11:55:52 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6UBtq8F052900; Fri, 30 Jul 2010 11:55:52 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201007301155.o6UBtq8F052900@svn.freebsd.org> From: Jaakko Heinonen Date: Fri, 30 Jul 2010 11:55:52 +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: r210640 - in stable/8/contrib/nvi: docs ex X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 11:55:53 -0000 Author: jh Date: Fri Jul 30 11:55:52 2010 New Revision: 210640 URL: http://svn.freebsd.org/changeset/base/210640 Log: MFC r208611: Fix misspelling of "substitution". PR: bin/130874 Modified: stable/8/contrib/nvi/docs/help stable/8/contrib/nvi/ex/ex_cmd.c Directory Properties: stable/8/contrib/nvi/ (props changed) Modified: stable/8/contrib/nvi/docs/help ============================================================================== --- stable/8/contrib/nvi/docs/help Fri Jul 30 11:07:24 2010 (r210639) +++ stable/8/contrib/nvi/docs/help Fri Jul 30 11:55:52 2010 (r210640) @@ -129,7 +129,7 @@ EX COMMANDS: ^D: scroll lines !: filter lines through commands or run commands #: display numbered lines - &: repeat the last subsitution + &: repeat the last substitution *: execute a buffer <: shift lines left =: display line number Modified: stable/8/contrib/nvi/ex/ex_cmd.c ============================================================================== --- stable/8/contrib/nvi/ex/ex_cmd.c Fri Jul 30 11:07:24 2010 (r210639) +++ stable/8/contrib/nvi/ex/ex_cmd.c Fri Jul 30 11:55:52 2010 (r210640) @@ -68,7 +68,7 @@ EXCMDLIST const cmds[] = { {"&", ex_subagain, E_ADDR2, "s", "[line [,line]] & [cgr] [count] [#lp]", - "repeat the last subsitution"}, + "repeat the last substitution"}, /* C_STAR */ {"*", ex_at, 0, "b", From owner-svn-src-stable-8@FreeBSD.ORG Fri Jul 30 12:04:30 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 38E70106567A; Fri, 30 Jul 2010 12:04:30 +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 256AF8FC0C; Fri, 30 Jul 2010 12:04:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6UC4U6r055017; Fri, 30 Jul 2010 12:04:30 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6UC4UrF055013; Fri, 30 Jul 2010 12:04:30 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201007301204.o6UC4UrF055013@svn.freebsd.org> From: Jaakko Heinonen Date: Fri, 30 Jul 2010 12:04: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: r210642 - in stable/8: tools/regression/usr.bin tools/regression/usr.bin/apply tools/regression/usr.bin/pkill usr.bin/apply X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 12:04:30 -0000 Author: jh Date: Fri Jul 30 12:04:29 2010 New Revision: 210642 URL: http://svn.freebsd.org/changeset/base/210642 Log: MFC r204761: - Use errx(3) instead of err(3) when checking if snprintf(3) succeeded. snprintf(3) doesn't set errno in the tested cases. - If the same argument reference (for example %1) was specified more than once, the command didn't necessarily fit to the final command buffer. Fix this using a dynamic sbuf buffer. Add a few regression tests for the case. PR: bin/95079 Added: stable/8/tools/regression/usr.bin/apply/ - copied from r204761, head/tools/regression/usr.bin/apply/ Modified: stable/8/tools/regression/usr.bin/Makefile stable/8/usr.bin/apply/Makefile stable/8/usr.bin/apply/apply.c Directory Properties: stable/8/tools/regression/usr.bin/ (props changed) stable/8/tools/regression/usr.bin/pkill/pgrep-_g.t (props changed) stable/8/tools/regression/usr.bin/pkill/pgrep-_s.t (props changed) stable/8/tools/regression/usr.bin/pkill/pkill-_g.t (props changed) stable/8/tools/regression/usr.bin/sed/ (props changed) stable/8/usr.bin/apply/ (props changed) Modified: stable/8/tools/regression/usr.bin/Makefile ============================================================================== --- stable/8/tools/regression/usr.bin/Makefile Fri Jul 30 11:58:18 2010 (r210641) +++ stable/8/tools/regression/usr.bin/Makefile Fri Jul 30 12:04:29 2010 (r210642) @@ -1,5 +1,5 @@ # $FreeBSD$ -SUBDIR= calendar file2c join jot m4 printf sed tr uudecode uuencode xargs lastcomm +SUBDIR= apply calendar file2c join jot m4 printf sed tr uudecode uuencode xargs lastcomm .include Modified: stable/8/usr.bin/apply/Makefile ============================================================================== --- stable/8/usr.bin/apply/Makefile Fri Jul 30 11:58:18 2010 (r210641) +++ stable/8/usr.bin/apply/Makefile Fri Jul 30 12:04:29 2010 (r210642) @@ -3,5 +3,7 @@ PROG= apply WARNS?= 4 +DPADD= ${LIBSBUF} +LDADD= -lsbuf .include Modified: stable/8/usr.bin/apply/apply.c ============================================================================== --- stable/8/usr.bin/apply/apply.c Fri Jul 30 11:58:18 2010 (r210641) +++ stable/8/usr.bin/apply/apply.c Fri Jul 30 12:04:29 2010 (r210642) @@ -44,10 +44,12 @@ static char sccsid[] = "@(#)apply.c 8.4 __FBSDID("$FreeBSD$"); #include +#include #include #include #include +#include #include #include #include @@ -61,10 +63,13 @@ static int exec_shell(const char *, char static void usage(void); int -main(int argc, char *argv[]) { +main(int argc, char *argv[]) +{ + struct sbuf *cmdbuf; + long arg_max; int ch, debug, i, magic, n, nargs, offset, rval; - size_t clen, cmdsize, l; - char *c, *cmd, *name, *p, *q, *shell, *slashp, *tmpshell; + size_t cmdsize; + char *cmd, *name, *p, *shell, *slashp, *tmpshell; debug = 0; magic = '%'; /* Default magic char is `%'. */ @@ -144,13 +149,13 @@ main(int argc, char *argv[]) { p = cmd; offset = snprintf(cmd, cmdsize, EXEC "%s", argv[0]); if ((size_t)offset >= cmdsize) - err(1, "snprintf() failed"); + errx(1, "snprintf() failed"); p += offset; cmdsize -= offset; for (i = 1; i <= nargs; i++) { offset = snprintf(p, cmdsize, " %c%d", magic, i); if ((size_t)offset >= cmdsize) - err(1, "snprintf() failed"); + errx(1, "snprintf() failed"); p += offset; cmdsize -= offset; } @@ -164,61 +169,53 @@ main(int argc, char *argv[]) { } else { offset = snprintf(cmd, cmdsize, EXEC "%s", argv[0]); if ((size_t)offset >= cmdsize) - err(1, "snprintf() failed"); + errx(1, "snprintf() failed"); nargs = n; } - /* - * Grab some space in which to build the command. Allocate - * as necessary later, but no reason to build it up slowly - * for the normal case. - */ - if ((c = malloc(clen = 1024)) == NULL) + cmdbuf = sbuf_new(NULL, NULL, 1024, SBUF_AUTOEXTEND); + if (cmdbuf == NULL) err(1, NULL); + arg_max = sysconf(_SC_ARG_MAX); + /* * (argc) and (argv) are still offset by one to make it simpler to * expand %digit references. At the end of the loop check for (argc) * equals 1 means that all the (argv) has been consumed. */ for (rval = 0; argc > nargs; argc -= nargs, argv += nargs) { - /* - * Find a max value for the command length, and ensure - * there's enough space to build it. - */ - for (l = strlen(cmd), i = 0; i < nargs; i++) - l += strlen(argv[i+1]); - if (l > clen && (c = realloc(c, clen = l)) == NULL) - err(1, NULL); - + sbuf_clear(cmdbuf); /* Expand command argv references. */ - for (p = cmd, q = c; *p != '\0'; ++p) + for (p = cmd; *p != '\0'; ++p) { if (p[0] == magic && isdigit(p[1]) && p[1] != '0') { - offset = snprintf(q, l, "%s", - argv[(++p)[0] - '0']); - if ((size_t)offset >= l) - err(1, "snprintf() failed"); - q += offset; - l -= offset; - } else - *q++ = *p; + if (sbuf_cat(cmdbuf, argv[(++p)[0] - '0']) + == -1) + errc(1, ENOMEM, "sbuf"); + } else { + if (sbuf_putc(cmdbuf, *p) == -1) + errc(1, ENOMEM, "sbuf"); + } + if (sbuf_len(cmdbuf) > arg_max) + errc(1, E2BIG, NULL); + } /* Terminate the command string. */ - *q = '\0'; + sbuf_finish(cmdbuf); /* Run the command. */ if (debug) - (void)printf("%s\n", c); + (void)printf("%s\n", sbuf_data(cmdbuf)); else - if (exec_shell(c, shell, name)) + if (exec_shell(sbuf_data(cmdbuf), shell, name)) rval = 1; } if (argc != 1) errx(1, "expecting additional argument%s after \"%s\"", - (nargs - argc) ? "s" : "", argv[argc - 1]); + (nargs - argc) ? "s" : "", argv[argc - 1]); free(cmd); - free(c); + sbuf_delete(cmdbuf); free(shell); exit(rval); } From owner-svn-src-stable-8@FreeBSD.ORG Fri Jul 30 12:36:40 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9C6691065679; Fri, 30 Jul 2010 12:36:40 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8AAD38FC13; Fri, 30 Jul 2010 12:36:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6UCaeax062096; Fri, 30 Jul 2010 12:36:40 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6UCaenb062094; Fri, 30 Jul 2010 12:36:40 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201007301236.o6UCaenb062094@svn.freebsd.org> From: Ulrich Spoerlein Date: Fri, 30 Jul 2010 12:36:40 +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: r210643 - in stable: 7/bin/chio 8/bin/chio X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 12:36:40 -0000 Author: uqs Date: Fri Jul 30 12:36:40 2010 New Revision: 210643 URL: http://svn.freebsd.org/changeset/base/210643 Log: MFC r208730: Zero struct before reading from it PR: 140384 Modified: stable/8/bin/chio/chio.c Directory Properties: stable/8/bin/chio/ (props changed) Changes in other areas also in this revision: Modified: stable/7/bin/chio/chio.c Directory Properties: stable/7/bin/chio/ (props changed) Modified: stable/8/bin/chio/chio.c ============================================================================== --- stable/8/bin/chio/chio.c Fri Jul 30 12:04:29 2010 (r210642) +++ stable/8/bin/chio/chio.c Fri Jul 30 12:36:40 2010 (r210643) @@ -1072,6 +1072,7 @@ find_element(char *voltag, uint16_t *et, /* Read in the changer slots */ if (cp.cp_nslots > 0) { + (void) memset(&cesr, 0, sizeof(cesr)); cesr.cesr_element_type = CHET_ST; cesr.cesr_element_base = 0; cesr.cesr_element_count = cp.cp_nslots; From owner-svn-src-stable-8@FreeBSD.ORG Fri Jul 30 13:23:22 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 14FDE106566B; Fri, 30 Jul 2010 13:23:22 +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 02FA68FC15; Fri, 30 Jul 2010 13:23:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6UDNLQa072475; Fri, 30 Jul 2010 13:23:21 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6UDNLcA072472; Fri, 30 Jul 2010 13:23:21 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201007301323.o6UDNLcA072472@svn.freebsd.org> From: Jaakko Heinonen Date: Fri, 30 Jul 2010 13:23:21 +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: r210646 - stable/8/sys/geom X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 13:23:22 -0000 Author: jh Date: Fri Jul 30 13:23:21 2010 New Revision: 210646 URL: http://svn.freebsd.org/changeset/base/210646 Log: MFC r207671: Fix deadlock between GEOM class unloading and withering. Withering can't proceed while g_unload_class() blocks the event thread. Fix this by not running g_unload_class() as a GEOM event and dropping the topology lock when withering needs to proceed. PR: kern/139847 Modified: stable/8/sys/geom/geom.h stable/8/sys/geom/geom_subr.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/geom/geom.h ============================================================================== --- stable/8/sys/geom/geom.h Fri Jul 30 12:56:34 2010 (r210645) +++ stable/8/sys/geom/geom.h Fri Jul 30 13:23:21 2010 (r210646) @@ -353,6 +353,9 @@ g_free(void *ptr) sx_assert(&topology_lock, SX_UNLOCKED); \ } while (0) +#define g_topology_sleep(chan, timo) \ + sx_sleep(chan, &topology_lock, 0, "gtopol", timo) + #define DECLARE_GEOM_CLASS(class, name) \ static moduledata_t name##_mod = { \ #name, g_modevent, &class \ Modified: stable/8/sys/geom/geom_subr.c ============================================================================== --- stable/8/sys/geom/geom_subr.c Fri Jul 30 12:56:34 2010 (r210645) +++ stable/8/sys/geom/geom_subr.c Fri Jul 30 13:23:21 2010 (r210646) @@ -134,65 +134,73 @@ g_load_class(void *arg, int flag) } } -static void -g_unload_class(void *arg, int flag) +static int +g_unload_class(struct g_class *mp) { - struct g_hh00 *hh; - struct g_class *mp; struct g_geom *gp; struct g_provider *pp; struct g_consumer *cp; int error; - g_topology_assert(); - hh = arg; - mp = hh->mp; - G_VALID_CLASS(mp); + g_topology_lock(); g_trace(G_T_TOPOLOGY, "g_unload_class(%s)", mp->name); - - /* - * We allow unloading if we have no geoms, or a class - * method we can use to get rid of them. - */ - if (!LIST_EMPTY(&mp->geom) && mp->destroy_geom == NULL) { - hh->error = EOPNOTSUPP; - return; - } - - /* We refuse to unload if anything is open */ +retry: + G_VALID_CLASS(mp); LIST_FOREACH(gp, &mp->geom, geom) { + /* We refuse to unload if anything is open */ LIST_FOREACH(pp, &gp->provider, provider) if (pp->acr || pp->acw || pp->ace) { - hh->error = EBUSY; - return; + g_topology_unlock(); + return (EBUSY); } LIST_FOREACH(cp, &gp->consumer, consumer) if (cp->acr || cp->acw || cp->ace) { - hh->error = EBUSY; - return; + g_topology_unlock(); + return (EBUSY); } + /* If the geom is withering, wait for it to finish. */ + if (gp->flags & G_GEOM_WITHER) { + g_topology_sleep(mp, 1); + goto retry; + } + } + + /* + * We allow unloading if we have no geoms, or a class + * method we can use to get rid of them. + */ + if (!LIST_EMPTY(&mp->geom) && mp->destroy_geom == NULL) { + g_topology_unlock(); + return (EOPNOTSUPP); } /* Bar new entries */ mp->taste = NULL; mp->config = NULL; - error = 0; + LIST_FOREACH(gp, &mp->geom, geom) { + error = mp->destroy_geom(NULL, mp, gp); + if (error != 0) { + g_topology_unlock(); + return (error); + } + } + /* Wait for withering to finish. */ for (;;) { gp = LIST_FIRST(&mp->geom); if (gp == NULL) break; - error = mp->destroy_geom(NULL, mp, gp); - if (error != 0) - break; + KASSERT(gp->flags & G_GEOM_WITHER, + ("Non-withering geom in class %s", mp->name)); + g_topology_sleep(mp, 1); } - if (error == 0) { - if (mp->fini != NULL) - mp->fini(mp); - LIST_REMOVE(mp, class); - } - hh->error = error; - return; + G_VALID_CLASS(mp); + if (mp->fini != NULL) + mp->fini(mp); + LIST_REMOVE(mp, class); + g_topology_unlock(); + + return (0); } int @@ -213,12 +221,12 @@ g_modevent(module_t mod, int type, void g_ignition++; g_init(); } - hh = g_malloc(sizeof *hh, M_WAITOK | M_ZERO); - hh->mp = data; error = EOPNOTSUPP; switch (type) { case MOD_LOAD: - g_trace(G_T_TOPOLOGY, "g_modevent(%s, LOAD)", hh->mp->name); + g_trace(G_T_TOPOLOGY, "g_modevent(%s, LOAD)", mp->name); + hh = g_malloc(sizeof *hh, M_WAITOK | M_ZERO); + hh->mp = mp; /* * Once the system is not cold, MOD_LOAD calls will be * from the userland and the g_event thread will be able @@ -236,18 +244,14 @@ g_modevent(module_t mod, int type, void } break; case MOD_UNLOAD: - g_trace(G_T_TOPOLOGY, "g_modevent(%s, UNLOAD)", hh->mp->name); - error = g_waitfor_event(g_unload_class, hh, M_WAITOK, NULL); - if (error == 0) - error = hh->error; + g_trace(G_T_TOPOLOGY, "g_modevent(%s, UNLOAD)", mp->name); + DROP_GIANT(); + error = g_unload_class(mp); + PICKUP_GIANT(); if (error == 0) { - KASSERT(LIST_EMPTY(&hh->mp->geom), - ("Unloaded class (%s) still has geom", hh->mp->name)); + KASSERT(LIST_EMPTY(&mp->geom), + ("Unloaded class (%s) still has geom", mp->name)); } - g_free(hh); - break; - default: - g_free(hh); break; } return (error); From owner-svn-src-stable-8@FreeBSD.ORG Fri Jul 30 13:56:36 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C93811065678; Fri, 30 Jul 2010 13:56:36 +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 8EDD58FC0C; Fri, 30 Jul 2010 13:56:36 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id A2CF435A83D; Fri, 30 Jul 2010 15:56:35 +0200 (CEST) Received: by turtle.stack.nl (Postfix, from userid 1677) id 9942917357; Fri, 30 Jul 2010 15:56:35 +0200 (CEST) Date: Fri, 30 Jul 2010 15:56:35 +0200 From: Jilles Tjoelker To: jhell Message-ID: <20100730135635.GB42845@stack.nl> References: <201007291655.o6TGtR0k099119@svn.freebsd.org> <4C5212CC.2070201@dataix.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4C5212CC.2070201@dataix.net> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: svn-src-stable@freebsd.org, FreeBSD SVN Source All , src-committers@freebsd.org, svn-src-stable-8@freebsd.org Subject: Re: svn commit: r210616 - stable/8/bin/sh X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 13:56:36 -0000 On Thu, Jul 29, 2010 at 07:46:20PM -0400, jhell wrote: > So what has been commited here is implicitly stating that instead of > using ( trap 'exit 1' 2 ) in a script to catch SIGINT and exit it is now > being done on behalf of the user with no way for them to control it ? No, this commit only changes something for interactive mode. It basically tries to create similar behaviour as the lines above (which have been in place for longer) but for the case with job control. The lines above do have an effect in non-interactive mode, for example: sh -c 'ftp; echo continued' Even if ^C has been typed in ftp(1), the shell continues. If a trap has been set on SIGINT, the code has no effect as int_pending is not set in that case. > Basically this has the same effect on a script that uses ( && ) and to > which now have the same meaning. > This script should print "PRINTME" twice when ^C during the sleep. > #!/bin/sh > sleep 5000; echo "PRINTME" > echo "PRINTME" No, this script should print nothing. This follows from common sense (users should be able to abort scripts unless those scripts do something to prevent it). A more technical explanation: because job control is not enabled, sh and sleep are in the same process group and therefore both receive terminal signals. Because sleep exited on the SIGINT, sh should exit on it, too. > Whereas this script with the old behavior would have done what is trying > to be done now for the first line but should still print only the second > "PRINTME" during a ^C of sleep. > #!/bin/sh > sleep 5000 && echo "PRINTME" > echo "PRINTME" This should not print anything either, for the same reasons. > And this script should not print anything when ^C is used during sleep. > #!/bin/sh > trap 'exit 1' 2 > sleep 5000 ; echo "PRINTME" > echo "PRINTME" Correct. > What is being done currently on stable/8 is incorrect... -- Jilles Tjoelker From owner-svn-src-stable-8@FreeBSD.ORG Fri Jul 30 16:23:46 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3818910656F8; Fri, 30 Jul 2010 16:23:46 +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 25B408FC1D; Fri, 30 Jul 2010 16:23:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6UGNkvk012660; Fri, 30 Jul 2010 16:23:46 GMT (envelope-from bcr@svn.freebsd.org) Received: (from bcr@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6UGNkmd012658; Fri, 30 Jul 2010 16:23:46 GMT (envelope-from bcr@svn.freebsd.org) Message-Id: <201007301623.o6UGNkmd012658@svn.freebsd.org> From: Benedict Reuschling Date: Fri, 30 Jul 2010 16:23:46 +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: r210659 - stable/8/sbin/newfs_msdos X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 16:23:46 -0000 Author: bcr (doc committer) Date: Fri Jul 30 16:23:45 2010 New Revision: 210659 URL: http://svn.freebsd.org/changeset/base/210659 Log: MFC r210463: Clarify that the "number of bytes per sector"-range in the -S option is meant to be "inclusive". The original issue of the PR was already fixed. PR: docs/142418 Submitted by: David Naylor (naylor dot b dot david at gmail dot com) No objection from: kib Modified: stable/8/sbin/newfs_msdos/newfs_msdos.8 Directory Properties: stable/8/sbin/newfs_msdos/ (props changed) Modified: stable/8/sbin/newfs_msdos/newfs_msdos.8 ============================================================================== --- stable/8/sbin/newfs_msdos/newfs_msdos.8 Fri Jul 30 15:56:00 2010 (r210658) +++ stable/8/sbin/newfs_msdos/newfs_msdos.8 Fri Jul 30 16:23:45 2010 (r210659) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 11, 2009 +.Dd July 25, 2010 .Dt NEWFS_MSDOS 8 .Os .Sh NAME @@ -116,7 +116,7 @@ The default is .It Fl S Ar sector-size Number of bytes per sector. Acceptable values are powers of 2 -in the range 512 through 32768. +in the range 512 through 32768, inclusive. .It Fl a Ar FAT-size Number of sectors per FAT. .It Fl b Ar block-size From owner-svn-src-stable-8@FreeBSD.ORG Fri Jul 30 16:27:42 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 113BA1065679; Fri, 30 Jul 2010 16:27:42 +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 F2DA28FC12; Fri, 30 Jul 2010 16:27:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6UGRfqW013565; Fri, 30 Jul 2010 16:27:41 GMT (envelope-from bcr@svn.freebsd.org) Received: (from bcr@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6UGRfKr013562; Fri, 30 Jul 2010 16:27:41 GMT (envelope-from bcr@svn.freebsd.org) Message-Id: <201007301627.o6UGRfKr013562@svn.freebsd.org> From: Benedict Reuschling Date: Fri, 30 Jul 2010 16:27: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: r210660 - stable/8/lib/libc/locale X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 16:27:42 -0000 Author: bcr (doc committer) Date: Fri Jul 30 16:27:41 2010 New Revision: 210660 URL: http://svn.freebsd.org/changeset/base/210660 Log: MFC r210468: Apply a small grammar fix to {toupper,tolower}(3). PR: docs/140458 Submitted by: Jeremy Huddleston (Jeremyhu at apple dot com) Modified: stable/8/lib/libc/locale/tolower.3 stable/8/lib/libc/locale/toupper.3 Directory Properties: stable/8/lib/libc/locale/ (props changed) Modified: stable/8/lib/libc/locale/tolower.3 ============================================================================== --- stable/8/lib/libc/locale/tolower.3 Fri Jul 30 16:23:45 2010 (r210659) +++ stable/8/lib/libc/locale/tolower.3 Fri Jul 30 16:27:41 2010 (r210660) @@ -32,7 +32,7 @@ .\" @(#)tolower.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd July 17, 2005 +.Dd July 25, 2010 .Dt TOLOWER 3 .Os .Sh NAME @@ -57,7 +57,7 @@ or the value of If the argument is an upper-case letter, the .Fn tolower function returns the corresponding lower-case letter if there is -one; otherwise the argument is returned unchanged. +one; otherwise, the argument is returned unchanged. .Sh COMPATIBILITY The .Bx 4.4 Modified: stable/8/lib/libc/locale/toupper.3 ============================================================================== --- stable/8/lib/libc/locale/toupper.3 Fri Jul 30 16:23:45 2010 (r210659) +++ stable/8/lib/libc/locale/toupper.3 Fri Jul 30 16:27:41 2010 (r210660) @@ -32,7 +32,7 @@ .\" @(#)toupper.3 8.1 (Berkeley) 6/4/93 .\" $FreeBSD$ .\" -.Dd July 17, 2005 +.Dd July 25, 2010 .Dt TOUPPER 3 .Os .Sh NAME @@ -57,7 +57,7 @@ or the value of If the argument is a lower-case letter, the .Fn toupper function returns the corresponding upper-case letter if there is -one; otherwise the argument is returned unchanged. +one; otherwise, the argument is returned unchanged. .Sh COMPATIBILITY The .Bx 4.4 From owner-svn-src-stable-8@FreeBSD.ORG Fri Jul 30 21:58:36 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 431D8106566C; Fri, 30 Jul 2010 21:58: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 326C28FC08; Fri, 30 Jul 2010 21:58:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6ULwaIn086440; Fri, 30 Jul 2010 21:58:36 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6ULwaOI086438; Fri, 30 Jul 2010 21:58:36 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201007302158.o6ULwaOI086438@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Fri, 30 Jul 2010 21:58:36 +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: r210667 - stable/8/sys/net X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 21:58:36 -0000 Author: bz Date: Fri Jul 30 21:58:35 2010 New Revision: 210667 URL: http://svn.freebsd.org/changeset/base/210667 Log: MFC r210532: Return NULL rather than 0 for a pointer. Modified: stable/8/sys/net/if.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/net/if.c ============================================================================== --- stable/8/sys/net/if.c Fri Jul 30 21:45:53 2010 (r210666) +++ stable/8/sys/net/if.c Fri Jul 30 21:58:35 2010 (r210667) @@ -1757,7 +1757,7 @@ ifaof_ifpforaddr(struct sockaddr *addr, u_int af = addr->sa_family; if (af >= AF_MAX) - return (0); + return (NULL); IF_ADDR_LOCK(ifp); TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { if (ifa->ifa_addr->sa_family != af) From owner-svn-src-stable-8@FreeBSD.ORG Sat Jul 31 02:12:27 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A48A51065678; Sat, 31 Jul 2010 02:12:27 +0000 (UTC) (envelope-from jhellenthal@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 37E488FC1D; Sat, 31 Jul 2010 02:12:26 +0000 (UTC) Received: by iwn35 with SMTP id 35so2445682iwn.13 for ; Fri, 30 Jul 2010 19:12:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :x-enigmail-version:openpgp:content-type:content-transfer-encoding; bh=InFNHpn42qqVq8EdiuVo/dU5dfwuAqa7jcrzjHHFldU=; b=ZYBbWJ1pqHiUZiGIPeK/+LwcZ6E3aAveuoLcHCJW/eURf8Zd4cOgkmDgjYY7ZW6u0M 2iafimQenb/hqcYMQ1pEATU6lNwMK3oy0p8AHIOWH2ldqFuwD3CSdyDZdmPA/3opMFMq VWRb3edXKs0053GFQWe5uSDxWHtggwHwsSJOA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:x-enigmail-version:openpgp:content-type :content-transfer-encoding; b=pW8fX79GBiiAT5Ej8debNvlXCpZ8sYRQ1AfSFbTAN9V/jSMnWc4UJ6YWIRYFAWKM1k djI3d32CqHMN/5g9twvmWa+4NnQykBXyMfRtJP3DVAsoua1b6WUrzdadomVS6sx56i5+ BzjpWKcJSz7sWEvPAm8+EimBXzmcR4ls3nrzA= Received: by 10.231.34.70 with SMTP id k6mr2808547ibd.25.1280542346552; Fri, 30 Jul 2010 19:12:26 -0700 (PDT) Received: from centel.dataix.local (adsl-99-19-46-227.dsl.klmzmi.sbcglobal.net [99.19.46.227]) by mx.google.com with ESMTPS id n20sm2516345ibe.23.2010.07.30.19.12.23 (version=SSLv3 cipher=RC4-MD5); Fri, 30 Jul 2010 19:12:24 -0700 (PDT) Sender: "J. Hellenthal" Message-ID: <4C538686.5050403@dataix.net> Date: Fri, 30 Jul 2010 22:12:22 -0400 From: jhell User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1.11) Gecko/20100722 Thunderbird MIME-Version: 1.0 To: Jilles Tjoelker References: <201007291655.o6TGtR0k099119@svn.freebsd.org> <4C5212CC.2070201@dataix.net> <20100730135635.GB42845@stack.nl> In-Reply-To: <20100730135635.GB42845@stack.nl> X-Enigmail-Version: 1.0.1 OpenPGP: id=89D8547E Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: svn-src-stable@freebsd.org, FreeBSD SVN Source All , src-committers@freebsd.org, svn-src-stable-8@freebsd.org Subject: Re: svn commit: r210616 - stable/8/bin/sh X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jul 2010 02:12:27 -0000 On 07/30/2010 09:56, Jilles Tjoelker wrote: > On Thu, Jul 29, 2010 at 07:46:20PM -0400, jhell wrote: >> So what has been commited here is implicitly stating that instead of >> using ( trap 'exit 1' 2 ) in a script to catch SIGINT and exit it is now >> being done on behalf of the user with no way for them to control it ? > > No, this commit only changes something for interactive mode. It > basically tries to create similar behaviour as the lines above (which > have been in place for longer) but for the case with job control. > > The lines above do have an effect in non-interactive mode, for example: > sh -c 'ftp; echo continued' > Even if ^C has been typed in ftp(1), the shell continues. If a trap has > been set on SIGINT, the code has no effect as int_pending is not set in > that case. > >> Basically this has the same effect on a script that uses ( && ) and to >> which now have the same meaning. > >> This script should print "PRINTME" twice when ^C during the sleep. > >> #!/bin/sh >> sleep 5000; echo "PRINTME" >> echo "PRINTME" > > No, this script should print nothing. This follows from common sense > (users should be able to abort scripts unless those scripts do something > to prevent it). A more technical explanation: because job control is not > enabled, sh and sleep are in the same process group and therefore both > receive terminal signals. Because sleep exited on the SIGINT, sh should > exit on it, too. > >> Whereas this script with the old behavior would have done what is trying >> to be done now for the first line but should still print only the second >> "PRINTME" during a ^C of sleep. > >> #!/bin/sh >> sleep 5000 && echo "PRINTME" >> echo "PRINTME" > > This should not print anything either, for the same reasons. > >> And this script should not print anything when ^C is used during sleep. >> #!/bin/sh >> trap 'exit 1' 2 >> sleep 5000 ; echo "PRINTME" >> echo "PRINTME" > > Correct. > >> What is being done currently on stable/8 is incorrect... > Thank you for you explanation with these. I was confusing the way SIGINT should be handled compared to how ";" is supposed to act. I did some tests against some other shells to and to my surprise they confirmed the same behavior that we have now which is correct. Thanks again & much appreciated, -- jhell,v From owner-svn-src-stable-8@FreeBSD.ORG Sat Jul 31 10:12:54 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 57D741065678; Sat, 31 Jul 2010 10:12: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 462658FC0A; Sat, 31 Jul 2010 10:12:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6VACs4h046835; Sat, 31 Jul 2010 10:12:54 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6VACsZ8046832; Sat, 31 Jul 2010 10:12:54 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201007311012.o6VACsZ8046832@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 31 Jul 2010 10: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: r210670 - stable/8/sys/dev/iwn X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jul 2010 10:12:54 -0000 Author: bschmidt Date: Sat Jul 31 10:12:53 2010 New Revision: 210670 URL: http://svn.freebsd.org/changeset/base/210670 Log: MFC r210209: - Add new IDs for 6000 series devices. - The 6000 series WiMAX devices need a separate firmware. - The b-gen devices are not hooked because the hardware revision type is not know. 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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jul 31 10:01:15 2010 (r210669) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jul 31 10:12:53 2010 (r210670) @@ -320,8 +320,17 @@ static const struct iwn_ident iwn_ident_ { 0x8086, 0x4239, "Intel(R) PRO/Wireless 6000" }, { 0x8086, 0x422B, "Intel(R) PRO/Wireless 6000" }, { 0x8086, 0x422C, "Intel(R) PRO/Wireless 6000" }, - { 0x8086, 0x0086, "Intel(R) PRO/Wireless 6050" }, - { 0x8086, 0x0087, "Intel(R) PRO/Wireless 6050" }, + { 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 } }; @@ -734,7 +743,14 @@ iwn_hal_attach(struct iwn_softc *sc) case IWN_HW_REV_TYPE_6050: sc->sc_hal = &iwn5000_hal; sc->limits = &iwn6000_sensitivity_limits; - sc->fwname = "iwn6000fw"; + 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; @@ -5751,8 +5767,7 @@ iwn_apm_init(struct iwn_softc *sc) IWN_CLRBITS(sc, IWN_GIO, IWN_GIO_L0S_ENA); if (sc->hw_type != IWN_HW_REV_TYPE_4965 && - sc->hw_type != IWN_HW_REV_TYPE_6000 && - sc->hw_type != IWN_HW_REV_TYPE_6050) + sc->hw_type <= IWN_HW_REV_TYPE_1000) IWN_SETBITS(sc, IWN_ANA_PLL, IWN_ANA_PLL_INIT); /* Wait for clock stabilization before accessing prph. */ Modified: stable/8/sys/dev/iwn/if_iwnreg.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnreg.h Sat Jul 31 10:01:15 2010 (r210669) +++ stable/8/sys/dev/iwn/if_iwnreg.h Sat Jul 31 10:12:53 2010 (r210670) @@ -1,5 +1,5 @@ /* $FreeBSD$ */ -/* $OpenBSD: if_iwnreg.h,v 1.37 2010/02/17 18:23:00 damien Exp $ */ +/* $OpenBSD: if_iwnreg.h,v 1.38 2010/04/10 08:37:36 damien Exp $ */ /*- * Copyright (c) 2007, 2008 @@ -204,6 +204,7 @@ #define IWN_HW_REV_TYPE_1000 6 #define IWN_HW_REV_TYPE_6000 7 #define IWN_HW_REV_TYPE_6050 8 +#define IWN_HW_REV_TYPE_6005 11 /* Possible flags for register IWN_GIO_CHICKEN. */ #define IWN_GIO_CHICKEN_L1A_NO_L0S_RX (1 << 23) From owner-svn-src-stable-8@FreeBSD.ORG Sat Jul 31 10:15:18 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 64992106564A; Sat, 31 Jul 2010 10:15: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 535848FC1B; Sat, 31 Jul 2010 10:15:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6VAFIiC047453; Sat, 31 Jul 2010 10:15:18 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6VAFIkP047451; Sat, 31 Jul 2010 10:15:18 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201007311015.o6VAFIkP047451@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 31 Jul 2010 10:15: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: r210671 - stable/8/sys/dev/iwn X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jul 2010 10:15:18 -0000 Author: bschmidt Date: Sat Jul 31 10:15:18 2010 New Revision: 210671 URL: http://svn.freebsd.org/changeset/base/210671 Log: MFC r210110: Detect active chains differently to work around a firmware bug which would mark non-existing chains as active. 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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jul 31 10:12:53 2010 (r210670) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jul 31 10:15:18 2010 (r210671) @@ -4134,10 +4134,14 @@ iwn_collect_noise(struct iwn_softc *sc, val = MAX(calib->rssi[2], val); /* Determine which antennas are connected. */ - sc->chainmask = 0; + sc->chainmask = sc->rxchainmask; for (i = 0; i < 3; i++) - if (val - calib->rssi[i] <= 15 * 20) - sc->chainmask |= 1 << i; + if (val - calib->rssi[i] > 15 * 20) + sc->chainmask &= ~(1 << i); + DPRINTF(sc, IWN_DEBUG_CALIBRATE, + "%s: RX chains mask: theoretical=0x%x, actual=0x%x\n", + __func__, sc->rxchainmask, sc->chainmask); + /* If none of the TX antennas are connected, keep at least one. */ if ((sc->chainmask & sc->txchainmask) == 0) sc->chainmask |= IWN_LSB(sc->txchainmask); From owner-svn-src-stable-8@FreeBSD.ORG Sat Jul 31 10:16:42 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 96B90106566B; Sat, 31 Jul 2010 10:16: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 845578FC17; Sat, 31 Jul 2010 10:16:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6VAGfJU047820; Sat, 31 Jul 2010 10:16:41 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6VAGfeV047816; Sat, 31 Jul 2010 10:16:41 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201007311016.o6VAGfeV047816@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 31 Jul 2010 10:16: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: r210672 - stable/8/sys/dev/iwn X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jul 2010 10:16:42 -0000 Author: bschmidt Date: Sat Jul 31 10:16:41 2010 New Revision: 210672 URL: http://svn.freebsd.org/changeset/base/210672 Log: MFC r210111: Add support for firmware images in "type-length-value" format. 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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jul 31 10:15:18 2010 (r210671) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jul 31 10:16:41 2010 (r210672) @@ -231,6 +231,10 @@ static int iwn4965_load_firmware(struct static int iwn5000_load_firmware_section(struct iwn_softc *, uint32_t, const uint8_t *, int); static int iwn5000_load_firmware(struct iwn_softc *); +static int iwn_read_firmware_leg(struct iwn_softc *, + struct iwn_fw_info *); +static int iwn_read_firmware_tlv(struct iwn_softc *, + struct iwn_fw_info *, uint16_t); static int iwn_read_firmware(struct iwn_softc *); static int iwn_clock_wait(struct iwn_softc *); static int iwn_apm_init(struct iwn_softc *); @@ -5644,39 +5648,19 @@ iwn5000_load_firmware(struct iwn_softc * return 0; } +/* + * Extract text and data sections from a legacy firmware image. + */ static int -iwn_read_firmware(struct iwn_softc *sc) +iwn_read_firmware_leg(struct iwn_softc *sc, struct iwn_fw_info *fw) { - const struct iwn_hal *hal = sc->sc_hal; - struct iwn_fw_info *fw = &sc->fw; const uint32_t *ptr; + size_t hdrlen = 24; uint32_t rev; - size_t size; - - IWN_UNLOCK(sc); - - /* Read firmware image from filesystem. */ - sc->fw_fp = firmware_get(sc->fwname); - if (sc->fw_fp == NULL) { - device_printf(sc->sc_dev, - "%s: could not load firmare image \"%s\"\n", __func__, - sc->fwname); - IWN_LOCK(sc); - return EINVAL; - } - IWN_LOCK(sc); - - size = sc->fw_fp->datasize; - if (size < 28) { - device_printf(sc->sc_dev, - "%s: truncated firmware header: %zu bytes\n", - __func__, size); - return EINVAL; - } - /* Process firmware header. */ ptr = (const uint32_t *)sc->fw_fp->data; rev = le32toh(*ptr++); + /* Check firmware API version. */ if (IWN_FW_API(rev) <= 1) { device_printf(sc->sc_dev, @@ -5685,34 +5669,27 @@ iwn_read_firmware(struct iwn_softc *sc) } if (IWN_FW_API(rev) >= 3) { /* Skip build number (version 2 header). */ - size -= 4; + hdrlen += 4; ptr++; } + if (fw->size < hdrlen) { + device_printf(sc->sc_dev, + "%s: firmware file too short: %zu bytes\n", + __func__, fw->size); + return EINVAL; + } fw->main.textsz = le32toh(*ptr++); fw->main.datasz = le32toh(*ptr++); fw->init.textsz = le32toh(*ptr++); fw->init.datasz = le32toh(*ptr++); fw->boot.textsz = le32toh(*ptr++); - size -= 24; - - /* Sanity-check firmware header. */ - 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 || - fw->boot.textsz > IWN_FW_BOOT_TEXT_MAXSZ || - (fw->boot.textsz & 3) != 0) { - device_printf(sc->sc_dev, "%s: invalid firmware header\n", - __func__); - return EINVAL; - } /* Check that all firmware sections fit. */ - if (fw->main.textsz + fw->main.datasz + fw->init.textsz + - fw->init.datasz + fw->boot.textsz > size) { + if (fw->size < hdrlen + fw->main.textsz + fw->main.datasz + + fw->init.textsz + fw->init.datasz + fw->boot.textsz) { device_printf(sc->sc_dev, "%s: firmware file too short: %zu bytes\n", - __func__, size); + __func__, fw->size); return EINVAL; } @@ -5726,6 +5703,151 @@ iwn_read_firmware(struct iwn_softc *sc) return 0; } +/* + * Extract text and data sections from a TLV firmware image. + */ +int +iwn_read_firmware_tlv(struct iwn_softc *sc, struct iwn_fw_info *fw, + uint16_t alt) +{ + const struct iwn_fw_tlv_hdr *hdr; + const struct iwn_fw_tlv *tlv; + const uint8_t *ptr, *end; + uint64_t altmask; + uint32_t len; + + if (fw->size < sizeof (*hdr)) { + device_printf(sc->sc_dev, + "%s: firmware file too short: %zu bytes\n", + __func__, fw->size); + return EINVAL; + } + hdr = (const struct iwn_fw_tlv_hdr *)fw->data; + if (hdr->signature != htole32(IWN_FW_SIGNATURE)) { + device_printf(sc->sc_dev, + "%s: bad firmware file signature 0x%08x\n", + __func__, le32toh(hdr->signature)); + return EINVAL; + } + + /* + * Select the closest supported alternative that is less than + * or equal to the specified one. + */ + altmask = le64toh(hdr->altmask); + while (alt > 0 && !(altmask & (1ULL << alt))) + alt--; /* Downgrade. */ + + ptr = (const uint8_t *)(hdr + 1); + end = (const uint8_t *)(fw->data + fw->size); + + /* Parse type-length-value fields. */ + while (ptr + sizeof (*tlv) <= end) { + tlv = (const struct iwn_fw_tlv *)ptr; + len = le32toh(tlv->len); + + ptr += sizeof (*tlv); + if (ptr + len > end) { + device_printf(sc->sc_dev, + "%s: firmware file too short: %zu bytes\n", + __func__, fw->size); + return EINVAL; + } + /* Skip other alternatives. */ + if (tlv->alt != 0 && tlv->alt != htole16(alt)) + goto next; + + switch (le16toh(tlv->type)) { + case IWN_FW_TLV_MAIN_TEXT: + fw->main.text = ptr; + fw->main.textsz = len; + break; + case IWN_FW_TLV_MAIN_DATA: + fw->main.data = ptr; + fw->main.datasz = len; + break; + case IWN_FW_TLV_INIT_TEXT: + fw->init.text = ptr; + fw->init.textsz = len; + break; + case IWN_FW_TLV_INIT_DATA: + fw->init.data = ptr; + fw->init.datasz = len; + break; + case IWN_FW_TLV_BOOT_TEXT: + fw->boot.text = ptr; + fw->boot.textsz = len; + break; + default: + DPRINTF(sc, IWN_DEBUG_RESET, + "%s: TLV type %d not handled\n", + __func__, le16toh(tlv->type)); + break; + } +next: /* TLV fields are 32-bit aligned. */ + ptr += (len + 3) & ~3; + } + return 0; +} + +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; + + IWN_UNLOCK(sc); + + memset(fw, 0, sizeof (*fw)); + + /* Read firmware image from filesystem. */ + sc->fw_fp = firmware_get(sc->fwname); + if (sc->fw_fp == NULL) { + device_printf(sc->sc_dev, + "%s: could not load firmare image \"%s\"\n", __func__, + sc->fwname); + IWN_LOCK(sc); + return EINVAL; + } + IWN_LOCK(sc); + + fw->size = sc->fw_fp->datasize; + fw->data = (const uint8_t *)sc->fw_fp->data; + if (fw->size < sizeof (uint32_t)) { + device_printf(sc->sc_dev, + "%s: firmware file too short: %zu bytes\n", + __func__, fw->size); + return EINVAL; + } + + /* Retrieve text and data sections. */ + if (*(const uint32_t *)fw->data != 0) /* Legacy image. */ + error = iwn_read_firmware_leg(sc, fw); + else + error = iwn_read_firmware_tlv(sc, fw, 1); + if (error != 0) { + device_printf(sc->sc_dev, + "%s: could not read firmware sections\n", __func__); + return error; + } + + /* 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 || + fw->boot.textsz > IWN_FW_BOOT_TEXT_MAXSZ || + (fw->boot.textsz & 3) != 0) { + device_printf(sc->sc_dev, + "%s: firmware sections too large\n", __func__); + return EINVAL; + } + + /* We can proceed with loading the firmware. */ + return 0; +} + static int iwn_clock_wait(struct iwn_softc *sc) { Modified: stable/8/sys/dev/iwn/if_iwnreg.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnreg.h Sat Jul 31 10:15:18 2010 (r210671) +++ stable/8/sys/dev/iwn/if_iwnreg.h Sat Jul 31 10:16:41 2010 (r210672) @@ -1,5 +1,5 @@ /* $FreeBSD$ */ -/* $OpenBSD: if_iwnreg.h,v 1.38 2010/04/10 08:37:36 damien Exp $ */ +/* $OpenBSD: if_iwnreg.h,v 1.40 2010/05/05 19:41:57 damien Exp $ */ /*- * Copyright (c) 2007, 2008 @@ -1260,6 +1260,34 @@ struct iwn_fw_dump { uint32_t time[2]; } __packed; +/* TLV firmware header. */ +struct iwn_fw_tlv_hdr { + uint32_t zero; /* Always 0, to differentiate from legacy. */ + uint32_t signature; +#define IWN_FW_SIGNATURE 0x0a4c5749 /* "IWL\n" */ + + uint8_t descr[64]; + uint32_t rev; +#define IWN_FW_API(x) (((x) >> 8) & 0xff) + + uint32_t build; + uint64_t altmask; +} __packed; + +/* TLV header. */ +struct iwn_fw_tlv { + uint16_t type; +#define IWN_FW_TLV_MAIN_TEXT 1 +#define IWN_FW_TLV_MAIN_DATA 2 +#define IWN_FW_TLV_INIT_TEXT 3 +#define IWN_FW_TLV_INIT_DATA 4 +#define IWN_FW_TLV_BOOT_TEXT 5 +#define IWN_FW_TLV_PBREQ_MAXLEN 6 + + uint16_t alt; + uint32_t len; +} __packed; + #define IWN4965_FW_TEXT_MAXSZ ( 96 * 1024) #define IWN4965_FW_DATA_MAXSZ ( 40 * 1024) #define IWN5000_FW_TEXT_MAXSZ (256 * 1024) @@ -1268,8 +1296,6 @@ struct iwn_fw_dump { #define IWN4965_FWSZ (IWN4965_FW_TEXT_MAXSZ + IWN4965_FW_DATA_MAXSZ) #define IWN5000_FWSZ IWN5000_FW_TEXT_MAXSZ -#define IWN_FW_API(x) (((x) >> 8) & 0xff) - /* * Offsets into EEPROM. */ Modified: stable/8/sys/dev/iwn/if_iwnvar.h ============================================================================== --- stable/8/sys/dev/iwn/if_iwnvar.h Sat Jul 31 10:15:18 2010 (r210671) +++ stable/8/sys/dev/iwn/if_iwnvar.h Sat Jul 31 10:16:41 2010 (r210672) @@ -1,5 +1,5 @@ /* $FreeBSD$ */ -/* $OpenBSD: if_iwnvar.h,v 1.17 2010/02/17 18:23:00 damien Exp $ */ +/* $OpenBSD: if_iwnvar.h,v 1.18 2010/04/30 16:06:46 damien Exp $ */ /*- * Copyright (c) 2007, 2008 @@ -150,7 +150,8 @@ struct iwn_fw_part { }; struct iwn_fw_info { - u_char *data; + const uint8_t *data; + size_t size; struct iwn_fw_part init; struct iwn_fw_part main; struct iwn_fw_part boot; From owner-svn-src-stable-8@FreeBSD.ORG Sat Jul 31 10:18:15 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 900FE1065672; Sat, 31 Jul 2010 10:18:15 +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 7B5BA8FC0C; Sat, 31 Jul 2010 10:18:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6VAIF2e048200; Sat, 31 Jul 2010 10:18:15 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6VAIFkB048195; Sat, 31 Jul 2010 10:18:15 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201007311018.o6VAIFkB048195@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 31 Jul 2010 10:18:15 +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: r210673 - in stable/8/sys: amd64/conf conf contrib/dev/iwn i386/conf modules/iwnfw modules/iwnfw/iwn6000 modules/iwnfw/iwn6050 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jul 2010 10:18:15 -0000 Author: bschmidt Date: Sat Jul 31 10:18:15 2010 New Revision: 210673 URL: http://svn.freebsd.org/changeset/base/210673 Log: MFC r210113: - Update 6000 firmware to 9.221.4.1 - Add 6050 firmware Added: stable/8/sys/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu - copied unchanged from r210113, head/sys/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu stable/8/sys/contrib/dev/iwn/iwlwifi-6050-9.201.4.1.fw.uu - copied unchanged from r210113, head/sys/contrib/dev/iwn/iwlwifi-6050-9.201.4.1.fw.uu stable/8/sys/modules/iwnfw/iwn6050/ - copied from r210113, head/sys/modules/iwnfw/iwn6050/ Deleted: stable/8/sys/contrib/dev/iwn/iwlwifi-6000-9.193.4.1.fw.uu Modified: stable/8/sys/amd64/conf/NOTES stable/8/sys/conf/files stable/8/sys/i386/conf/NOTES stable/8/sys/modules/iwnfw/Makefile stable/8/sys/modules/iwnfw/iwn6000/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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/amd64/conf/NOTES ============================================================================== --- stable/8/sys/amd64/conf/NOTES Sat Jul 31 10:16:41 2010 (r210672) +++ stable/8/sys/amd64/conf/NOTES Sat Jul 31 10:18:15 2010 (r210673) @@ -325,6 +325,7 @@ device ath_rate_sample # SampleRate tx # iwn5000fw: Specific module for the 5000 only # iwn5150fw: Specific module for the 5150 only # iwn6000fw: Specific module for the 6000 only +# iwn6050fw: Specific module for the 6050 only # mwlfw: Marvell 88W8363 firmware # wpifw: Intel 3945ABG Wireless LAN Controller firmware @@ -342,6 +343,7 @@ device iwn1000fw device iwn5000fw device iwn5150fw device iwn6000fw +device iwn6050fw device mwlfw device wpifw Modified: stable/8/sys/conf/files ============================================================================== --- stable/8/sys/conf/files Sat Jul 31 10:16:41 2010 (r210672) +++ stable/8/sys/conf/files Sat Jul 31 10:18:15 2010 (r210673) @@ -1179,7 +1179,21 @@ iwn6000fw.fwo optional iwn6000fw | iwn clean "iwn6000fw.fwo" iwn6000.fw optional iwn6000fw | iwnfw \ dependency ".PHONY" \ - compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000-9.193.4.1.fw.uu" \ + 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" +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 \ + clean "iwn6050fw.c" +iwn6050fw.fwo optional iwn6050fw | iwnfw \ + dependency "iwn6050.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn6050.fw" \ + 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" \ no-obj no-implicit-rule \ clean "iwn6000.fw" dev/ixgb/if_ixgb.c optional ixgb Copied: stable/8/sys/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu (from r210113, head/sys/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/sys/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu Sat Jul 31 10:18:15 2010 (r210673, copy of r210113, head/sys/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu) @@ -0,0 +1,8017 @@ +Copyright (c) 2006-2010, 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-6000-9.221.4.1.fw.uu +AQTdCbxjAADQOAIAAEABAOQ2AgAAQAEAAAAAACAggA8AAEAAaSAAAGkgQABpIAAAaSBAACAggA8A +AOgAaSAAAGkgQABpIAAAaSBAACAggA8AAHAGaSAAAGkgQABpIAAASiAAAEohAABKIgAASiMAAEok +AABKJQAASiYAAEonAABKIAAQSiEAEEoiABBKIwAQSiQAEEolABBKJgAQSicAEEogACBKIQAgSiIA +IEojACBKJAAgSiUAIEomACBKJwAgSiAAMEohADAKJIA/gQAAQEEsnDBALJwwQiQcNAoigD+AAOSC +CiMANwYPAABKJgBwaSBAAEomAHBKJgBwSiYAcEomAHAAFgBwgABsBEB4ICBAhwAAAAAAAAAAAADP +caqqu7vPcJ8AuP82oDagNqA2oM9xoADIOw6BiLgOoWkgQAD+8eB48cClwUHAQsEMHAAxEBxAMc9x +gAD8gzQZwA8wGQAPLBnADigZgA4kGUAOz3CAAPyDIBhAC89wgAD8gxwYAAvPcIAA/IMYGMAKz3CA +APyDFBiACs9wgAD8gxAYwAjPcIAA/IMMGIAIz3CAAPyDCBhACM9xgACAg4AZAAh8GcAHeBmAB3QZ +QAdwGQAHbBkAB2gZgAZkGUAGYBkABlwZwAVYGYAFVBlABVAZAAVMGcAESBmABEQZQARAGQAE76HO +oa2hjKEsGcACKBmAAiQZQAIgGQACHBnAARgZgAEUGUABEBkAAWOhaiAAA9gZAABqIMAC1BkAAGog +gALQGQAAaiBAAcgZAABqIAABxBkAAGogwADAGQAAaiCAALwZAABqIEAAuBkAAGogAAC0GQAAaiCA +AcwZAABA2J+4z3GfALj/HaHPcKD+BQAWoVMjwAQFIIAPsP4AABahGIFTJ841UyXENVMmxTWUuBih +QMMBwALB17oMFAYwyXMA3boNIAAQFAcwz3CgALQPvKDPcaAAyDsugVINIAB92D4PAAAuCWAAqXAI +2ADZ2ghgAJm5z3CAADCNAJCO4MwgooLKIIEP4ADEMcohIQAEDmEAzyGhBQbx4HjhwOHB4cLPcaAA +yB8WEQCGz3KAAJiYAKISEQCGAaITEQCGAqIUEQCGA6IVEQCGBKIkEQCGBqLPcJ8AuP9WoIog/w8S +GRiAExkYgBQZGIAVGRiAJBkYgMHCwcHBwCAgQIcMyM9yoADIHw4aGIANyA8aGIAOyBAaGIAPEgE2 +AcgkeBEaGIAQyC0aGIDgfuHE/BzIvvwcSL7hwOHB4cLhw/wcCLH8HEix/ByIsfwcyLH8HAiy/BxI +svwciLL8HMiy/BwIv2okgBDhxGokwBDhxPHAz3CgANAbFIDPcYAAaAQEIICPz1EE4QChCvIvKQEA +z3CAAOhA8CBAAEB42v/RwMHEayTAEMHEaySAEMHEn3QEFAs0BBQKNAQUCTQEFAg0BBQHNAQUBjQE +FAU0BBQENMHDwcLBwcHAwcRFLH4QCiZAfsHEaySAFMHEICBAhwzIh7gMGhgwDcibuA0aGDAOyA4a +GDAPyIe4DxoYMBDIEBoYMOB+4HjxwAzIlbgMGhgwDcibuA0aGDAPyIq4jbiQuA8aGDDPcIAAOEIY +iIHgC/QPyM9xAABUGKy4DxoYMOoPYAAP2GfYXgsgAIohxwnRwOB+8cDPcIAAcMgAgIYg/oEO9A/I +BSCADwAAANQPGhgwAtgyCyAAiiHHC57/iiBVBSYLIACKIQcO5PHPcQMAQA3PcKAAqCAtoM9xgACo +BECBAWoAoc9woAA4LgWABCCAD8AAAADXcMAAAAAK8kjYz3GfALj/GqFboWnYGLgZoc9wgABoCCWA +I4EggcdxAACIE10EQAngeM9wgABoCO0DQAngePHAbgxAAYDgz3eAAGgEiHUF8oHgBfQB2ALwANgL +r4DhBfKB4QX0AdgC8ADYCq+A4gXygeIF9AHYAvAA2AyvANjPdqAAyB8YHhiQC4+A4IohEAAP8giP +gOAL8s9wAwBADUUeGBAwpgLYGB4YkALwMaYKj4DgGfIJj4DgF/LPcAIAzjggHhiQz3CAACgAIR4Y +kM9wgABkBCIeGJAYFgCWRSAAAxgeGJAMj4DgCPIYFgCWhSABBBgeGJCB4wf0GBYAloi4GB4YkM9w +gAAwjQCQjuDMIKKCBvQYFgCWgLgYHhiQgOUZ8gDYlLjPdYAAnAQApXHYBrhaDSAA/Nkghc9wAABM +HE4NIACfuRgWAJaFuBgeGJDFA0AB4HjxwHvYlgkgAPDZz3afALj/HYYKIcAnQN+fv/2mz3Gg/gQA +NqZTJsA0BSCAD7D+AAAWps91oADIHxkVEpbPcAAARBwqC2AACiDAL3pwGRUAllEgAIIh8j2G/abP +coAAAAAEggHg07gEogUggA/Q/gAAFqZYHoAXIRUAliIVAJbPcoAA0AQAghamAYIWpgjYGR0YkDam +PaYH2NIKYAAKuFMgQQcH2JIMIAAKuM9woADUCxiAQiAACEggAADPd4AAfD/PcYAAnAQggeAfABAL +IcCEyiUiE8ogYgAy9EwigKAP9FEjgKUJ8oDgB/RBK00lwL0c5QHYJPAE3SHwjCIEoBzyTCIAohTy +CvZMIkCgDvJMIgChFPQT3RPwTCIApAryjCIBoAz0Ft0L8A3dCfAU3QfwFd0F8BfdA/AP3QDYgeAG +9FgewBSuCgACcYepcApxKnIKJIAEZQHv/wolwAQlBc//8cB2CAAAddgyCCAAiiHLAloJgABKCIAC +F/82DUAACiHAD+tyBtiKIwsHSiQAAC0B7/8KJQAB4HjxwL4JQAHPc4AAFAlDgwDfz3WgACwgsIXS +atR+fmalpgSmAeKMIhCAJqZDo4X3AoPjowHgAqPxAUAB4HgA2M9xoADIHxihGaEB2A6h4H7gePHA +RglAAQh3unHacvpzCiIAIQojQCEKIYAhz3AAAMgbYglgAAogwCEbcM9wAADMG1IJQAA7cM9wAAAE +HEYJQADPdaAAyB+acAHYE6URFQCWBdjPdoAAgAjhpgCmDsAgHgAUCaYVhRweQBQKphiFGB7AFAum +GYUUHoAUDKagFQAQEB7AFQ2mpBUAEAwegBUOpqgVABAIHkAVD6bPcAEA3QkQpuIIYAAo2BGm2ghg +AADYEqZTJ8B1E6YCyFQeABcWphIVAJZQHgAXF6YTFQCWz3KAAIAIGKYUFQCWUyQBIxmmFRUAlhC5 +GqYkFQCWSiRAeRumFhUAlhymz3CAAHw/EYAdps9wgACACHgYgArPcIAAgAh8GMAKz3CAAPwIBBgA +C4QaQAvPcKAAyBwIgIgaAADPcIAA5AQAgIwaAAAvIAcGCLgFeS8gRwYleJAaAAAA2KggQAPwIgMA +z3GfALj/dqHgeOB44HjgeAHgHQBAAeB4iiRBfQDZqCAABM9wgAAkOfAgQAAAgOB44HjgeOB44Hjg +eAHh4H7geOB+4HjgfuB44H7geOB+4HjgfuB44H7geOB+4HjgfuB44H7geOB+4HjgfuB44H8B2PHA +z3GAAHw/EaHgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjR +wOB+4HjhxeHGQCkNAiV9QC0DFIjipXsIdZD3UyV+kAbyAR1SEGG6+/FBKo4AwbpCJk6QBB3QEP31 +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 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable-8@FreeBSD.ORG Sat Jul 31 10:20:09 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8823E106566B; Sat, 31 Jul 2010 10:20: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 5C8B38FC17; Sat, 31 Jul 2010 10:20:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6VAK9Am048709; Sat, 31 Jul 2010 10:20:09 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6VAK9Pt048707; Sat, 31 Jul 2010 10:20:09 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201007311020.o6VAK9Pt048707@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 31 Jul 2010 10:20: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: r210674 - stable/8/sys/dev/iwn X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jul 2010 10:20:09 -0000 Author: bschmidt Date: Sat Jul 31 10:20:09 2010 New Revision: 210674 URL: http://svn.freebsd.org/changeset/base/210674 Log: MFC r210114: Handle RUN->ASSOC->RUN transition correctly, as in not trigger a firmware error. Convert if statements to a switch statement while I'm 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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/dev/iwn/if_iwn.c ============================================================================== --- stable/8/sys/dev/iwn/if_iwn.c Sat Jul 31 10:18:15 2010 (r210673) +++ stable/8/sys/dev/iwn/if_iwn.c Sat Jul 31 10:20:09 2010 (r210674) @@ -1940,27 +1940,44 @@ iwn_newstate(struct ieee80211vap *vap, e IWN_LOCK(sc); callout_stop(&sc->sc_timer_to); - if (nstate == IEEE80211_S_AUTH && vap->iv_state != IEEE80211_S_AUTH) { - /* !AUTH -> AUTH requires adapter config */ - /* Reset state to handle reassociations correctly. */ + switch (nstate) { + case IEEE80211_S_ASSOC: + if (vap->iv_state != IEEE80211_S_RUN) + break; + /* FALLTHROUGH */ + case IEEE80211_S_AUTH: + if (vap->iv_state == IEEE80211_S_AUTH) + break; + + /* + * !AUTH -> AUTH transition requires state reset to handle + * reassociations correctly. + */ sc->rxon.associd = 0; sc->rxon.filter &= ~htole32(IWN_FILTER_BSS); iwn_calib_reset(sc); error = iwn_auth(sc, vap); - } - if (nstate == IEEE80211_S_RUN && vap->iv_state != IEEE80211_S_RUN) { + break; + + case IEEE80211_S_RUN: + /* + * RUN -> RUN transition; Just restart the timers. + */ + if (vap->iv_state == IEEE80211_S_RUN) { + iwn_calib_reset(sc); + break; + } + /* * !RUN -> RUN requires setting the association id * which is done with a firmware cmd. We also defer * starting the timers until that work is done. */ error = iwn_run(sc, vap); - } - if (nstate == IEEE80211_S_RUN) { - /* - * RUN -> RUN transition; just restart the timers. - */ - iwn_calib_reset(sc); + break; + + default: + break; } IWN_UNLOCK(sc); IEEE80211_LOCK(ic); From owner-svn-src-stable-8@FreeBSD.ORG Sat Jul 31 10:24:10 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6AAD01065676; Sat, 31 Jul 2010 10:24:10 +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 593378FC15; Sat, 31 Jul 2010 10:24:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6VAOArA049660; Sat, 31 Jul 2010 10:24:10 GMT (envelope-from bschmidt@svn.freebsd.org) Received: (from bschmidt@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6VAOAhE049657; Sat, 31 Jul 2010 10:24:10 GMT (envelope-from bschmidt@svn.freebsd.org) Message-Id: <201007311024.o6VAOAhE049657@svn.freebsd.org> From: Bernhard Schmidt Date: Sat, 31 Jul 2010 10:24: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: r210675 - stable/8/share/man/man4 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jul 2010 10:24:10 -0000 Author: bschmidt Date: Sat Jul 31 10:24:10 2010 New Revision: 210675 URL: http://svn.freebsd.org/changeset/base/210675 Log: MFC r210289: Update manpage to reflect changes regarding the 6050's firmware. Modified: stable/8/share/man/man4/iwn.4 stable/8/share/man/man4/iwnfw.4 Directory Properties: stable/8/share/man/man4/ (props changed) Modified: stable/8/share/man/man4/iwn.4 ============================================================================== --- stable/8/share/man/man4/iwn.4 Sat Jul 31 10:20:09 2010 (r210674) +++ stable/8/share/man/man4/iwn.4 Sat Jul 31 10:24:10 2010 (r210675) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 8, 2010 +.Dd July 20, 2010 .Os .Dt IWN 4 .Sh NAME @@ -51,6 +51,7 @@ Choose one from: .Cd "device iwn5000fw" .Cd "device iwn5150fw" .Cd "device iwn6000fw" +.Cd "device iwn6050fw" .Ed .Pp Or you can use @@ -70,6 +71,7 @@ iwn1000fw_load="YES" iwn5000fw_load="YES" iwn5150fw_load="YES" iwn6000fw_load="YES" +iwn6050fw_load="YES" .Ed .Sh DESCRIPTION The Modified: stable/8/share/man/man4/iwnfw.4 ============================================================================== --- stable/8/share/man/man4/iwnfw.4 Sat Jul 31 10:20:09 2010 (r210674) +++ stable/8/share/man/man4/iwnfw.4 Sat Jul 31 10:24:10 2010 (r210675) @@ -22,7 +22,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 7, 2010 +.Dd July 20, 2010 .Dt IWNFW 4 .Os .Sh NAME @@ -45,6 +45,7 @@ of the following: .Cd "device iwn5000fw" .Cd "device iwn5150fw" .Cd "device iwn6000fw" +.Cd "device iwn6050fw" .Ed .Pp Alternatively, to load the driver as a @@ -56,6 +57,7 @@ iwn1000fw_load="YES" iwn5000fw_load="YES" iwn5150fw_load="YES" iwn6000fw_load="YES" +iwn6050fw_load="YES" .Ed .Sh DESCRIPTION This module provides access to firmware sets for the From owner-svn-src-stable-8@FreeBSD.ORG Sat Jul 31 15:36:55 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 155CE106567A; Sat, 31 Jul 2010 15:36:55 +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 04C328FC12; Sat, 31 Jul 2010 15:36:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o6VFasOi020454; Sat, 31 Jul 2010 15:36:54 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o6VFasIp020452; Sat, 31 Jul 2010 15:36:54 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201007311536.o6VFasIp020452@svn.freebsd.org> From: Rick Macklem Date: Sat, 31 Jul 2010 15:36: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: r210687 - stable/8/sys/fs/nfsserver X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Jul 2010 15:36:55 -0000 Author: rmacklem Date: Sat Jul 31 15:36:54 2010 New Revision: 210687 URL: http://svn.freebsd.org/changeset/base/210687 Log: MFC: r210030 Fix a bogus comment that mentions lru lists that don't exist. Modified: stable/8/sys/fs/nfsserver/nfs_nfsdstate.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) stable/8/sys/dev/xen/xenpci/ (props changed) Modified: stable/8/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- stable/8/sys/fs/nfsserver/nfs_nfsdstate.c Sat Jul 31 15:31:23 2010 (r210686) +++ stable/8/sys/fs/nfsserver/nfs_nfsdstate.c Sat Jul 31 15:36:54 2010 (r210687) @@ -45,7 +45,7 @@ NFSV4ROOTLOCKMUTEX; NFSSTATESPINLOCK; /* - * Hash and lru lists for nfs V4. + * Hash lists for nfs V4. * (Some would put them in the .h file, but I don't like declaring storage * in a .h) */