From owner-svn-src-stable@freebsd.org Sun Aug 16 00:35:49 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0F1BC9BAB6A; Sun, 16 Aug 2015 00:35:49 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D6C8FFF6; Sun, 16 Aug 2015 00:35:48 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7G0ZmRI050981; Sun, 16 Aug 2015 00:35:48 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7G0ZmbT050980; Sun, 16 Aug 2015 00:35:48 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508160035.t7G0ZmbT050980@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sun, 16 Aug 2015 00:35:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286817 - stable/10/sys/cam/ctl X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Aug 2015 00:35:49 -0000 Author: mav Date: Sun Aug 16 00:35:48 2015 New Revision: 286817 URL: https://svnweb.freebsd.org/changeset/base/286817 Log: MFC r286514: Remove verbose CTL messages. Reporting SCSI errors to console is often useless, pollutes logs and may affect performance. For debugging there is kern.cam.ctl.debug sysctl Modified: stable/10/sys/cam/ctl/ctl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/ctl/ctl.c ============================================================================== --- stable/10/sys/cam/ctl/ctl.c Sat Aug 15 22:55:32 2015 (r286816) +++ stable/10/sys/cam/ctl/ctl.c Sun Aug 16 00:35:48 2015 (r286817) @@ -1183,8 +1183,6 @@ ctl_init(void) ctl_pool_free(other_pool); return (error); } - if (bootverbose) - printf("ctl: CAM Target Layer loaded\n"); /* * Initialize the ioctl front end. @@ -1267,9 +1265,6 @@ ctl_shutdown(void) free(control_softc, M_DEVBUF); control_softc = NULL; - - if (bootverbose) - printf("ctl: CAM Target Layer unloaded\n"); } static int @@ -13635,7 +13630,7 @@ ctl_process_done(union ctl_io *io) case CTL_IO_SCSI: break; case CTL_IO_TASK: - if (bootverbose || (ctl_debug & CTL_DEBUG_INFO)) + if (ctl_debug & CTL_DEBUG_INFO) ctl_io_error_print(io, NULL); if (io->io_hdr.flags & CTL_FLAG_FROM_OTHER_SC) ctl_free_io(io); @@ -13742,27 +13737,10 @@ bailout: /* * If enabled, print command error status. - * We don't print UAs unless debugging was enabled explicitly. */ - do { - if ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_SUCCESS) - break; - if (!bootverbose && (ctl_debug & CTL_DEBUG_INFO) == 0) - break; - if ((ctl_debug & CTL_DEBUG_INFO) == 0 && - ((io->io_hdr.status & CTL_STATUS_MASK) == CTL_SCSI_ERROR) && - (io->scsiio.scsi_status == SCSI_STATUS_CHECK_COND)) { - int error_code, sense_key, asc, ascq; - - scsi_extract_sense_len(&io->scsiio.sense_data, - io->scsiio.sense_len, &error_code, &sense_key, - &asc, &ascq, /*show_errors*/ 0); - if (sense_key == SSD_KEY_UNIT_ATTENTION) - break; - } - + if ((io->io_hdr.status & CTL_STATUS_MASK) != CTL_SUCCESS && + (ctl_debug & CTL_DEBUG_INFO) != 0) ctl_io_error_print(io, NULL); - } while (0); /* * Tell the FETD or the other shelf controller we're done with this From owner-svn-src-stable@freebsd.org Sun Aug 16 00:36:49 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5B0699BABAD; Sun, 16 Aug 2015 00:36:49 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4B32D113B; Sun, 16 Aug 2015 00:36:49 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7G0aniA051099; Sun, 16 Aug 2015 00:36:49 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7G0anxo051098; Sun, 16 Aug 2015 00:36:49 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508160036.t7G0anxo051098@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sun, 16 Aug 2015 00:36:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286818 - stable/10/share/man/man4 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Aug 2015 00:36:49 -0000 Author: mav Date: Sun Aug 16 00:36:48 2015 New Revision: 286818 URL: https://svnweb.freebsd.org/changeset/base/286818 Log: MFC r286516: Document kern.cam.ctl.debug sysctl. Modified: stable/10/share/man/man4/ctl.4 Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man4/ctl.4 ============================================================================== --- stable/10/share/man/man4/ctl.4 Sun Aug 16 00:35:48 2015 (r286817) +++ stable/10/share/man/man4/ctl.4 Sun Aug 16 00:36:48 2015 (r286818) @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" .\" $FreeBSD$ -.Dd July 11, 2015 +.Dd August 9, 2015 .Dt CTL 4 .Os .Sh NAME @@ -91,6 +91,17 @@ variables and .Xr loader 8 tunables: .Bl -tag -width indent +.It Va kern.cam.ctl.debug +Bit mask of enabled CTL log levels: +.Bl -tag -offset indent -compact +.It 1 +log commands with errors; +.It 2 +log all commands; +.It 4 +log received data for commands except READ/WRITE. +.El +Defaults to 0. .It Va kern.cam.ctl.iscsi.debug Verbosity level for log messages from the kernel part of iSCSI target. Set to 0 to disable logging or 1 to warn about potential problems. From owner-svn-src-stable@freebsd.org Sun Aug 16 00:37:48 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3E4229BABEF; Sun, 16 Aug 2015 00:37:48 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2EE8B127B; Sun, 16 Aug 2015 00:37:48 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7G0bm9J051215; Sun, 16 Aug 2015 00:37:48 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7G0bmKi051214; Sun, 16 Aug 2015 00:37:48 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508160037.t7G0bmKi051214@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sun, 16 Aug 2015 00:37:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286819 - stable/10/lib/libgeom X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Aug 2015 00:37:48 -0000 Author: mav Date: Sun Aug 16 00:37:47 2015 New Revision: 286819 URL: https://svnweb.freebsd.org/changeset/base/286819 Log: MFC r286719: Revert part of r280687, reporting "1" (true) for empty value. For example, it made gpart partitions without label report "1" as label. Modified: stable/10/lib/libgeom/geom_xml2tree.c Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libgeom/geom_xml2tree.c ============================================================================== --- stable/10/lib/libgeom/geom_xml2tree.c Sun Aug 16 00:36:48 2015 (r286818) +++ stable/10/lib/libgeom/geom_xml2tree.c Sun Aug 16 00:37:47 2015 (r286819) @@ -286,7 +286,7 @@ EndElement(void *userData, const char *n "element", name); return; } - gc->lg_val = p ? p : strdup("1"); + gc->lg_val = p; LIST_INSERT_HEAD(c, gc, lg_config); return; } From owner-svn-src-stable@freebsd.org Sun Aug 16 00:39:45 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 36D1C9BAC5A; Sun, 16 Aug 2015 00:39:45 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 275DC13C7; Sun, 16 Aug 2015 00:39:45 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7G0djl8051388; Sun, 16 Aug 2015 00:39:45 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7G0dj4U051387; Sun, 16 Aug 2015 00:39:45 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508160039.t7G0dj4U051387@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sun, 16 Aug 2015 00:39:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r286820 - stable/9/lib/libgeom X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Aug 2015 00:39:45 -0000 Author: mav Date: Sun Aug 16 00:39:44 2015 New Revision: 286820 URL: https://svnweb.freebsd.org/changeset/base/286820 Log: MFC r286719: Revert part of r280687, reporting "1" (true) for empty value. For example, it made gpart partitions without label report "1" as label. Modified: stable/9/lib/libgeom/geom_xml2tree.c Directory Properties: stable/9/ (props changed) stable/9/lib/ (props changed) stable/9/lib/libgeom/ (props changed) Modified: stable/9/lib/libgeom/geom_xml2tree.c ============================================================================== --- stable/9/lib/libgeom/geom_xml2tree.c Sun Aug 16 00:37:47 2015 (r286819) +++ stable/9/lib/libgeom/geom_xml2tree.c Sun Aug 16 00:39:44 2015 (r286820) @@ -286,7 +286,7 @@ EndElement(void *userData, const char *n "element", name); return; } - gc->lg_val = p ? p : strdup("1"); + gc->lg_val = p; LIST_INSERT_HEAD(c, gc, lg_config); return; } From owner-svn-src-stable@freebsd.org Sun Aug 16 12:09:56 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 65D279B9067; Sun, 16 Aug 2015 12:09:56 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 55D6217A8; Sun, 16 Aug 2015 12:09:56 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7GC9uJu041495; Sun, 16 Aug 2015 12:09:56 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7GC9uAh041494; Sun, 16 Aug 2015 12:09:56 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201508161209.t7GC9uAh041494@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Sun, 16 Aug 2015 12:09:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286824 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Aug 2015 12:09:56 -0000 Author: gjb Date: Sun Aug 16 12:09:55 2015 New Revision: 286824 URL: https://svnweb.freebsd.org/changeset/base/286824 Log: Document an error in the release notes regarding revision r282199. Submitted by: amdmi3 Sponsored by: The FreeBSD Foundation Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sun Aug 16 10:10:58 2015 (r286823) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Sun Aug 16 12:09:55 2015 (r286824) @@ -268,6 +268,17 @@ boot virtual machine to successfully boot, allowing access via vagrant ssh. + + + [2015-08-16] An error was discovered in the release + notes for &os; &release.prev; regarding the + drm device driver. The entry for r282199 + states the driver was updated to match the version &linux; + 3.8.13 version, however the entry should have noted the + change affects device-independent code, and does not bring + the drm driver fully in line with the + stated &linux; version. + From owner-svn-src-stable@freebsd.org Mon Aug 17 10:03:25 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5B2869BB1AB; Mon, 17 Aug 2015 10:03:25 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4115116D7; Mon, 17 Aug 2015 10:03:25 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7HA3PGU013156; Mon, 17 Aug 2015 10:03:25 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7HA3OlU013151; Mon, 17 Aug 2015 10:03:24 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201508171003.t7HA3OlU013151@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 17 Aug 2015 10:03:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286841 - in stable/10/sys/ofed: drivers/net/mlx4 include/linux/mlx4 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Aug 2015 10:03:25 -0000 Author: glebius Date: Mon Aug 17 10:03:23 2015 New Revision: 286841 URL: https://svnweb.freebsd.org/changeset/base/286841 Log: Merge r283612: Add SIOCGI2C ioctl support to the driver. Would work only on ConnectX-3 with fresh firmware. The low level code is based on code provided by Mellanox. Thanks to Mellanox and their distributor Must (http://mustcompany.ru) for providing hardware. In collaboration with: Andre Melkoumian Reviewed by: hselasky Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c stable/10/sys/ofed/drivers/net/mlx4/port.c stable/10/sys/ofed/include/linux/mlx4/device.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c ============================================================================== --- stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Mon Aug 17 09:18:54 2015 (r286840) +++ stable/10/sys/ofed/drivers/net/mlx4/en_netdev.c Mon Aug 17 10:03:23 2015 (r286841) @@ -1967,6 +1967,29 @@ static int mlx4_en_ioctl(struct ifnet *d mutex_unlock(&mdev->state_lock); VLAN_CAPABILITIES(dev); break; + case SIOCGI2C: { + struct ifi2creq i2c; + + error = copyin(ifr->ifr_data, &i2c, sizeof(i2c)); + if (error) + break; + if (i2c.len > sizeof(i2c.data)) { + error = EINVAL; + break; + } + /* + * Note that we ignore i2c.addr here. The driver hardcodes + * the address to 0x50, while standard expects it to be 0xA0. + */ + error = mlx4_get_module_info(mdev->dev, priv->port, + i2c.offset, i2c.len, i2c.data); + if (error < 0) { + error = -error; + break; + } + error = copyout(&i2c, ifr->ifr_data, sizeof(i2c)); + break; + } default: error = ether_ioctl(dev, command, data); break; Modified: stable/10/sys/ofed/drivers/net/mlx4/port.c ============================================================================== --- stable/10/sys/ofed/drivers/net/mlx4/port.c Mon Aug 17 09:18:54 2015 (r286840) +++ stable/10/sys/ofed/drivers/net/mlx4/port.c Mon Aug 17 10:03:23 2015 (r286841) @@ -1058,3 +1058,160 @@ int mlx4_get_roce_gid_from_slave(struct } EXPORT_SYMBOL(mlx4_get_roce_gid_from_slave); +/* Cable Module Info */ +#define MODULE_INFO_MAX_READ 48 + +#define I2C_ADDR_LOW 0x50 +#define I2C_ADDR_HIGH 0x51 +#define I2C_PAGE_SIZE 256 + +/* Module Info Data */ +struct mlx4_cable_info { + u8 i2c_addr; + u8 page_num; + __be16 dev_mem_address; + __be16 reserved1; + __be16 size; + __be32 reserved2[2]; + u8 data[MODULE_INFO_MAX_READ]; +}; + +enum cable_info_err { + CABLE_INF_INV_PORT = 0x1, + CABLE_INF_OP_NOSUP = 0x2, + CABLE_INF_NOT_CONN = 0x3, + CABLE_INF_NO_EEPRM = 0x4, + CABLE_INF_PAGE_ERR = 0x5, + CABLE_INF_INV_ADDR = 0x6, + CABLE_INF_I2C_ADDR = 0x7, + CABLE_INF_QSFP_VIO = 0x8, + CABLE_INF_I2C_BUSY = 0x9, +}; + +#define MAD_STATUS_2_CABLE_ERR(mad_status) ((mad_status >> 8) & 0xFF) + +#ifdef DEBUG +static inline const char *cable_info_mad_err_str(u16 mad_status) +{ + u8 err = MAD_STATUS_2_CABLE_ERR(mad_status); + + switch (err) { + case CABLE_INF_INV_PORT: + return "invalid port selected"; + case CABLE_INF_OP_NOSUP: + return "operation not supported for this port (the port is of type CX4 or internal)"; + case CABLE_INF_NOT_CONN: + return "cable is not connected"; + case CABLE_INF_NO_EEPRM: + return "the connected cable has no EPROM (passive copper cable)"; + case CABLE_INF_PAGE_ERR: + return "page number is greater than 15"; + case CABLE_INF_INV_ADDR: + return "invalid device_address or size (that is, size equals 0 or address+size is greater than 256)"; + case CABLE_INF_I2C_ADDR: + return "invalid I2C slave address"; + case CABLE_INF_QSFP_VIO: + return "at least one cable violates the QSFP specification and ignores the modsel signal"; + case CABLE_INF_I2C_BUSY: + return "I2C bus is constantly busy"; + } + return "Unknown Error"; +} +#endif /* DEBUG */ + +/** + * mlx4_get_module_info - Read cable module eeprom data + * @dev: mlx4_dev. + * @port: port number. + * @offset: byte offset in eeprom to start reading data from. + * @size: num of bytes to read. + * @data: output buffer to put the requested data into. + * + * Reads cable module eeprom data, puts the outcome data into + * data pointer paramer. + * Returns num of read bytes on success or a negative error + * code. + */ +int mlx4_get_module_info(struct mlx4_dev *dev, u8 port, u16 offset, + u16 size, u8 *data) +{ + struct mlx4_cmd_mailbox *inbox, *outbox; + struct mlx4_mad_ifc *inmad, *outmad; + struct mlx4_cable_info *cable_info; + u16 i2c_addr; + int ret; + + if (size > MODULE_INFO_MAX_READ) + size = MODULE_INFO_MAX_READ; + + inbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(inbox)) + return PTR_ERR(inbox); + + outbox = mlx4_alloc_cmd_mailbox(dev); + if (IS_ERR(outbox)) { + mlx4_free_cmd_mailbox(dev, inbox); + return PTR_ERR(outbox); + } + + inmad = (struct mlx4_mad_ifc *)(inbox->buf); + outmad = (struct mlx4_mad_ifc *)(outbox->buf); + + inmad->method = 0x1; /* Get */ + inmad->class_version = 0x1; + inmad->mgmt_class = 0x1; + inmad->base_version = 0x1; + inmad->attr_id = cpu_to_be16(0xFF60); /* Module Info */ + + if (offset < I2C_PAGE_SIZE && offset + size > I2C_PAGE_SIZE) + /* Cross pages reads are not allowed + * read until offset 256 in low page + */ + size -= offset + size - I2C_PAGE_SIZE; + + i2c_addr = I2C_ADDR_LOW; + if (offset >= I2C_PAGE_SIZE) { + /* Reset offset to high page */ + i2c_addr = I2C_ADDR_HIGH; + offset -= I2C_PAGE_SIZE; + } + + cable_info = (struct mlx4_cable_info *)inmad->data; + cable_info->dev_mem_address = cpu_to_be16(offset); + cable_info->page_num = 0; + cable_info->i2c_addr = i2c_addr; + cable_info->size = cpu_to_be16(size); + + ret = mlx4_cmd_box(dev, inbox->dma, outbox->dma, port, 3, + MLX4_CMD_MAD_IFC, MLX4_CMD_TIME_CLASS_C, MLX4_CMD_NATIVE); + if (ret) + goto out; + + if (be16_to_cpu(outmad->status)) { + /* Mad returned with bad status */ + ret = be16_to_cpu(outmad->status); +#ifdef DEBUG + mlx4_warn(dev, "MLX4_CMD_MAD_IFC Get Module info attr(%x) " + "port(%d) i2c_addr(%x) offset(%d) size(%d): Response " + "Mad Status(%x) - %s\n", 0xFF60, port, i2c_addr, offset, + size, ret, cable_info_mad_err_str(ret)); +#endif + if (i2c_addr == I2C_ADDR_HIGH && + MAD_STATUS_2_CABLE_ERR(ret) == CABLE_INF_I2C_ADDR) + /* Some SFP cables do not support i2c slave + * address 0x51 (high page), abort silently. + */ + ret = 0; + else + ret = -ret; + goto out; + } + cable_info = (struct mlx4_cable_info *)outmad->data; + memcpy(data, cable_info->data, size); + ret = size; +out: + mlx4_free_cmd_mailbox(dev, inbox); + mlx4_free_cmd_mailbox(dev, outbox); + return ret; +} +EXPORT_SYMBOL(mlx4_get_module_info); Modified: stable/10/sys/ofed/include/linux/mlx4/device.h ============================================================================== --- stable/10/sys/ofed/include/linux/mlx4/device.h Mon Aug 17 09:18:54 2015 (r286840) +++ stable/10/sys/ofed/include/linux/mlx4/device.h Mon Aug 17 10:03:23 2015 (r286841) @@ -892,6 +892,26 @@ struct mlx4_init_port_param { u64 si_guid; }; +#define MAD_IFC_DATA_SZ 192 +/* MAD IFC Mailbox */ +struct mlx4_mad_ifc { + u8 base_version; + u8 mgmt_class; + u8 class_version; + u8 method; + __be16 status; + __be16 class_specific; + __be64 tid; + __be16 attr_id; + __be16 resv; + __be32 attr_mod; + __be64 mkey; + __be16 dr_slid; + __be16 dr_dlid; + u8 reserved[28]; + u8 data[MAD_IFC_DATA_SZ]; +} __packed; + #define mlx4_foreach_port(port, dev, type) \ for ((port) = 1; (port) <= (dev)->caps.num_ports; (port)++) \ if ((type) == (dev)->caps.port_mask[(port)]) @@ -1294,4 +1314,7 @@ int mlx4_read_clock(struct mlx4_dev *dev int mlx4_get_internal_clock_params(struct mlx4_dev *dev, struct mlx4_clock_params *params); +int mlx4_get_module_info(struct mlx4_dev *dev, u8 port, + u16 offset, u16 size, u8 *data); + #endif /* MLX4_DEVICE_H */ From owner-svn-src-stable@freebsd.org Mon Aug 17 12:51:47 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DD53F9BA144; Mon, 17 Aug 2015 12:51:47 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BD52E1818; Mon, 17 Aug 2015 12:51:47 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7HCplBC090500; Mon, 17 Aug 2015 12:51:47 GMT (envelope-from ed@FreeBSD.org) Received: (from ed@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7HCpl6H090496; Mon, 17 Aug 2015 12:51:47 GMT (envelope-from ed@FreeBSD.org) Message-Id: <201508171251.t7HCpl6H090496@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ed set sender to ed@FreeBSD.org using -f From: Ed Schouten Date: Mon, 17 Aug 2015 12:51:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286843 - in stable/10/sys: cddl/compat/opensolaris/sys kern sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Aug 2015 12:51:48 -0000 Author: ed Date: Mon Aug 17 12:51:46 2015 New Revision: 286843 URL: https://svnweb.freebsd.org/changeset/base/286843 Log: MFC r285715: Add an API for easily creating userspace threads in kernelspace. This change refactors the existing create_thread() function to be more generic. It replaces almost all of its arguments by a callback that can be used to extract the thread ID and copy it out to the right place, but also to perform additional initialization steps, such as setting the trapframe. This also makes the difference between thr_new() and thr_create() more clear in my opinion. This function is going to be used by the CloudABI compatibility layer. It looks like the OpenSolaris compatibility framework already provides a function called thread_create(). Rename this function to do_thread_create() and use a macro to deal with the namespacing conflict. A similar approach is already used for thread_exit(). Modified: stable/10/sys/cddl/compat/opensolaris/sys/proc.h stable/10/sys/kern/kern_thr.c stable/10/sys/sys/proc.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/compat/opensolaris/sys/proc.h ============================================================================== --- stable/10/sys/cddl/compat/opensolaris/sys/proc.h Mon Aug 17 10:48:55 2015 (r286842) +++ stable/10/sys/cddl/compat/opensolaris/sys/proc.h Mon Aug 17 12:51:46 2015 (r286843) @@ -63,7 +63,7 @@ typedef struct proc proc_t; extern struct proc *zfsproc; static __inline kthread_t * -thread_create(caddr_t stk, size_t stksize, void (*proc)(void *), void *arg, +do_thread_create(caddr_t stk, size_t stksize, void (*proc)(void *), void *arg, size_t len, proc_t *pp, int state, pri_t pri) { kthread_t *td = NULL; @@ -88,6 +88,8 @@ thread_create(caddr_t stk, size_t stksiz return (td); } +#define thread_create(stk, stksize, proc, arg, len, pp, state, pri) \ + do_thread_create(stk, stksize, proc, arg, len, pp, state, pri) #define thread_exit() kthread_exit() #endif /* _KERNEL */ Modified: stable/10/sys/kern/kern_thr.c ============================================================================== --- stable/10/sys/kern/kern_thr.c Mon Aug 17 10:48:55 2015 (r286842) +++ stable/10/sys/kern/kern_thr.c Mon Aug 17 12:51:46 2015 (r286843) @@ -87,29 +87,39 @@ suword_lwpid(void *addr, lwpid_t lwpid) #define suword_lwpid suword #endif -static int create_thread(struct thread *td, mcontext_t *ctx, - void (*start_func)(void *), void *arg, - char *stack_base, size_t stack_size, - char *tls_base, - long *child_tid, long *parent_tid, - int flags, struct rtprio *rtp); - /* * System call interface. */ + +struct thr_create_initthr_args { + ucontext_t ctx; + long *tid; +}; + +static int +thr_create_initthr(struct thread *td, void *thunk) +{ + struct thr_create_initthr_args *args; + + /* Copy out the child tid. */ + args = thunk; + if (args->tid != NULL && suword_lwpid(args->tid, td->td_tid)) + return (EFAULT); + + return (set_mcontext(td, &args->ctx.uc_mcontext)); +} + int sys_thr_create(struct thread *td, struct thr_create_args *uap) /* ucontext_t *ctx, long *id, int flags */ { - ucontext_t ctx; + struct thr_create_initthr_args args; int error; - if ((error = copyin(uap->ctx, &ctx, sizeof(ctx)))) + if ((error = copyin(uap->ctx, &args.ctx, sizeof(args.ctx)))) return (error); - - error = create_thread(td, &ctx.uc_mcontext, NULL, NULL, - NULL, 0, NULL, uap->id, NULL, uap->flags, NULL); - return (error); + args.tid = uap->id; + return (thread_create(td, NULL, thr_create_initthr, &args)); } int @@ -127,6 +137,35 @@ sys_thr_new(struct thread *td, struct th return (kern_thr_new(td, ¶m)); } +static int +thr_new_initthr(struct thread *td, void *thunk) +{ + stack_t stack; + struct thr_param *param; + + /* + * Here we copy out tid to two places, one for child and one + * for parent, because pthread can create a detached thread, + * if parent wants to safely access child tid, it has to provide + * its storage, because child thread may exit quickly and + * memory is freed before parent thread can access it. + */ + param = thunk; + if ((param->child_tid != NULL && + suword_lwpid(param->child_tid, td->td_tid)) || + (param->parent_tid != NULL && + suword_lwpid(param->parent_tid, td->td_tid))) + return (EFAULT); + + /* Set up our machine context. */ + stack.ss_sp = param->stack_base; + stack.ss_size = param->stack_size; + /* Set upcall address to user thread entry function. */ + cpu_set_upcall_kse(td, param->start_func, param->arg, &stack); + /* Setup user TLS address and TLS pointer register. */ + return (cpu_set_user_tls(td, param->tls_base)); +} + int kern_thr_new(struct thread *td, struct thr_param *param) { @@ -140,22 +179,13 @@ kern_thr_new(struct thread *td, struct t return (error); rtpp = &rtp; } - error = create_thread(td, NULL, param->start_func, param->arg, - param->stack_base, param->stack_size, param->tls_base, - param->child_tid, param->parent_tid, param->flags, - rtpp); - return (error); + return (thread_create(td, rtpp, thr_new_initthr, param)); } -static int -create_thread(struct thread *td, mcontext_t *ctx, - void (*start_func)(void *), void *arg, - char *stack_base, size_t stack_size, - char *tls_base, - long *child_tid, long *parent_tid, - int flags, struct rtprio *rtp) +int +thread_create(struct thread *td, struct rtprio *rtp, + int (*initialize_thread)(struct thread *, void *), void *thunk) { - stack_t stack; struct thread *newtd; struct proc *p; int error; @@ -203,24 +233,6 @@ create_thread(struct thread *td, mcontex cpu_set_upcall(newtd, td); - /* - * Try the copyout as soon as we allocate the td so we don't - * have to tear things down in a failure case below. - * Here we copy out tid to two places, one for child and one - * for parent, because pthread can create a detached thread, - * if parent wants to safely access child tid, it has to provide - * its storage, because child thread may exit quickly and - * memory is freed before parent thread can access it. - */ - if ((child_tid != NULL && - suword_lwpid(child_tid, newtd->td_tid)) || - (parent_tid != NULL && - suword_lwpid(parent_tid, newtd->td_tid))) { - thread_free(newtd); - error = EFAULT; - goto fail; - } - bzero(&newtd->td_startzero, __rangeof(struct thread, td_startzero, td_endzero)); newtd->td_su = NULL; @@ -229,26 +241,11 @@ create_thread(struct thread *td, mcontex newtd->td_proc = td->td_proc; newtd->td_ucred = crhold(td->td_ucred); - if (ctx != NULL) { /* old way to set user context */ - error = set_mcontext(newtd, ctx); - if (error != 0) { - thread_free(newtd); - crfree(td->td_ucred); - goto fail; - } - } else { - /* Set up our machine context. */ - stack.ss_sp = stack_base; - stack.ss_size = stack_size; - /* Set upcall address to user thread entry function. */ - cpu_set_upcall_kse(newtd, start_func, arg, &stack); - /* Setup user TLS address and TLS pointer register. */ - error = cpu_set_user_tls(newtd, tls_base); - if (error != 0) { - thread_free(newtd); - crfree(td->td_ucred); - goto fail; - } + error = initialize_thread(newtd, thunk); + if (error != 0) { + thread_free(newtd); + crfree(td->td_ucred); + goto fail; } PROC_LOCK(td->td_proc); Modified: stable/10/sys/sys/proc.h ============================================================================== --- stable/10/sys/sys/proc.h Mon Aug 17 10:48:55 2015 (r286842) +++ stable/10/sys/sys/proc.h Mon Aug 17 12:51:46 2015 (r286843) @@ -951,6 +951,8 @@ void cpu_thread_swapin(struct thread *); void cpu_thread_swapout(struct thread *); struct thread *thread_alloc(int pages); int thread_alloc_stack(struct thread *, int pages); +int thread_create(struct thread *td, struct rtprio *rtp, + int (*initialize_thread)(struct thread *, void *), void *thunk); void thread_exit(void) __dead2; void thread_free(struct thread *td); void thread_link(struct thread *td, struct proc *p); From owner-svn-src-stable@freebsd.org Mon Aug 17 18:21:19 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A61C29BB430; Mon, 17 Aug 2015 18:21:19 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 889921C8F; Mon, 17 Aug 2015 18:21:19 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7HILJ7t068162; Mon, 17 Aug 2015 18:21:19 GMT (envelope-from loos@FreeBSD.org) Received: (from loos@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7HILJQI068161; Mon, 17 Aug 2015 18:21:19 GMT (envelope-from loos@FreeBSD.org) Message-Id: <201508171821.t7HILJQI068161@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: loos set sender to loos@FreeBSD.org using -f From: Luiz Otavio O Souza Date: Mon, 17 Aug 2015 18:21:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286850 - stable/10/sys/net X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Aug 2015 18:21:19 -0000 Author: loos Date: Mon Aug 17 18:21:18 2015 New Revision: 286850 URL: https://svnweb.freebsd.org/changeset/base/286850 Log: MFC r286139: Do not allocate the buffers at opening of the descriptor, because once the buffer is allocated we are committed to a particular buffer method (BPF_BUFMODE_BUFFER in this case). If we are using zero-copy buffers, the userland program must register its buffers before set the interface. If we are using kernel memory buffers, we can allocate the buffer at the time that the interface is being set. This fix allows the usage of BIOCSETBUFMODE after r235746. Update the comments to reflect the recent changes. Sponsored by: Rubicon Communications (Netgate) Modified: stable/10/sys/net/bpf.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/net/bpf.c ============================================================================== --- stable/10/sys/net/bpf.c Mon Aug 17 17:57:01 2015 (r286849) +++ stable/10/sys/net/bpf.c Mon Aug 17 18:21:18 2015 (r286850) @@ -787,7 +787,7 @@ static int bpfopen(struct cdev *dev, int flags, int fmt, struct thread *td) { struct bpf_d *d; - int error, size; + int error; d = malloc(sizeof(*d), M_BPF, M_WAITOK | M_ZERO); error = devfs_set_cdevpriv(d, bpf_dtor); @@ -817,10 +817,6 @@ bpfopen(struct cdev *dev, int flags, int callout_init_mtx(&d->bd_callout, &d->bd_lock, 0); knlist_init_mtx(&d->bd_sel.si_note, &d->bd_lock); - /* Allocate default buffers */ - size = d->bd_bufsize; - bpf_buffer_ioctl_sblen(d, &size); - return (0); } @@ -1411,10 +1407,33 @@ bpfioctl(struct cdev *dev, u_long cmd, c * Set interface. */ case BIOCSETIF: - BPF_LOCK(); - error = bpf_setif(d, (struct ifreq *)addr); - BPF_UNLOCK(); - break; + { + int alloc_buf, size; + + /* + * Behavior here depends on the buffering model. If + * we're using kernel memory buffers, then we can + * allocate them here. If we're using zero-copy, + * then the user process must have registered buffers + * by the time we get here. + */ + alloc_buf = 0; + BPFD_LOCK(d); + if (d->bd_bufmode == BPF_BUFMODE_BUFFER && + d->bd_sbuf == NULL) + alloc_buf = 1; + BPFD_UNLOCK(d); + if (alloc_buf) { + size = d->bd_bufsize; + error = bpf_buffer_ioctl_sblen(d, &size); + if (error != 0) + break; + } + BPF_LOCK(); + error = bpf_setif(d, (struct ifreq *)addr); + BPF_UNLOCK(); + break; + } /* * Set read timeout. @@ -1861,10 +1880,8 @@ bpf_setif(struct bpf_d *d, struct ifreq BPFIF_RUNLOCK(bp); /* - * Behavior here depends on the buffering model. If we're using - * kernel memory buffers, then we can allocate them here. If we're - * using zero-copy, then the user process must have registered - * buffers by the time we get here. If not, return an error. + * At this point, we expect the buffer is already allocated. If not, + * return an error. */ switch (d->bd_bufmode) { case BPF_BUFMODE_BUFFER: From owner-svn-src-stable@freebsd.org Mon Aug 17 18:33:18 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4F2309BB66C; Mon, 17 Aug 2015 18:33:18 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2C3EE15FB; Mon, 17 Aug 2015 18:33:18 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7HIXIAU072512; Mon, 17 Aug 2015 18:33:18 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7HIXGWQ072507; Mon, 17 Aug 2015 18:33:16 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201508171833.t7HIXGWQ072507@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Mon, 17 Aug 2015 18:33:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286852 - in stable/10/sys: amd64/amd64 amd64/include i386/i386 i386/include x86/x86 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Aug 2015 18:33:18 -0000 Author: kib Date: Mon Aug 17 18:33:16 2015 New Revision: 286852 URL: https://svnweb.freebsd.org/changeset/base/286852 Log: MFC r286228: Clear the IA32_MISC_ENABLE MSR bit on APs. Modified: stable/10/sys/amd64/amd64/mp_machdep.c stable/10/sys/amd64/include/md_var.h stable/10/sys/i386/i386/mp_machdep.c stable/10/sys/i386/include/md_var.h stable/10/sys/x86/x86/identcpu.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/amd64/amd64/mp_machdep.c ============================================================================== --- stable/10/sys/amd64/amd64/mp_machdep.c Mon Aug 17 18:28:40 2015 (r286851) +++ stable/10/sys/amd64/amd64/mp_machdep.c Mon Aug 17 18:33:16 2015 (r286852) @@ -682,6 +682,7 @@ init_secondary(void) wrmsr(MSR_FSBASE, 0); /* User value */ wrmsr(MSR_GSBASE, (u_int64_t)pc); wrmsr(MSR_KGSBASE, (u_int64_t)pc); /* XXX User value while we're in the kernel */ + intel_fix_cpuid(); lidt(&r_idt); Modified: stable/10/sys/amd64/include/md_var.h ============================================================================== --- stable/10/sys/amd64/include/md_var.h Mon Aug 17 18:28:40 2015 (r286851) +++ stable/10/sys/amd64/include/md_var.h Mon Aug 17 18:33:16 2015 (r286852) @@ -112,6 +112,7 @@ void dump_drop_page(vm_paddr_t); void identify_cpu(void); void initializecpu(void); void initializecpucache(void); +bool intel_fix_cpuid(void); void fillw(int /*u_short*/ pat, void *base, size_t cnt); void fpstate_drop(struct thread *td); int is_physical_memory(vm_paddr_t addr); Modified: stable/10/sys/i386/i386/mp_machdep.c ============================================================================== --- stable/10/sys/i386/i386/mp_machdep.c Mon Aug 17 18:28:40 2015 (r286851) +++ stable/10/sys/i386/i386/mp_machdep.c Mon Aug 17 18:33:16 2015 (r286852) @@ -684,6 +684,8 @@ init_secondary(void) pc->pc_prvspace = pc; pc->pc_curthread = 0; + intel_fix_cpuid(); + gdt_segs[GPRIV_SEL].ssd_base = (int) pc; gdt_segs[GPROC0_SEL].ssd_base = (int) &pc->pc_common_tss; Modified: stable/10/sys/i386/include/md_var.h ============================================================================== --- stable/10/sys/i386/include/md_var.h Mon Aug 17 18:28:40 2015 (r286851) +++ stable/10/sys/i386/include/md_var.h Mon Aug 17 18:33:16 2015 (r286852) @@ -116,6 +116,7 @@ void fillw(int /*u_short*/ pat, void *ba void fill_based_sd(struct segment_descriptor *sdp, uint32_t base); void initializecpu(void); void initializecpucache(void); +bool intel_fix_cpuid(void); void i686_pagezero(void *addr); void sse2_pagezero(void *addr); void init_AMD_Elan_sc520(void); Modified: stable/10/sys/x86/x86/identcpu.c ============================================================================== --- stable/10/sys/x86/x86/identcpu.c Mon Aug 17 18:28:40 2015 (r286851) +++ stable/10/sys/x86/x86/identcpu.c Mon Aug 17 18:33:16 2015 (r286852) @@ -1297,6 +1297,33 @@ identify_hypervisor(void) #endif /* + * Clear "Limit CPUID Maxval" bit and return true if the caller should + * get the largest standard CPUID function number again if it is set + * from BIOS. It is necessary for probing correct CPU topology later + * and for the correct operation of the AVX-aware userspace. + */ +bool +intel_fix_cpuid(void) +{ + uint64_t msr; + + if (cpu_vendor_id != CPU_VENDOR_INTEL) + return (false); + if ((CPUID_TO_FAMILY(cpu_id) == 0xf && + CPUID_TO_MODEL(cpu_id) >= 0x3) || + (CPUID_TO_FAMILY(cpu_id) == 0x6 && + CPUID_TO_MODEL(cpu_id) >= 0xe)) { + msr = rdmsr(MSR_IA32_MISC_ENABLE); + if ((msr & IA32_MISC_EN_LIMCPUID) != 0) { + msr &= ~IA32_MISC_EN_LIMCPUID; + wrmsr(MSR_IA32_MISC_ENABLE, msr); + return (true); + } + } + return (false); +} + +/* * Final stage of CPU identification. */ #ifdef __i386__ @@ -1332,22 +1359,9 @@ identify_cpu(void) #endif cpu_vendor_id = find_cpu_vendor_id(); - /* - * Clear "Limit CPUID Maxval" bit and get the largest standard CPUID - * function number again if it is set from BIOS. It is necessary - * for probing correct CPU topology later. - * XXX This is only done on the BSP package. - */ - if (cpu_vendor_id == CPU_VENDOR_INTEL && cpu_high > 0 && cpu_high < 4 && - ((CPUID_TO_FAMILY(cpu_id) == 0xf && CPUID_TO_MODEL(cpu_id) >= 0x3) || - (CPUID_TO_FAMILY(cpu_id) == 0x6 && CPUID_TO_MODEL(cpu_id) >= 0xe))) { - uint64_t msr; - msr = rdmsr(MSR_IA32_MISC_ENABLE); - if ((msr & 0x400000ULL) != 0) { - wrmsr(MSR_IA32_MISC_ENABLE, msr & ~0x400000ULL); - do_cpuid(0, regs); - cpu_high = regs[0]; - } + if (intel_fix_cpuid()) { + do_cpuid(0, regs); + cpu_high = regs[0]; } if (cpu_high >= 5 && (cpu_feature2 & CPUID2_MON) != 0) { From owner-svn-src-stable@freebsd.org Mon Aug 17 18:34:55 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9E7B89BB6E7; Mon, 17 Aug 2015 18:34:55 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8F7AF1764; Mon, 17 Aug 2015 18:34:55 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7HIYt7x072628; Mon, 17 Aug 2015 18:34:55 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7HIYt6E072626; Mon, 17 Aug 2015 18:34:55 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201508171834.t7HIYt6E072626@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Mon, 17 Aug 2015 18:34:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286853 - stable/10/lib/libthr/thread X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Aug 2015 18:34:55 -0000 Author: kib Date: Mon Aug 17 18:34:54 2015 New Revision: 286853 URL: https://svnweb.freebsd.org/changeset/base/286853 Log: MFC r286582: Pre-resolve symbols required for the deferred signal processing. Modified: stable/10/lib/libthr/thread/thr_rtld.c stable/10/lib/libthr/thread/thr_sig.c Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libthr/thread/thr_rtld.c ============================================================================== --- stable/10/lib/libthr/thread/thr_rtld.c Mon Aug 17 18:33:16 2015 (r286852) +++ stable/10/lib/libthr/thread/thr_rtld.c Mon Aug 17 18:34:54 2015 (r286853) @@ -185,7 +185,9 @@ _thr_rtld_init(void) { struct RtldLockInfo li; struct pthread *curthread; + ucontext_t *uc; long dummy = -1; + int uc_len; curthread = _get_curthread(); @@ -231,4 +233,9 @@ _thr_rtld_init(void) _thr_signal_block(curthread); _rtld_thread_init(&li); _thr_signal_unblock(curthread); + + uc_len = __getcontextx_size(); + uc = alloca(uc_len); + getcontext(uc); + __fillcontextx2((char *)uc); } Modified: stable/10/lib/libthr/thread/thr_sig.c ============================================================================== --- stable/10/lib/libthr/thread/thr_sig.c Mon Aug 17 18:33:16 2015 (r286852) +++ stable/10/lib/libthr/thread/thr_sig.c Mon Aug 17 18:34:54 2015 (r286853) @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -257,7 +258,7 @@ handle_signal(struct sigaction *actp, in /* reschedule cancellation */ check_cancel(curthread, &uc2); errno = err; - __sys_sigreturn(&uc2); + syscall(SYS_sigreturn, &uc2); } void From owner-svn-src-stable@freebsd.org Mon Aug 17 18:36:17 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8A52D9BB72B; Mon, 17 Aug 2015 18:36:17 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7B79D18CC; Mon, 17 Aug 2015 18:36:17 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7HIaHZ1072768; Mon, 17 Aug 2015 18:36:17 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7HIaHmf072767; Mon, 17 Aug 2015 18:36:17 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201508171836.t7HIaHmf072767@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Mon, 17 Aug 2015 18:36:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286854 - stable/10/sys/x86/iommu X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Aug 2015 18:36:17 -0000 Author: kib Date: Mon Aug 17 18:36:16 2015 New Revision: 286854 URL: https://svnweb.freebsd.org/changeset/base/286854 Log: MFC r286777: Comment only change, fix grammar and somewhat clarify the action. Modified: stable/10/sys/x86/iommu/intel_idpgtbl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/x86/iommu/intel_idpgtbl.c ============================================================================== --- stable/10/sys/x86/iommu/intel_idpgtbl.c Mon Aug 17 18:34:54 2015 (r286853) +++ stable/10/sys/x86/iommu/intel_idpgtbl.c Mon Aug 17 18:36:16 2015 (r286854) @@ -368,8 +368,9 @@ retry: if (pte == NULL) { KASSERT(lvl > 0, ("lost root page table page %p", ctx)); /* - * Page table page does not exists, allocate - * it and create pte in the up level. + * Page table page does not exist, allocate + * it and create a pte in the preceeding page level + * to reference the allocated page table page. */ m = dmar_pgalloc(ctx->pgtbl_obj, idx, flags | DMAR_PGF_ZERO); From owner-svn-src-stable@freebsd.org Mon Aug 17 18:43:41 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 806469BB918; Mon, 17 Aug 2015 18:43:41 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6DE6D1E95; Mon, 17 Aug 2015 18:43:41 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7HIhfjF076772; Mon, 17 Aug 2015 18:43:41 GMT (envelope-from loos@FreeBSD.org) Received: (from loos@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7HIheAO076769; Mon, 17 Aug 2015 18:43:40 GMT (envelope-from loos@FreeBSD.org) Message-Id: <201508171843.t7HIheAO076769@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: loos set sender to loos@FreeBSD.org using -f From: Luiz Otavio O Souza Date: Mon, 17 Aug 2015 18:43:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286856 - stable/10/sys/net X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Aug 2015 18:43:41 -0000 Author: loos Date: Mon Aug 17 18:43:39 2015 New Revision: 286856 URL: https://svnweb.freebsd.org/changeset/base/286856 Log: MFC r286140: Remove the sleep from the buffer allocation routine. The buffer must be allocated (or even changed) before the interface is set and thus, there is no need to verify if the buffer is in use. MFC r286142: Remove two unnecessary sleeps from the hot path in bpf(4). The first one never triggers because bpf_canfreebuf() can only be true for zero-copy buffers and zero-copy buffers are not read with read(2). The second also never triggers, because we check the free buffer before calling ROTATE_BUFFERS(). If the hold buffer is in use the free buffer will be NULL and there is nothing else to do besides drop the packet. If the free buffer isn't NULL the hold buffer _is_ free and it is safe to rotate the buffers. Update the comment in ROTATE_BUFFERS macro to match the logic described here. While here fix a few typos in comments. MFC r286243: Add a KASSERT() to make sure we wont rotate the buffers twice (rotate the buffers while the hold buffer is in use). Sponsored by: Rubicon Communications (Netgate) Modified: stable/10/sys/net/bpf.c stable/10/sys/net/bpf.h stable/10/sys/net/bpf_buffer.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/net/bpf.c ============================================================================== --- stable/10/sys/net/bpf.c Mon Aug 17 18:42:45 2015 (r286855) +++ stable/10/sys/net/bpf.c Mon Aug 17 18:43:39 2015 (r286856) @@ -606,7 +606,7 @@ bpf_attachd(struct bpf_d *d, struct bpf_ bpf_detachd_locked(d); /* * Point d at bp, and add d to the interface's list. - * Since there are many applicaiotns using BPF for + * Since there are many applications using BPF for * sending raw packets only (dhcpd, cdpd are good examples) * we can delay adding d to the list of active listeners until * some filter is configured. @@ -643,7 +643,7 @@ bpf_attachd(struct bpf_d *d, struct bpf_ /* * Add d to the list of active bp filters. - * Reuqires bpf_attachd() to be called before + * Requires bpf_attachd() to be called before. */ static void bpf_upgraded(struct bpf_d *d) @@ -2319,9 +2319,6 @@ catchpacket(struct bpf_d *d, u_char *pkt * spot to do it. */ if (d->bd_fbuf == NULL && bpf_canfreebuf(d)) { - while (d->bd_hbuf_in_use) - mtx_sleep(&d->bd_hbuf_in_use, &d->bd_lock, - PRINET, "bd_hbuf", 0); d->bd_fbuf = d->bd_hbuf; d->bd_hbuf = NULL; d->bd_hlen = 0; @@ -2364,9 +2361,7 @@ catchpacket(struct bpf_d *d, u_char *pkt ++d->bd_dcount; return; } - while (d->bd_hbuf_in_use) - mtx_sleep(&d->bd_hbuf_in_use, &d->bd_lock, - PRINET, "bd_hbuf", 0); + KASSERT(!d->bd_hbuf_in_use, ("hold buffer is in use")); ROTATE_BUFFERS(d); do_wakeup = 1; curlen = 0; Modified: stable/10/sys/net/bpf.h ============================================================================== --- stable/10/sys/net/bpf.h Mon Aug 17 18:42:45 2015 (r286855) +++ stable/10/sys/net/bpf.h Mon Aug 17 18:43:39 2015 (r286856) @@ -1234,9 +1234,9 @@ SYSCTL_DECL(_net_bpf); /* * Rotate the packet buffers in descriptor d. Move the store buffer into the - * hold slot, and the free buffer ino the store slot. Zero the length of the - * new store buffer. Descriptor lock should be held. Hold buffer must - * not be marked "in use". + * hold slot, and the free buffer into the store slot. Zero the length of the + * new store buffer. Descriptor lock should be held. One must be careful to + * not rotate the buffers twice, i.e. if fbuf != NULL. */ #define ROTATE_BUFFERS(d) do { \ (d)->bd_hbuf = (d)->bd_sbuf; \ Modified: stable/10/sys/net/bpf_buffer.c ============================================================================== --- stable/10/sys/net/bpf_buffer.c Mon Aug 17 18:42:45 2015 (r286855) +++ stable/10/sys/net/bpf_buffer.c Mon Aug 17 18:43:39 2015 (r286856) @@ -79,8 +79,6 @@ __FBSDID("$FreeBSD$"); #include #include -#define PRINET 26 /* interruptible */ - /* * Implement historical kernel memory buffering model for BPF: two malloc(9) * kernel buffers are hung off of the descriptor. The size is fixed prior to @@ -191,9 +189,6 @@ bpf_buffer_ioctl_sblen(struct bpf_d *d, return (EINVAL); } - while (d->bd_hbuf_in_use) - mtx_sleep(&d->bd_hbuf_in_use, &d->bd_lock, - PRINET, "bd_hbuf", 0); /* Free old buffers if set */ if (d->bd_fbuf != NULL) free(d->bd_fbuf, M_BPF); From owner-svn-src-stable@freebsd.org Mon Aug 17 19:06:15 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 732BE9BBFAB; Mon, 17 Aug 2015 19:06:15 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 63D64171C; Mon, 17 Aug 2015 19:06:15 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7HJ6FqP086033; Mon, 17 Aug 2015 19:06:15 GMT (envelope-from loos@FreeBSD.org) Received: (from loos@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7HJ6FLn086032; Mon, 17 Aug 2015 19:06:15 GMT (envelope-from loos@FreeBSD.org) Message-Id: <201508171906.t7HJ6FLn086032@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: loos set sender to loos@FreeBSD.org using -f From: Luiz Otavio O Souza Date: Mon, 17 Aug 2015 19:06:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286859 - stable/10/sys/net X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Aug 2015 19:06:15 -0000 Author: loos Date: Mon Aug 17 19:06:14 2015 New Revision: 286859 URL: https://svnweb.freebsd.org/changeset/base/286859 Log: MFC r286260: Remove the mtx_sleep() from the kqueue f_event filter. The filter is called from the network hot path and must not sleep. The filter runs with the descriptor lock held and does not manipulate the buffers, so it is not necessary sleep when the hold buffer is in use. Just ignore the hold buffer contents when it is being copied to user space (when hold buffer in use is set). This fix the "Sleeping thread owns a non-sleepable lock" panic when the userland thread is too busy reading the packets from bpf(4). PR: 200323 Sponsored by: Rubicon Communications (Netgate) Modified: stable/10/sys/net/bpf.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/net/bpf.c ============================================================================== --- stable/10/sys/net/bpf.c Mon Aug 17 19:02:23 2015 (r286858) +++ stable/10/sys/net/bpf.c Mon Aug 17 19:06:14 2015 (r286859) @@ -1984,10 +1984,10 @@ filt_bpfread(struct knote *kn, long hint ready = bpf_ready(d); if (ready) { kn->kn_data = d->bd_slen; - while (d->bd_hbuf_in_use) - mtx_sleep(&d->bd_hbuf_in_use, &d->bd_lock, - PRINET, "bd_hbuf", 0); - if (d->bd_hbuf) + /* + * Ignore the hold buffer if it is being copied to user space. + */ + if (!d->bd_hbuf_in_use && d->bd_hbuf) kn->kn_data += d->bd_hlen; } else if (d->bd_rtout > 0 && d->bd_state == BPF_IDLE) { callout_reset(&d->bd_callout, d->bd_rtout, From owner-svn-src-stable@freebsd.org Tue Aug 18 09:09:41 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7A79B9BC0C5; Tue, 18 Aug 2015 09:09:41 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 52040CD2; Tue, 18 Aug 2015 09:09:41 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7I99fD6026520; Tue, 18 Aug 2015 09:09:41 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7I99emb026516; Tue, 18 Aug 2015 09:09:40 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201508180909.t7I99emb026516@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Tue, 18 Aug 2015 09:09:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286878 - in stable/10/sys/i386: i386 include X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Aug 2015 09:09:41 -0000 Author: kib Date: Tue Aug 18 09:09:39 2015 New Revision: 286878 URL: https://svnweb.freebsd.org/changeset/base/286878 Log: MFC r286288: Give large kernel stack to the initial thread. Modified: stable/10/sys/i386/i386/genassym.c stable/10/sys/i386/i386/locore.s stable/10/sys/i386/i386/machdep.c stable/10/sys/i386/include/param.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/i386/i386/genassym.c ============================================================================== --- stable/10/sys/i386/i386/genassym.c Tue Aug 18 09:09:27 2015 (r286877) +++ stable/10/sys/i386/i386/genassym.c Tue Aug 18 09:09:39 2015 (r286878) @@ -103,6 +103,7 @@ ASSYM(V_SYSCALL, offsetof(struct vmmeter ASSYM(V_INTR, offsetof(struct vmmeter, v_intr)); /* ASSYM(UPAGES, UPAGES);*/ ASSYM(KSTACK_PAGES, KSTACK_PAGES); +ASSYM(TD0_KSTACK_PAGES, TD0_KSTACK_PAGES); ASSYM(PAGE_SIZE, PAGE_SIZE); ASSYM(NPTEPG, NPTEPG); ASSYM(NPDEPG, NPDEPG); Modified: stable/10/sys/i386/i386/locore.s ============================================================================== --- stable/10/sys/i386/i386/locore.s Tue Aug 18 09:09:27 2015 (r286877) +++ stable/10/sys/i386/i386/locore.s Tue Aug 18 09:09:39 2015 (r286878) @@ -731,7 +731,7 @@ no_kernend: movl %esi,R(IdlePTD) /* Allocate KSTACK */ - ALLOCPAGES(KSTACK_PAGES) + ALLOCPAGES(TD0_KSTACK_PAGES) movl %esi,R(p0kpa) addl $KERNBASE, %esi movl %esi, R(proc0kstack) @@ -800,7 +800,7 @@ no_kernend: /* Map proc0's KSTACK in the physical way ... */ movl R(p0kpa), %eax - movl $(KSTACK_PAGES), %ecx + movl $(TD0_KSTACK_PAGES), %ecx fillkptphys($PG_RW) /* Map ISA hole */ Modified: stable/10/sys/i386/i386/machdep.c ============================================================================== --- stable/10/sys/i386/i386/machdep.c Tue Aug 18 09:09:27 2015 (r286877) +++ stable/10/sys/i386/i386/machdep.c Tue Aug 18 09:09:39 2015 (r286878) @@ -3153,7 +3153,7 @@ init386(first) #endif thread0.td_kstack = proc0kstack; - thread0.td_kstack_pages = KSTACK_PAGES; + thread0.td_kstack_pages = TD0_KSTACK_PAGES; /* * This may be done better later if it gets more high level Modified: stable/10/sys/i386/include/param.h ============================================================================== --- stable/10/sys/i386/include/param.h Tue Aug 18 09:09:27 2015 (r286877) +++ stable/10/sys/i386/include/param.h Tue Aug 18 09:09:39 2015 (r286878) @@ -114,6 +114,11 @@ #define KSTACK_PAGES 2 /* Includes pcb! */ #endif #define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */ +#if KSTACK_PAGES < 4 +#define TD0_KSTACK_PAGES 4 +#else +#define TD0_KSTACK_PAGES KSTACK_PAGES +#endif /* * Ceiling on amount of swblock kva space, can be changed via From owner-svn-src-stable@freebsd.org Tue Aug 18 18:54:46 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AE3779BDF26; Tue, 18 Aug 2015 18:54:46 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 948C71D68; Tue, 18 Aug 2015 18:54:46 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7IIskCt075981; Tue, 18 Aug 2015 18:54:46 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7IIskPx075978; Tue, 18 Aug 2015 18:54:46 GMT (envelope-from np@FreeBSD.org) Message-Id: <201508181854.t7IIskPx075978@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Tue, 18 Aug 2015 18:54:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286895 - in stable/10/sys: conf dev/cxgbe dev/cxgbe/firmware dev/cxgbe/tom modules/cxgbe/t4_firmware modules/cxgbe/t5_firmware X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Aug 2015 18:54:46 -0000 Author: np Date: Tue Aug 18 18:54:45 2015 New Revision: 286895 URL: https://svnweb.freebsd.org/changeset/base/286895 Log: MFC r285527 and r286338. This takes the firmware from 1.11.27.0 to 1.14.4.0. r286338: cxgbe(4): Update T5 and T4 firmwares bundled with the driver to 1.14.4.0. The changes in the firmwares since 1.11.27.0 are listed here (straight copy-paste from the "Release Notes.txt" accompanying the Chelsio Unified Wire 2.11.1.0 release on the website). 22.1. T5 Firmware +++++++++++++++++++++++++++++++++ Version : 1.14.4.0 Date : 08/05/2015 ================================================================================ FIXES ----- BASE: - Fixes a potential data path hang by properly programming PMTX congestion threshold settings. - Fixes a potential initialization error when accessing a configuration file stored on the flash. - Fixes a regression where SGE resources can be miss-sized if iWARP is disabled. ETH: - Fixes a timing issue that would prevent CR4 links from coming up with some switches. FOFCoE: - Defers fcoe linkdown mailbox command handling till LOGO is sent. - Updates vlan prio for all outstanding IOs during dcbx update. ENHANCEMENTS ------------ BASE: - Adds support for PAUSE OFF watchdog. - Reports devlog access information in PCIE_FW_PF register 7. ETH: - Enhances segmentation offload to include VxLAN and Geneve. - Adds PTP support. - Adds new interface to allow the driver to query the VI rss table base addresses. - Allows the driver to program the SGE ingrext contxt CongDrop field. OFLD: - Adds new interface for the driver to specify offloaded connections TCP snd and rcv scale factors. iSCSI: - Adds support for iscsi segmentatation offload (ISO). - Adds support for iscsi t10-dif offload. FOiSCSI: - Sets FORCE_BIT for cut through processing for FOiSCSI. FOFCoE: - Adds support for FCoE BB6. - Improves WRITE performance. ================================================================================ ================================================================================ Version : 1.13.32.0 Date : 03/25/2015 ================================================================================ FIXES ----- BASE: - Fixes FW_CAPS_CONFIG_CMD return value on error (was positive instead of negative) - Fixes FW_PARAMS_PARAM_DEV_FLOWC_BUFFIFO_SZ indication (was wrong on certain adapter configurations) - Fixes config file based PL_TIMEOUT register programming ETH: - Fixes a potential EO UDP SEG header corruption - Fixes an issue where 1000Base-X was not enabled correctly when using QSA modules OFLD: - Fixes timeout issue with half-open connections - Fixes FW_FLOWC_WR processing when state is set to finwait1 FOFCoE: - Fixes fcoe xchg leaks in linkdown/peer down path - Fixes cleanup in FCoE linkdown and fixed buf timer flowid abuse - Fixes fw crash by clearing fcf flowc during bye FOiSCSI: - Don't create a new tcp socket if ERL0 attempt has timed out. ENHANCEMENTS ------------ BASE: - Adds support for VFs on PFs 4 to 7 - Adds support for QPs/CQs on any physical and virtual function ETH: - Stops sending LACP frames on loopback interface - Adds an AUTOEQU indication to CPL_SGE_EGR_UPDATE - Adds support for CR4 links (BEAN/AEC on 40G TwinAx cables) OFLD: - Improves default settings of LAN and CLUSTER TCP timer settings - Sends Negative Advice CPLs to software FOISCSI: - Adds IPv6 support for foiscsi. Keeps backward compatibility with old foiscsi drivers which doesn't support ipv6. FOFCoE: - Added fcoe debug support in flowc dump ================================================================================ ================================================================================ Version : 1.12.25.0 Date : 10/22/2014 ================================================================================ FIXES ----- BASE: - Improves precision of the Weight Round Robing Traffic Management Algorithm - Fixes an issue where the link would intermittently fail to come up - Fixes an issue where adapters with an external PHY couldn't run at 100Mbps - Fixes an issue where active optical cables were not recognized - Fixes link advertising issues on T520-BT (speed and pause frames) that would cause the link to negotiate unexpected settings - Forces link restart when auto-negotiation is disabled - Fix an issue where pause frames wouldn't be fully disabled even if requested ETH: - Fixes NVGRE Segmentation Offload network header generation. DCBX: - Fixes an issue where some settings were not being sent to the switch correctly - Fixes an issue where back-to-back DCBX port updates could get overwritten by FW - Fixes a firmware crash on DCBX APP information request before link up FOiSCSI: - Fixes abort task leak in tmf response handling - Fixes TCP RST handling while in iSCSI ERL0 - Fixes a firmware crash on BYE without INIT ENHANCEMENTS ------------- BASE: - Adds link partner settings reporting when available - Adds QSA support (in conjunction with QSA VPD) - Adds T520-BT LED support - Reports NOTSUPPORTED for modules with an unhandled identifier DCBX: - Adds version reporting (indicating which version FW is trying to negotiate) - Adds IEEE support - Reports LLDP time outs FOiSCSI: - Add support for multiple iSCSI DDP client - Sends DHCP renew request when lease expires ================================================================================ 22.2. T4 Firmware +++++++++++++++++ Version : 1.14.4.0 Date : 08/05/2015 ================================================================================ FIXES ----- BASE: - Fixes a potential initialization error when accessing a configuration file stored on the flash. - Initialize PCIE_DBG_INDIR_REQ.Enable to 0, as hardware failed to do so and register dumps could result in errors. ETH: - Fixes an issue that sometimes prevented the link from coming up in CR adapters. ENHANCEMENTS ------------ BASE: - Adds support for PAUSE OFF watchdog. - Reports devlog access information in PCIE_FW_PF register 7. ETH: - Adds new interface to allow the driver to query the VI rss table base addresses. OFLD: - Adds new interface for the driver to specify offloaded connections TCP snd and rcv scale factors. ================================================================================ ================================================================================ Version : 1.13.32.0 Date : 03/25/2015 ================================================================================ FIXES ----- BASE: - Fixes FW_CAPS_CONFIG_CMD return value on error (was positive instead of negative) - Fixes FW_PARAMS_PARAM_DEV_FLOWC_BUFFIFO_SZ indication (was wrong on certain adapter configurations) - Fixes config file based PL_TIMEOUT register programming ETH: - Fixes a potential EO UDP SEG header corruption OFLD: - Fixes timeout issue with half-open connections - Fixes FW_FLOWC_WR processing when state is set to finwait1 FOiSCSI: - Don't create a new tcp socket if ERL0 attempt has timed out. ENHANCEMENTS ------------ ETH: - Stops sending LACP frames on loopback interface - Adds an AUTOEQU indication to CPL_SGE_EGR_UPDATE OFLD: - Improves default settings of LAN and CLUSTER TCP timer settings - Sends Negative Advice CPLs to software ================================================================================ ================================================================================ Version : 1.12.25.0 Date : 10/22/2014 ================================================================================ FIXES ----- BASE: - Improves precision of the Weight Round Robing Traffic Management Algorithm - Forces link restart when auto-negotiation is disabled - Fix an issue where pause frames wouldn't be fully disabled even if requested DCBX: - Fixes an issue where some settings were not being sent to the switch correctly - Fixes an issue where back-to-back DCBX port updates could get overwritten by FW - Fixes a firmware crash on DCBX APP information request before link up FOiSCSI: - Fixes abort task leak in tmf response handling - Fixes TCP RST handling while in iSCSI ERL0 - Fixes a firmware crash on BYE without INIT ENHANCEMENTS ------------ BASE: - Adds link partner settings reporting when available - Firmware now reports NOTSUPPORTED for modules with an unhandled identifier DCBX: - Adds version reporting (indicating which version FW is trying to negotiate) - Adds IEEE support - Reports LLDP time outs FOiSCSI: - Adds support for multiple iSCSI DDP clients - Sends DHCP renew request when lease expires ================================================================================ Obtained from: Chelsio Communications Sponsored by: Chelsio Communications Added: stable/10/sys/dev/cxgbe/firmware/t4fw-1.14.4.0.bin.uu - copied unchanged from r286338, head/sys/dev/cxgbe/firmware/t4fw-1.14.4.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t5fw-1.14.4.0.bin.uu - copied unchanged from r286338, head/sys/dev/cxgbe/firmware/t5fw-1.14.4.0.bin.uu Deleted: stable/10/sys/dev/cxgbe/firmware/t4fw-1.11.27.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t5fw-1.11.27.0.bin.uu Modified: stable/10/sys/conf/files stable/10/sys/dev/cxgbe/firmware/t4fw_cfg_uwire.txt stable/10/sys/dev/cxgbe/firmware/t4fw_interface.h stable/10/sys/dev/cxgbe/firmware/t5fw_cfg_uwire.txt stable/10/sys/dev/cxgbe/t4_main.c stable/10/sys/dev/cxgbe/tom/t4_cpl_io.c stable/10/sys/modules/cxgbe/t4_firmware/Makefile stable/10/sys/modules/cxgbe/t5_firmware/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/conf/files ============================================================================== --- stable/10/sys/conf/files Tue Aug 18 18:12:46 2015 (r286894) +++ stable/10/sys/conf/files Tue Aug 18 18:54:45 2015 (r286895) @@ -1179,7 +1179,7 @@ t4fw.fwo optional cxgbe \ no-implicit-rule \ clean "t4fw.fwo" t4fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t4fw-1.11.27.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t4fw-1.14.4.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t4fw.fw" @@ -1203,7 +1203,7 @@ t5fw.fwo optional cxgbe \ no-implicit-rule \ clean "t5fw.fwo" t5fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t5fw-1.11.27.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t5fw-1.14.4.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t5fw.fw" Copied: stable/10/sys/dev/cxgbe/firmware/t4fw-1.14.4.0.bin.uu (from r286338, head/sys/dev/cxgbe/firmware/t4fw-1.14.4.0.bin.uu) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/sys/dev/cxgbe/firmware/t4fw-1.14.4.0.bin.uu Tue Aug 18 18:54:45 2015 (r286895, copy of r286338, head/sys/dev/cxgbe/firmware/t4fw-1.14.4.0.bin.uu) @@ -0,0 +1,9495 @@ +/*- + * Copyright (c) 2015 Chelsio Communications, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 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. + */ +begin-base64 644 t4fw +AAAEHgEOBAAAAQkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAABAEEEAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAENoZWxzaW8gRlcgUlVOTUVNIERFQlVHPTAgKEJ1aWx0IFRodSBKdWwgMjMgMDA6 +MzA6MTAgUERUIDIwMTUgb24gY2xlb3BhdHJhLmFzaWNkZXNpZ25lcnMuY29tOi9ob21lL2Zpcm13 +YXJlL2N2cy9mdy1yZWxlYXNlKSwgVmVyc2lvbiBUNHh4IDAxLjBlLjA0LjAwAAAAAAAAABlSRz1g +AMgA4QB78AAQAADhADC4eP///x/84UCAAAAB4QB7cAAAEAAf//2U4QGUcCAAAADhAZwE4QB5AAAC +AEDhAHmAAAYAQAACAAoABgAK4QB5BAAMAACAAAEC4QB7POEAe0ThAHvk4gAAAAABAADhAHuQIAAA +AAAAgADhAHsAAABAAeEAe5wAAEAAREREQuAAAADjAARzREREQOMACAAgAAJcAAAAAB//koAAAAAA +H/+ShAAAAAAf/5KIAAAAAB//kowf/8AAAAAAAAAAAADAABL/zRP/zZMgEv/NE//NhCAEMwGTIBH/ +zBL/zJIQEf/MEv/MkhAR/8wB9DER/8siCv+SEADkMQAFMQECABL/yALnMQIWABH/x4EQAQFfwCEC +EQHJERH/xBL/xJIQEf/EEv/EkhBgAA8R/78S/8OSEBH/vxL/wpIQgRAR/8HAIJIREv/AkhLAIJIT +Ev+/khCCEALyUGUv9xH/vccvkhAR/7ySEBL/vBP/vJMgwDKTIRP/u5MigiIS/7oT/7qTICMiIRT/ +uQQzAck4E/+4gzADgxQIMxEU/7akM5MhE/+qkyJgAAjCMJMhE/+nkyIS/7GQIJAhkCKQI5AkkCWQ +JpAnkCiQKZAqkCuQLJAtkC6QLyAmECAmEYIiEv+kwDAtNzAtNzQtNzgtNzwjPQFyM+0AAgAS/6HA +MC83AC83EC83IC83MCM9AXIz7QACABL/l8AwKDcwKDc0KDc4KDc8Iz0BcjPtEv+VwDAnNwAnNxAn +NyAnNzAjPQFyM+0S/5AV/5AW/5HAMNcgBWYBYAAZAAAAAAAAAAQ2BQACANMP0w8FMwxuOxQHRxQH +BEN2MeYENgUFMwxvO+0AAgAS/4MV/4EjCgACJwIHBEMEPgUFMwwHRxRvO/ADAgAS/33JLoMghCGF +IrwidDsOhlC0VZYwtDN0M/Rj/+YAZT/iZV/fEv9xwDIDLgUDAgAS/2jAMCg3QCg3RCg3SCg3TCM9 +AXIz7QACABL/ay0nAMARAUkxAEgxAQIAwAAU/2gE0jEV/2eUUBT/ZwTTMRX/ZpRQFP9mBNQxFf9m +lFAU/2UE1TEV/2WUUBD/ZQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +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 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAIGAAAAAAAAA/////////////////////x///Igf//yIH//8UB///FAf//xQH//8UB// +9eAf//kIH//3ZB//92Qf//dkIAakyAAAAAAAAAAAAAAAAAAAAAAgBqgQIAaoEAAAAAAAAAAAAAAA +AAAAAAAgBqTIIAakyB//+fwf//n8H//5/B//+fwf//n8H//5/AAAAAAgAcUIAAAAAAAAAAAAAAAA +AAAAAAIBAAAAAAAAAAAAAAAAAAAEAAAAAAAAAIGAAAAAAAAQBQAAAAAAAAQAAAAAAAAAAAAAAAAA +AAAAgQAAAAAAABgFAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +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 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Tue Aug 18 19:04:57 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 53BC59BC17D; Tue, 18 Aug 2015 19:04:57 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2A1846C1; Tue, 18 Aug 2015 19:04:57 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7IJ4vZh080335; Tue, 18 Aug 2015 19:04:57 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7IJ4uGR080333; Tue, 18 Aug 2015 19:04:56 GMT (envelope-from np@FreeBSD.org) Message-Id: <201508181904.t7IJ4uGR080333@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Tue, 18 Aug 2015 19:04:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286897 - in stable/10/sys/dev/cxgbe: . common X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Aug 2015 19:04:57 -0000 Author: np Date: Tue Aug 18 19:04:55 2015 New Revision: 286897 URL: https://svnweb.freebsd.org/changeset/base/286897 Log: MFC r285648: cxgbe(4): Ask the firmware for the start of the RSS slice for a port and save it for later. This enables direct manipulation of the indirection tables (although the stock driver doesn't do that right now). Modified: stable/10/sys/dev/cxgbe/adapter.h stable/10/sys/dev/cxgbe/common/t4_hw.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/cxgbe/adapter.h ============================================================================== --- stable/10/sys/dev/cxgbe/adapter.h Tue Aug 18 19:03:59 2015 (r286896) +++ stable/10/sys/dev/cxgbe/adapter.h Tue Aug 18 19:04:55 2015 (r286897) @@ -227,6 +227,7 @@ struct port_info { uint16_t viid; int16_t xact_addr_filt;/* index of exact MAC address filter */ uint16_t rss_size; /* size of VI's RSS table slice */ + uint16_t rss_base; /* start of VI's RSS table slice */ uint8_t lport; /* associated offload logical port */ int8_t mdio_addr; uint8_t port_type; Modified: stable/10/sys/dev/cxgbe/common/t4_hw.c ============================================================================== --- stable/10/sys/dev/cxgbe/common/t4_hw.c Tue Aug 18 19:03:59 2015 (r286896) +++ stable/10/sys/dev/cxgbe/common/t4_hw.c Tue Aug 18 19:04:55 2015 (r286897) @@ -5696,6 +5696,7 @@ int __devinit t4_port_init(struct port_i struct fw_port_cmd c; u16 rss_size; adapter_t *adap = p->adapter; + u32 param, val; memset(&c, 0, sizeof(c)); @@ -5734,6 +5735,17 @@ int __devinit t4_port_init(struct port_i init_link_config(&p->link_cfg, ntohs(c.u.info.pcap)); + param = V_FW_PARAMS_MNEM(FW_PARAMS_MNEM_DEV) | + V_FW_PARAMS_PARAM_X(FW_PARAMS_PARAM_DEV_RSSINFO) | + V_FW_PARAMS_PARAM_YZ(p->viid); + ret = t4_query_params(adap, mbox, pf, vf, 1, ¶m, &val); + if (ret) + p->rss_base = 0xffff; + else { + /* MPASS((val >> 16) == rss_size); */ + p->rss_base = val & 0xffff; + } + return 0; } From owner-svn-src-stable@freebsd.org Tue Aug 18 19:15:21 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 104789BC41A; Tue, 18 Aug 2015 19:15:21 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 00B93E29; Tue, 18 Aug 2015 19:15:21 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7IJFKEF084609; Tue, 18 Aug 2015 19:15:20 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7IJFKZH084608; Tue, 18 Aug 2015 19:15:20 GMT (envelope-from np@FreeBSD.org) Message-Id: <201508181915.t7IJFKZH084608@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Tue, 18 Aug 2015 19:15:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286898 - stable/10/sys/dev/cxgbe X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Aug 2015 19:15:21 -0000 Author: np Date: Tue Aug 18 19:15:20 2015 New Revision: 286898 URL: https://svnweb.freebsd.org/changeset/base/286898 Log: MFC r271490: cxgbe(4): add support for the SIOCGI2C ioctl. Modified: stable/10/sys/dev/cxgbe/t4_main.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/cxgbe/t4_main.c ============================================================================== --- stable/10/sys/dev/cxgbe/t4_main.c Tue Aug 18 19:04:55 2015 (r286897) +++ stable/10/sys/dev/cxgbe/t4_main.c Tue Aug 18 19:15:20 2015 (r286898) @@ -1386,6 +1386,31 @@ fail: ifmedia_ioctl(ifp, ifr, &pi->media, cmd); break; + case SIOCGI2C: { + struct ifi2creq i2c; + + rc = copyin(ifr->ifr_data, &i2c, sizeof(i2c)); + if (rc != 0) + break; + if (i2c.dev_addr != 0xA0 && i2c.dev_addr != 0xA2) { + rc = EPERM; + break; + } + if (i2c.len > sizeof(i2c.data)) { + rc = EINVAL; + break; + } + rc = begin_synchronized_op(sc, pi, SLEEP_OK | INTR_OK, "t4i2c"); + if (rc) + return (rc); + rc = -t4_i2c_rd(sc, sc->mbox, pi->port_id, i2c.dev_addr, + i2c.offset, i2c.len, &i2c.data[0]); + end_synchronized_op(sc, 0); + if (rc == 0) + rc = copyout(&i2c, ifr->ifr_data, sizeof(i2c)); + break; + } + default: rc = ether_ioctl(ifp, cmd, data); } From owner-svn-src-stable@freebsd.org Tue Aug 18 19:30:07 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B2CC49BCA09; Tue, 18 Aug 2015 19:30:07 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7E1871911; Tue, 18 Aug 2015 19:30:07 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7IJU7as089477; Tue, 18 Aug 2015 19:30:07 GMT (envelope-from delphij@FreeBSD.org) Received: (from delphij@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7IJU7CD089476; Tue, 18 Aug 2015 19:30:07 GMT (envelope-from delphij@FreeBSD.org) Message-Id: <201508181930.t7IJU7CD089476@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: delphij set sender to delphij@FreeBSD.org using -f From: Xin LI Date: Tue, 18 Aug 2015 19:30:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286900 - in stable: 10/contrib/expat/lib 9/contrib/expat/lib X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Aug 2015 19:30:07 -0000 Author: delphij Date: Tue Aug 18 19:30:05 2015 New Revision: 286900 URL: https://svnweb.freebsd.org/changeset/base/286900 Log: Fix multiple integer overflows in expat. Security: CVE-2015-1283 Security: FreeBSD-SA-15:20.expat Modified: stable/10/contrib/expat/lib/xmlparse.c Changes in other areas also in this revision: Modified: stable/9/contrib/expat/lib/xmlparse.c Modified: stable/10/contrib/expat/lib/xmlparse.c ============================================================================== --- stable/10/contrib/expat/lib/xmlparse.c Tue Aug 18 19:30:04 2015 (r286899) +++ stable/10/contrib/expat/lib/xmlparse.c Tue Aug 18 19:30:05 2015 (r286900) @@ -1678,6 +1678,12 @@ XML_ParseBuffer(XML_Parser parser, int l void * XMLCALL XML_GetBuffer(XML_Parser parser, int len) { +/* BEGIN MOZILLA CHANGE (sanity check len) */ + if (len < 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } +/* END MOZILLA CHANGE */ switch (ps_parsing) { case XML_SUSPENDED: errorCode = XML_ERROR_SUSPENDED; @@ -1689,8 +1695,13 @@ XML_GetBuffer(XML_Parser parser, int len } if (len > bufferLim - bufferEnd) { - /* FIXME avoid integer overflow */ int neededSize = len + (int)(bufferEnd - bufferPtr); +/* BEGIN MOZILLA CHANGE (sanity check neededSize) */ + if (neededSize < 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } +/* END MOZILLA CHANGE */ #ifdef XML_CONTEXT_BYTES int keep = (int)(bufferPtr - buffer); @@ -1719,7 +1730,15 @@ XML_GetBuffer(XML_Parser parser, int len bufferSize = INIT_BUFFER_SIZE; do { bufferSize *= 2; - } while (bufferSize < neededSize); +/* BEGIN MOZILLA CHANGE (prevent infinite loop on overflow) */ + } while (bufferSize < neededSize && bufferSize > 0); +/* END MOZILLA CHANGE */ +/* BEGIN MOZILLA CHANGE (sanity check bufferSize) */ + if (bufferSize <= 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } +/* END MOZILLA CHANGE */ newBuf = (char *)MALLOC(bufferSize); if (newBuf == 0) { errorCode = XML_ERROR_NO_MEMORY; From owner-svn-src-stable@freebsd.org Tue Aug 18 19:30:07 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 05DF09BC9E8; Tue, 18 Aug 2015 19:30:07 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D0DC51903; Tue, 18 Aug 2015 19:30:06 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7IJU6KD089471; Tue, 18 Aug 2015 19:30:06 GMT (envelope-from delphij@FreeBSD.org) Received: (from delphij@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7IJU6xe089470; Tue, 18 Aug 2015 19:30:06 GMT (envelope-from delphij@FreeBSD.org) Message-Id: <201508181930.t7IJU6xe089470@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: delphij set sender to delphij@FreeBSD.org using -f From: Xin LI Date: Tue, 18 Aug 2015 19:30:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r286900 - in stable: 10/contrib/expat/lib 9/contrib/expat/lib X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Aug 2015 19:30:07 -0000 Author: delphij Date: Tue Aug 18 19:30:05 2015 New Revision: 286900 URL: https://svnweb.freebsd.org/changeset/base/286900 Log: Fix multiple integer overflows in expat. Security: CVE-2015-1283 Security: FreeBSD-SA-15:20.expat Modified: stable/9/contrib/expat/lib/xmlparse.c Changes in other areas also in this revision: Modified: stable/10/contrib/expat/lib/xmlparse.c Modified: stable/9/contrib/expat/lib/xmlparse.c ============================================================================== --- stable/9/contrib/expat/lib/xmlparse.c Tue Aug 18 19:30:04 2015 (r286899) +++ stable/9/contrib/expat/lib/xmlparse.c Tue Aug 18 19:30:05 2015 (r286900) @@ -1678,6 +1678,12 @@ XML_ParseBuffer(XML_Parser parser, int l void * XMLCALL XML_GetBuffer(XML_Parser parser, int len) { +/* BEGIN MOZILLA CHANGE (sanity check len) */ + if (len < 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } +/* END MOZILLA CHANGE */ switch (ps_parsing) { case XML_SUSPENDED: errorCode = XML_ERROR_SUSPENDED; @@ -1689,8 +1695,13 @@ XML_GetBuffer(XML_Parser parser, int len } if (len > bufferLim - bufferEnd) { - /* FIXME avoid integer overflow */ int neededSize = len + (int)(bufferEnd - bufferPtr); +/* BEGIN MOZILLA CHANGE (sanity check neededSize) */ + if (neededSize < 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } +/* END MOZILLA CHANGE */ #ifdef XML_CONTEXT_BYTES int keep = (int)(bufferPtr - buffer); @@ -1719,7 +1730,15 @@ XML_GetBuffer(XML_Parser parser, int len bufferSize = INIT_BUFFER_SIZE; do { bufferSize *= 2; - } while (bufferSize < neededSize); +/* BEGIN MOZILLA CHANGE (prevent infinite loop on overflow) */ + } while (bufferSize < neededSize && bufferSize > 0); +/* END MOZILLA CHANGE */ +/* BEGIN MOZILLA CHANGE (sanity check bufferSize) */ + if (bufferSize <= 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } +/* END MOZILLA CHANGE */ newBuf = (char *)MALLOC(bufferSize); if (newBuf == 0) { errorCode = XML_ERROR_NO_MEMORY; From owner-svn-src-stable@freebsd.org Tue Aug 18 20:27:04 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A9DAA9BC0A3; Tue, 18 Aug 2015 20:27:04 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7FDA417D; Tue, 18 Aug 2015 20:27:04 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7IKR4rU016065; Tue, 18 Aug 2015 20:27:04 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7IKR4Wt016063; Tue, 18 Aug 2015 20:27:04 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201508182027.t7IKR4Wt016063@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Tue, 18 Aug 2015 20:27:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286906 - in stable: 10/release/doc/share/xml 9/release/doc/share/xml X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Aug 2015 20:27:04 -0000 Author: gjb Date: Tue Aug 18 20:27:03 2015 New Revision: 286906 URL: https://svnweb.freebsd.org/changeset/base/286906 Log: Document SA-15:20, EN-15:11, EN-15:12, EN-15:13. Sponsored by: The FreeBSD Foundation Modified: stable/10/release/doc/share/xml/errata.xml stable/10/release/doc/share/xml/security.xml Changes in other areas also in this revision: Modified: stable/9/release/doc/share/xml/security.xml Modified: stable/10/release/doc/share/xml/errata.xml ============================================================================== --- stable/10/release/doc/share/xml/errata.xml Tue Aug 18 20:21:45 2015 (r286905) +++ stable/10/release/doc/share/xml/errata.xml Tue Aug 18 20:27:03 2015 (r286906) @@ -19,9 +19,27 @@ - No notices. -   -   + FreeBSD-EN-15:11.toolchain + 18 August 2015 + Fix &man.make.1; syntax errors when upgrading + from &os; 9.x and earlier. + + + + FreeBSD-EN-15:12.netstat + 18 August 2015 + Fix incorrect &man.netstat.1; data handling on + 32-bit systems. + + + + FreeBSD-EN-15:13.vidcontrol + 18 August 2015 + Allow size argument to &man.vidcontrol.1; for + &man.syscons.4;. Modified: stable/10/release/doc/share/xml/security.xml ============================================================================== --- stable/10/release/doc/share/xml/security.xml Tue Aug 18 20:21:45 2015 (r286905) +++ stable/10/release/doc/share/xml/security.xml Tue Aug 18 20:27:03 2015 (r286906) @@ -19,9 +19,11 @@ - No advisories. -   -   + FreeBSD-SA-15:20.expat + 18 August 2015 + Fix multiple integer overflows in + &man.libbsdxml.3;. From owner-svn-src-stable@freebsd.org Tue Aug 18 20:27:05 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 471429BC0A9; Tue, 18 Aug 2015 20:27:05 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 36F2617E; Tue, 18 Aug 2015 20:27:05 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7IKR5Ql016071; Tue, 18 Aug 2015 20:27:05 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7IKR5bb016070; Tue, 18 Aug 2015 20:27:05 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201508182027.t7IKR5bb016070@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Tue, 18 Aug 2015 20:27:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r286906 - in stable: 10/release/doc/share/xml 9/release/doc/share/xml X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 18 Aug 2015 20:27:05 -0000 Author: gjb Date: Tue Aug 18 20:27:03 2015 New Revision: 286906 URL: https://svnweb.freebsd.org/changeset/base/286906 Log: Document SA-15:20, EN-15:11, EN-15:12, EN-15:13. Sponsored by: The FreeBSD Foundation Modified: stable/9/release/doc/share/xml/security.xml Changes in other areas also in this revision: Modified: stable/10/release/doc/share/xml/errata.xml stable/10/release/doc/share/xml/security.xml Modified: stable/9/release/doc/share/xml/security.xml ============================================================================== --- stable/9/release/doc/share/xml/security.xml Tue Aug 18 20:21:45 2015 (r286905) +++ stable/9/release/doc/share/xml/security.xml Tue Aug 18 20:27:03 2015 (r286906) @@ -201,6 +201,14 @@ Remote denial of service vulnerability + + + FreeBSD-SA-15:20.expat + 18 August 2015 + Fix multiple integer overflows in + &man.libbsdxml.3;. + From owner-svn-src-stable@freebsd.org Wed Aug 19 00:26:54 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E958F9BC90F; Wed, 19 Aug 2015 00:26:54 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D9E8DCCB; Wed, 19 Aug 2015 00:26:54 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7J0QsQ2014910; Wed, 19 Aug 2015 00:26:54 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7J0QsgK014909; Wed, 19 Aug 2015 00:26:54 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201508190026.t7J0QsgK014909@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Wed, 19 Aug 2015 00:26:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286912 - stable/10 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Aug 2015 00:26:55 -0000 Author: gjb Date: Wed Aug 19 00:26:54 2015 New Revision: 286912 URL: https://svnweb.freebsd.org/changeset/base/286912 Log: Add 10.2-RELEASE to UPDATING, forgotten with prior related commits. Submitted by: junovitch Sponsored by: The FreeBSD Foundation Modified: stable/10/UPDATING Modified: stable/10/UPDATING ============================================================================== --- stable/10/UPDATING Wed Aug 19 00:06:46 2015 (r286911) +++ stable/10/UPDATING Wed Aug 19 00:26:54 2015 (r286912) @@ -16,6 +16,9 @@ from older versions of FreeBSD, try WITH stable/10, and then rebuild without this option. The bootstrap process from older version of current is a bit fragile. +20150813: + 10.2-RELEASE. + 20150731: As ZFS requires more kernel stack pages than is the default on some architectures e.g. i386, it now warns if KSTACK_PAGES is less than From owner-svn-src-stable@freebsd.org Wed Aug 19 17:41:50 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E95569BEBE9; Wed, 19 Aug 2015 17:41:50 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BF35739C; Wed, 19 Aug 2015 17:41:50 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7JHfoHu058650; Wed, 19 Aug 2015 17:41:50 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7JHfofZ058649; Wed, 19 Aug 2015 17:41:50 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508191741.t7JHfofZ058649@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Wed, 19 Aug 2015 17:41:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286928 - stable/10/sys/cam/ctl X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Aug 2015 17:41:51 -0000 Author: mav Date: Wed Aug 19 17:41:49 2015 New Revision: 286928 URL: https://svnweb.freebsd.org/changeset/base/286928 Log: MFC r286320: Issue all reads of single XCOPY segment simultaneously. During vMotion and Clone VMware by default runs multiple sequential 4MB XCOPY requests same time. If CTL issues reads sequentially in 1MB chunks for each XCOPY command, reads from different commands are not detected as sequential by serseq option code and allowed to execute simultaneously. Such read pattern confused ZFS prefetcher, causing suboptimal disk access. Issuing all reads same time make serseq code work properly, serializing reads both within each XCOPY command and between them. My tests with ZFS pool of 14 disks in RAID10 shows prefetcher efficiency improved from 37% to 99.7%, copying speed improved by 10-60%, average read latency reduced twice on HDD layer and by five times on zvol layer. Modified: stable/10/sys/cam/ctl/ctl_tpc.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/ctl/ctl_tpc.c ============================================================================== --- stable/10/sys/cam/ctl/ctl_tpc.c Wed Aug 19 17:11:49 2015 (r286927) +++ stable/10/sys/cam/ctl/ctl_tpc.c Wed Aug 19 17:41:49 2015 (r286928) @@ -817,7 +817,7 @@ tpc_process_b2b(struct tpc_list *list) struct scsi_ec_segment_b2b *seg; struct scsi_ec_cscd_dtsp *sdstp, *ddstp; struct tpc_io *tior, *tiow; - struct runl run, *prun; + struct runl run; uint64_t sl, dl; off_t srclba, dstlba, numbytes, donebytes, roundbytes; int numlba; @@ -889,8 +889,7 @@ tpc_process_b2b(struct tpc_list *list) list->segsectors = numbytes / dstblock; donebytes = 0; TAILQ_INIT(&run); - prun = &run; - list->tbdio = 1; + list->tbdio = 0; while (donebytes < numbytes) { roundbytes = numbytes - donebytes; if (roundbytes > TPC_MAX_IO_SIZE) { @@ -942,8 +941,8 @@ tpc_process_b2b(struct tpc_list *list) tiow->io->io_hdr.ctl_private[CTL_PRIV_FRONTEND].ptr = tiow; TAILQ_INSERT_TAIL(&tior->run, tiow, rlinks); - TAILQ_INSERT_TAIL(prun, tior, rlinks); - prun = &tior->run; + TAILQ_INSERT_TAIL(&run, tior, rlinks); + list->tbdio++; donebytes += roundbytes; srclba += roundbytes / srcblock; dstlba += roundbytes / dstblock; From owner-svn-src-stable@freebsd.org Wed Aug 19 17:42:33 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1BA0A9BEC23; Wed, 19 Aug 2015 17:42:33 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0B5D5791; Wed, 19 Aug 2015 17:42:33 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7JHgWmM058736; Wed, 19 Aug 2015 17:42:32 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7JHgWDY058735; Wed, 19 Aug 2015 17:42:32 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201508191742.t7JHgWDY058735@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Wed, 19 Aug 2015 17:42:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286929 - stable/10/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Aug 2015 17:42:33 -0000 Author: gjb Date: Wed Aug 19 17:42:32 2015 New Revision: 286929 URL: https://svnweb.freebsd.org/changeset/base/286929 Log: Document two post-release EN items as resolved. Sponsored by: The FreeBSD Foundation Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Aug 19 17:41:49 2015 (r286928) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Aug 19 17:42:32 2015 (r286929) @@ -241,6 +241,8 @@ boot kernel. The issue was resolved in the stable/10 branch, and an Errata Notice is planned after &release.prev; is released. + + [2015-08-19] Resolved as FreeBSD-EN-15:12. @@ -250,6 +252,8 @@ boot and after investigation and determining the issue does not cause source-based upgrades to fail, a post-release Errata Notice is planned. + + [2015-08-19] Resolved as FreeBSD-EN-15:11. From owner-svn-src-stable@freebsd.org Wed Aug 19 17:43:37 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9CBFA9BEC80; Wed, 19 Aug 2015 17:43:37 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 80267933; Wed, 19 Aug 2015 17:43:37 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7JHhbIe058886; Wed, 19 Aug 2015 17:43:37 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7JHhaIS058882; Wed, 19 Aug 2015 17:43:36 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508191743.t7JHhaIS058882@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Wed, 19 Aug 2015 17:43:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286930 - stable/10/sys/cam/ctl X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Aug 2015 17:43:37 -0000 Author: mav Date: Wed Aug 19 17:43:36 2015 New Revision: 286930 URL: https://svnweb.freebsd.org/changeset/base/286930 Log: MFC r286345: Relax serialization of SYNCHRONIZE CACHE commands. Before this change SYNCHRONIZE CACHE commands were executed exclusively, as if they had ORDERED tag. But looking through SCSI specs I've found no any reason to be so strict. For reads this ordering seems pointless. For writes it looks less obvious, so I left ordering against preceeding write commands, while following ones are no longer required to wait. Modified: stable/10/sys/cam/ctl/ctl_cmd_table.c stable/10/sys/cam/ctl/ctl_private.h stable/10/sys/cam/ctl/ctl_ser_table.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/ctl/ctl_cmd_table.c ============================================================================== --- stable/10/sys/cam/ctl/ctl_cmd_table.c Wed Aug 19 17:42:32 2015 (r286929) +++ stable/10/sys/cam/ctl/ctl_cmd_table.c Wed Aug 19 17:43:36 2015 (r286930) @@ -785,8 +785,8 @@ const struct ctl_cmd_entry ctl_cmd_table {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, /* 35 SYNCHRONIZE CACHE(10) */ -{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | - CTL_FLAG_DATA_NONE, +{ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_SLUN | + CTL_FLAG_DATA_NONE, CTL_LUN_PAT_NONE, 10, {0, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, @@ -1138,8 +1138,8 @@ const struct ctl_cmd_entry ctl_cmd_table {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, /* 91 SYNCHRONIZE CACHE(16) */ -{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | - CTL_FLAG_DATA_NONE, +{ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_SLUN | + CTL_FLAG_DATA_NONE, CTL_LUN_PAT_NONE, 16, {0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, Modified: stable/10/sys/cam/ctl/ctl_private.h ============================================================================== --- stable/10/sys/cam/ctl/ctl_private.h Wed Aug 19 17:42:32 2015 (r286929) +++ stable/10/sys/cam/ctl/ctl_private.h Wed Aug 19 17:43:36 2015 (r286930) @@ -141,6 +141,7 @@ typedef enum { CTL_SERIDX_READ, CTL_SERIDX_WRITE, CTL_SERIDX_UNMAP, + CTL_SERIDX_SYNC, CTL_SERIDX_MD_SNS, CTL_SERIDX_MD_SEL, CTL_SERIDX_RQ_SNS, Modified: stable/10/sys/cam/ctl/ctl_ser_table.c ============================================================================== --- stable/10/sys/cam/ctl/ctl_ser_table.c Wed Aug 19 17:42:32 2015 (r286929) +++ stable/10/sys/cam/ctl/ctl_ser_table.c Wed Aug 19 17:43:36 2015 (r286930) @@ -63,19 +63,20 @@ static ctl_serialize_action ctl_serialize_table[CTL_SERIDX_COUNT][CTL_SERIDX_COUNT] = { -/**>IDX_ :: 2nd:TUR RD WRT UNM MDSN MDSL RQSN INQ RDCP RES LSNS FMT STR*/ -/*TUR */{ pS, pS, pS, pS, bK, bK, bK, pS, pS, bK, pS, bK, bK}, -/*READ */{ pS, xS, xT, bO, bK, bK, bK, pS, pS, bK, pS, bK, bK}, -/*WRITE */{ pS, xT, xT, bO, bK, bK, bK, pS, pS, bK, pS, bK, bK}, -/*UNMAP */{ pS, xO, xO, pS, bK, bK, bK, pS, pS, bK, pS, bK, bK}, -/*MD_SNS */{ bK, bK, bK, bK, pS, bK, bK, pS, pS, bK, pS, bK, bK}, -/*MD_SEL */{ bK, bK, bK, bK, bK, bK, bK, pS, pS, bK, pS, bK, bK}, -/*RQ_SNS */{ pS, pS, pS, pS, pS, pS, bK, pS, pS, bK, pS, bK, bK}, -/*INQ */{ pS, pS, pS, pS, pS, pS, bK, pS, pS, pS, pS, bK, bK}, -/*RD_CAP */{ pS, pS, pS, pS, pS, pS, bK, pS, pS, pS, pS, bK, pS}, -/*RES */{ bK, bK, bK, bK, bK, bK, bK, pS, bK, bK, bK, bK, bK}, -/*LOG_SNS */{ pS, pS, pS, pS, pS, bK, bK, pS, pS, bK, pS, bK, bK}, -/*FORMAT */{ pS, bK, bK, bK, bK, bK, pS, pS, bK, bK, bK, bK, bK}, -/*START */{ bK, bK, bK, bK, bK, bK, bK, pS, bK, bK, bK, bK, bK}, +/**>IDX_ :: 2nd:TUR RD WRT UNM SYN MDSN MDSL RQSN INQ RDCP RES LSNS FMT STR*/ +/*TUR */{ pS, pS, pS, pS, pS, bK, bK, bK, pS, pS, bK, pS, bK, bK}, +/*READ */{ pS, xS, xT, bO, pS, bK, bK, bK, pS, pS, bK, pS, bK, bK}, +/*WRITE */{ pS, xT, xT, bO, bO, bK, bK, bK, pS, pS, bK, pS, bK, bK}, +/*UNMAP */{ pS, xO, xO, pS, pS, bK, bK, bK, pS, pS, bK, pS, bK, bK}, +/*SYNC */{ pS, pS, pS, pS, pS, bK, bK, bK, pS, pS, bK, pS, bK, bK}, +/*MD_SNS */{ bK, bK, bK, bK, bK, pS, bK, bK, pS, pS, bK, pS, bK, bK}, +/*MD_SEL */{ bK, bK, bK, bK, bK, bK, bK, bK, pS, pS, bK, pS, bK, bK}, +/*RQ_SNS */{ pS, pS, pS, pS, pS, pS, pS, bK, pS, pS, bK, pS, bK, bK}, +/*INQ */{ pS, pS, pS, pS, pS, pS, pS, bK, pS, pS, pS, pS, bK, bK}, +/*RD_CAP */{ pS, pS, pS, pS, pS, pS, pS, bK, pS, pS, pS, pS, bK, pS}, +/*RES */{ bK, bK, bK, bK, bK, bK, bK, bK, pS, bK, bK, bK, bK, bK}, +/*LOG_SNS */{ pS, pS, pS, pS, pS, pS, bK, bK, pS, pS, bK, pS, bK, bK}, +/*FORMAT */{ pS, bK, bK, bK, bK, bK, bK, pS, pS, bK, bK, bK, bK, bK}, +/*START */{ bK, bK, bK, bK, bK, bK, bK, bK, pS, bK, bK, bK, bK, bK}, }; From owner-svn-src-stable@freebsd.org Wed Aug 19 17:47:49 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6BF8A9BED09; Wed, 19 Aug 2015 17:47:49 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4F905BAB; Wed, 19 Aug 2015 17:47:49 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7JHlnN6059238; Wed, 19 Aug 2015 17:47:49 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7JHlmZv059235; Wed, 19 Aug 2015 17:47:48 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508191747.t7JHlmZv059235@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Wed, 19 Aug 2015 17:47:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286931 - stable/10/sys/cam/ctl X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Aug 2015 17:47:49 -0000 Author: mav Date: Wed Aug 19 17:47:47 2015 New Revision: 286931 URL: https://svnweb.freebsd.org/changeset/base/286931 Log: MFC r286353: Pass SYNCHRONIZE CACHE command parameters to backends. At this point IMMED flag is translated to MNT_NOWAIT flag of VOP_FSYNC(), hoping that file system implements that (ZFS seems doesn't). Modified: stable/10/sys/cam/ctl/ctl.c stable/10/sys/cam/ctl/ctl_backend_block.c stable/10/sys/cam/ctl/ctl_cmd_table.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/ctl/ctl.c ============================================================================== --- stable/10/sys/cam/ctl/ctl.c Wed Aug 19 17:43:36 2015 (r286930) +++ stable/10/sys/cam/ctl/ctl.c Wed Aug 19 17:47:47 2015 (r286931) @@ -5504,9 +5504,11 @@ ctl_sync_cache(struct ctl_scsiio *ctsio) { struct ctl_lun *lun; struct ctl_softc *softc; + struct ctl_lba_len_flags *lbalen; uint64_t starting_lba; uint32_t block_count; int retval; + uint8_t byte2; CTL_DEBUG_PRINT(("ctl_sync_cache\n")); @@ -5521,6 +5523,7 @@ ctl_sync_cache(struct ctl_scsiio *ctsio) starting_lba = scsi_4btoul(cdb->begin_lba); block_count = scsi_2btoul(cdb->lb_count); + byte2 = cdb->byte2; break; } case SYNCHRONIZE_CACHE_16: { @@ -5529,6 +5532,7 @@ ctl_sync_cache(struct ctl_scsiio *ctsio) starting_lba = scsi_8btou64(cdb->begin_lba); block_count = scsi_4btoul(cdb->lb_count); + byte2 = cdb->byte2; break; } default: @@ -5559,6 +5563,11 @@ ctl_sync_cache(struct ctl_scsiio *ctsio) goto bailout; } + lbalen = (struct ctl_lba_len_flags *)&ctsio->io_hdr.ctl_private[CTL_PRIV_LBA_LEN]; + lbalen->lba = starting_lba; + lbalen->len = block_count; + lbalen->flags = byte2; + /* * Check to see whether we're configured to send the SYNCHRONIZE * CACHE command directly to the back end. Modified: stable/10/sys/cam/ctl/ctl_backend_block.c ============================================================================== --- stable/10/sys/cam/ctl/ctl_backend_block.c Wed Aug 19 17:43:36 2015 (r286930) +++ stable/10/sys/cam/ctl/ctl_backend_block.c Wed Aug 19 17:47:47 2015 (r286931) @@ -226,6 +226,7 @@ struct ctl_be_block_io { devstat_trans_flags ds_trans_type; uint64_t io_len; uint64_t io_offset; + int io_arg; struct ctl_be_block_softc *softc; struct ctl_be_block_lun *lun; void (*beio_cont)(struct ctl_be_block_io *beio); /* to continue processing */ @@ -584,7 +585,8 @@ ctl_be_block_flush_file(struct ctl_be_bl vn_lock(be_lun->vn, lock_flags | LK_RETRY); - error = VOP_FSYNC(be_lun->vn, MNT_WAIT, curthread); + error = VOP_FSYNC(be_lun->vn, beio->io_arg ? MNT_NOWAIT : MNT_WAIT, + curthread); VOP_UNLOCK(be_lun->vn, 0); vn_finished_write(mountpoint); @@ -677,9 +679,6 @@ ctl_be_block_dispatch_file(struct ctl_be * ZFS pays attention to IO_SYNC (which translates into the * Solaris define FRSYNC for zfs_read()) for reads. It * attempts to sync the file before reading. - * - * So, to attempt to provide some barrier semantics in the - * BIO_ORDERED case, set both IO_DIRECT and IO_SYNC. */ error = VOP_READ(be_lun->vn, &xuio, flags, file_data->cred); @@ -714,9 +713,6 @@ ctl_be_block_dispatch_file(struct ctl_be * ZFS pays attention to IO_SYNC (a.k.a. FSYNC or FRSYNC) * for writes. It will flush the transaction from the * cache before returning. - * - * So if we've got the BIO_ORDERED flag set, we want - * IO_SYNC in either the UFS or ZFS case. */ error = VOP_WRITE(be_lun->vn, &xuio, flags, file_data->cred); VOP_UNLOCK(be_lun->vn, 0); @@ -981,7 +977,6 @@ ctl_be_block_flush_dev(struct ctl_be_blo bio = g_alloc_bio(); bio->bio_cmd = BIO_FLUSH; - bio->bio_flags |= BIO_ORDERED; bio->bio_dev = dev_data->cdev; bio->bio_offset = 0; bio->bio_data = 0; @@ -1167,6 +1162,26 @@ ctl_be_block_getattr_dev(struct ctl_be_b } static void +ctl_be_block_cw_dispatch_sync(struct ctl_be_block_lun *be_lun, + union ctl_io *io) +{ + struct ctl_be_block_io *beio; + struct ctl_lba_len_flags *lbalen; + + DPRINTF("entered\n"); + beio = (struct ctl_be_block_io *)PRIV(io)->ptr; + lbalen = (struct ctl_lba_len_flags *)&io->io_hdr.ctl_private[CTL_PRIV_LBA_LEN]; + + beio->io_len = lbalen->len * be_lun->blocksize; + beio->io_offset = lbalen->lba * be_lun->blocksize; + beio->io_arg = (lbalen->flags & SSC_IMMED) != 0; + beio->bio_cmd = BIO_FLUSH; + beio->ds_trans_type = DEVSTAT_NO_DATA; + DPRINTF("SYNC\n"); + be_lun->lun_flush(be_lun, beio); +} + +static void ctl_be_block_cw_done_ws(struct ctl_be_block_io *beio) { union ctl_io *io; @@ -1188,7 +1203,6 @@ ctl_be_block_cw_dispatch_ws(struct ctl_b union ctl_io *io) { struct ctl_be_block_io *beio; - struct ctl_be_block_softc *softc; struct ctl_lba_len_flags *lbalen; uint64_t len_left, lba; uint32_t pb, pbo, adj; @@ -1198,7 +1212,6 @@ ctl_be_block_cw_dispatch_ws(struct ctl_b DPRINTF("entered\n"); beio = (struct ctl_be_block_io *)PRIV(io)->ptr; - softc = be_lun->softc; lbalen = ARGS(beio->io); if (lbalen->flags & ~(SWS_LBDATA | SWS_UNMAP | SWS_ANCHOR | SWS_NDOB) || @@ -1214,21 +1227,6 @@ ctl_be_block_cw_dispatch_ws(struct ctl_b return; } - switch (io->scsiio.tag_type) { - case CTL_TAG_ORDERED: - beio->ds_tag_type = DEVSTAT_TAG_ORDERED; - break; - case CTL_TAG_HEAD_OF_QUEUE: - beio->ds_tag_type = DEVSTAT_TAG_HEAD; - break; - case CTL_TAG_UNTAGGED: - case CTL_TAG_SIMPLE: - case CTL_TAG_ACA: - default: - beio->ds_tag_type = DEVSTAT_TAG_SIMPLE; - break; - } - if (lbalen->flags & (SWS_UNMAP | SWS_ANCHOR)) { beio->io_offset = lbalen->lba * be_lun->blocksize; beio->io_len = (uint64_t)lbalen->len * be_lun->blocksize; @@ -1303,13 +1301,11 @@ ctl_be_block_cw_dispatch_unmap(struct ct union ctl_io *io) { struct ctl_be_block_io *beio; - struct ctl_be_block_softc *softc; struct ctl_ptr_len_flags *ptrlen; DPRINTF("entered\n"); beio = (struct ctl_be_block_io *)PRIV(io)->ptr; - softc = be_lun->softc; ptrlen = (struct ctl_ptr_len_flags *)&io->io_hdr.ctl_private[CTL_PRIV_LBA_LEN]; if ((ptrlen->flags & ~SU_ANCHOR) != 0 || be_lun->unmap == NULL) { @@ -1324,29 +1320,11 @@ ctl_be_block_cw_dispatch_unmap(struct ct return; } - switch (io->scsiio.tag_type) { - case CTL_TAG_ORDERED: - beio->ds_tag_type = DEVSTAT_TAG_ORDERED; - break; - case CTL_TAG_HEAD_OF_QUEUE: - beio->ds_tag_type = DEVSTAT_TAG_HEAD; - break; - case CTL_TAG_UNTAGGED: - case CTL_TAG_SIMPLE: - case CTL_TAG_ACA: - default: - beio->ds_tag_type = DEVSTAT_TAG_SIMPLE; - break; - } - beio->io_len = 0; beio->io_offset = -1; - beio->bio_cmd = BIO_DELETE; beio->ds_trans_type = DEVSTAT_FREE; - DPRINTF("UNMAP\n"); - be_lun->unmap(be_lun, beio); } @@ -1417,16 +1395,26 @@ ctl_be_block_cw_dispatch(struct ctl_be_b beio->io = io; beio->lun = be_lun; beio->beio_cont = ctl_be_block_cw_done; + switch (io->scsiio.tag_type) { + case CTL_TAG_ORDERED: + beio->ds_tag_type = DEVSTAT_TAG_ORDERED; + break; + case CTL_TAG_HEAD_OF_QUEUE: + beio->ds_tag_type = DEVSTAT_TAG_HEAD; + break; + case CTL_TAG_UNTAGGED: + case CTL_TAG_SIMPLE: + case CTL_TAG_ACA: + default: + beio->ds_tag_type = DEVSTAT_TAG_SIMPLE; + break; + } PRIV(io)->ptr = (void *)beio; switch (io->scsiio.cdb[0]) { case SYNCHRONIZE_CACHE: case SYNCHRONIZE_CACHE_16: - beio->bio_cmd = BIO_FLUSH; - beio->ds_trans_type = DEVSTAT_NO_DATA; - beio->ds_tag_type = DEVSTAT_TAG_ORDERED; - beio->io_len = 0; - be_lun->lun_flush(be_lun, beio); + ctl_be_block_cw_dispatch_sync(be_lun, io); break; case WRITE_SAME_10: case WRITE_SAME_16: Modified: stable/10/sys/cam/ctl/ctl_cmd_table.c ============================================================================== --- stable/10/sys/cam/ctl/ctl_cmd_table.c Wed Aug 19 17:43:36 2015 (r286930) +++ stable/10/sys/cam/ctl/ctl_cmd_table.c Wed Aug 19 17:47:47 2015 (r286931) @@ -788,7 +788,7 @@ const struct ctl_cmd_entry ctl_cmd_table {ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_NONE, CTL_LUN_PAT_NONE, - 10, {0, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, + 10, {0x02, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, /* 36 LOCK UNLOCK CACHE(10) */ {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, @@ -1141,7 +1141,7 @@ const struct ctl_cmd_entry ctl_cmd_table {ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_NONE, CTL_LUN_PAT_NONE, - 16, {0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 16, {0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, /* 92 LOCK UNLOCK CACHE(16) */ From owner-svn-src-stable@freebsd.org Wed Aug 19 17:51:04 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 604C69BEED8; Wed, 19 Aug 2015 17:51:04 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4F04AEEA; Wed, 19 Aug 2015 17:51:04 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7JHp456061349; Wed, 19 Aug 2015 17:51:04 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7JHp4ik061348; Wed, 19 Aug 2015 17:51:04 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201508191751.t7JHp4ik061348@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Wed, 19 Aug 2015 17:51:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286932 - head/release/doc/en_US.ISO8859-1/errata stable/10/release/doc/en_US.ISO8859-1/errata stable/9/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Aug 2015 17:51:04 -0000 Author: gjb Date: Wed Aug 19 17:51:03 2015 New Revision: 286932 URL: https://svnweb.freebsd.org/changeset/base/286932 Log: Remove a broken link. While here, prefer https where possible. Sponsored by: The FreeBSD Foundation Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Changes in other areas also in this revision: Modified: head/release/doc/en_US.ISO8859-1/errata/article.xml stable/9/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/10/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Aug 19 17:47:47 2015 (r286931) +++ stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Wed Aug 19 17:51:03 2015 (r286932) @@ -63,7 +63,7 @@ the Internet and should be consulted as the current errata for this release. These other copies of the errata are located at , plus any + xlink:href="https://www.FreeBSD.org/releases/" />, plus any sites which keep up-to-date mirrors of this location. Source and binary snapshots of &os; &release.branch; also @@ -71,8 +71,7 @@ the snapshot). For a list of all &os; CERT security advisories, see or . + xlink:href="https://www.FreeBSD.org/security/"/>. From owner-svn-src-stable@freebsd.org Wed Aug 19 17:51:05 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CFFE19BEEE2; Wed, 19 Aug 2015 17:51:05 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A61E8EF2; Wed, 19 Aug 2015 17:51:05 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7JHp5Xu061361; Wed, 19 Aug 2015 17:51:05 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7JHp5Aq061360; Wed, 19 Aug 2015 17:51:05 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201508191751.t7JHp5Aq061360@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Wed, 19 Aug 2015 17:51:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r286932 - head/release/doc/en_US.ISO8859-1/errata stable/10/release/doc/en_US.ISO8859-1/errata stable/9/release/doc/en_US.ISO8859-1/errata X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Aug 2015 17:51:05 -0000 Author: gjb Date: Wed Aug 19 17:51:03 2015 New Revision: 286932 URL: https://svnweb.freebsd.org/changeset/base/286932 Log: Remove a broken link. While here, prefer https where possible. Sponsored by: The FreeBSD Foundation Modified: stable/9/release/doc/en_US.ISO8859-1/errata/article.xml Changes in other areas also in this revision: Modified: head/release/doc/en_US.ISO8859-1/errata/article.xml stable/10/release/doc/en_US.ISO8859-1/errata/article.xml Modified: stable/9/release/doc/en_US.ISO8859-1/errata/article.xml ============================================================================== --- stable/9/release/doc/en_US.ISO8859-1/errata/article.xml Wed Aug 19 17:47:47 2015 (r286931) +++ stable/9/release/doc/en_US.ISO8859-1/errata/article.xml Wed Aug 19 17:51:03 2015 (r286932) @@ -69,14 +69,14 @@ out of date by definition, but other copies are kept updated on the Internet and should be consulted as the current errata for this release. These other copies of the - errata are located at http://www.FreeBSD.org/releases/, plus any sites + errata are located at https://www.FreeBSD.org/releases/, plus any sites which keep up-to-date mirrors of this location. Source and binary snapshots of &os; &release.branch; also contain up-to-date copies of this document (as of the time of the snapshot). - For a list of all &os; CERT security advisories, see http://www.FreeBSD.org/security/ or ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/. + For a list of all &os; CERT security advisories, see https://www.FreeBSD.org/security/. From owner-svn-src-stable@freebsd.org Wed Aug 19 18:32:37 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 265129BE89E; Wed, 19 Aug 2015 18:32:37 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id F03B5CF3; Wed, 19 Aug 2015 18:32:36 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7JIWaal079610; Wed, 19 Aug 2015 18:32:36 GMT (envelope-from delphij@FreeBSD.org) Received: (from delphij@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7JIWa2e079609; Wed, 19 Aug 2015 18:32:36 GMT (envelope-from delphij@FreeBSD.org) Message-Id: <201508191832.t7JIWa2e079609@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: delphij set sender to delphij@FreeBSD.org using -f From: Xin LI Date: Wed, 19 Aug 2015 18:32:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286935 - stable/10/usr.sbin/pkg X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Aug 2015 18:32:37 -0000 Author: delphij Date: Wed Aug 19 18:32:36 2015 New Revision: 286935 URL: https://svnweb.freebsd.org/changeset/base/286935 Log: Instant-MFC r286933: Issue warning and refuse to proceed further if the configured repository signature_type is unsupported by bootstrap pkg(7). Previously, when signature_type specified an unsupported method, the bootstrap pkg(7) would proceed like when signature_type is "none". MITM attackers may be able to use this vulnerability and bypass validation and install their own versions of pkg(8). At this time, only fingerprint and none are supported by the bootstrap pkg(7). FreeBSD's official pkg(8) repository uses the fingerprint method and is therefore unaffected. Errata candidate. Modified: stable/10/usr.sbin/pkg/pkg.c Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/pkg/pkg.c ============================================================================== --- stable/10/usr.sbin/pkg/pkg.c Wed Aug 19 18:32:12 2015 (r286934) +++ stable/10/usr.sbin/pkg/pkg.c Wed Aug 19 18:32:36 2015 (r286935) @@ -767,7 +767,13 @@ bootstrap_pkg(bool force) goto fetchfail; if (signature_type != NULL && - strcasecmp(signature_type, "FINGERPRINTS") == 0) { + strcasecmp(signature_type, "NONE") != 0) { + if (strcasecmp(signature_type, "FINGERPRINTS") != 0) { + warnx("Signature type %s is not supported for " + "bootstrapping.", signature_type); + goto cleanup; + } + snprintf(tmpsig, MAXPATHLEN, "%s/pkg.txz.sig.XXXXXX", getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP); snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz.sig", @@ -855,7 +861,13 @@ bootstrap_pkg_local(const char *pkgpath, goto cleanup; } if (signature_type != NULL && - strcasecmp(signature_type, "FINGERPRINTS") == 0) { + strcasecmp(signature_type, "NONE") != 0) { + if (strcasecmp(signature_type, "FINGERPRINTS") != 0) { + warnx("Signature type %s is not supported for " + "bootstrapping.", signature_type); + goto cleanup; + } + snprintf(path, sizeof(path), "%s.sig", pkgpath); if ((fd_sig = open(path, O_RDONLY)) == -1) { From owner-svn-src-stable@freebsd.org Wed Aug 19 18:33:26 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CE4F99BE8F2; Wed, 19 Aug 2015 18:33:26 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A409FE42; Wed, 19 Aug 2015 18:33:26 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7JIXQXk079718; Wed, 19 Aug 2015 18:33:26 GMT (envelope-from delphij@FreeBSD.org) Received: (from delphij@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7JIXQqi079717; Wed, 19 Aug 2015 18:33:26 GMT (envelope-from delphij@FreeBSD.org) Message-Id: <201508191833.t7JIXQqi079717@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: delphij set sender to delphij@FreeBSD.org using -f From: Xin LI Date: Wed, 19 Aug 2015 18:33:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r286936 - stable/9/usr.sbin/pkg X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Aug 2015 18:33:26 -0000 Author: delphij Date: Wed Aug 19 18:33:25 2015 New Revision: 286936 URL: https://svnweb.freebsd.org/changeset/base/286936 Log: Instant-MFC r286933: Issue warning and refuse to proceed further if the configured repository signature_type is unsupported by bootstrap pkg(7). Previously, when signature_type specified an unsupported method, the bootstrap pkg(7) would proceed like when signature_type is "none". MITM attackers may be able to use this vulnerability and bypass validation and install their own versions of pkg(8). At this time, only fingerprint and none are supported by the bootstrap pkg(7). FreeBSD's official pkg(8) repository uses the fingerprint method and is therefore unaffected. Errata candidate. Modified: stable/9/usr.sbin/pkg/pkg.c Directory Properties: stable/9/usr.sbin/pkg/ (props changed) Modified: stable/9/usr.sbin/pkg/pkg.c ============================================================================== --- stable/9/usr.sbin/pkg/pkg.c Wed Aug 19 18:32:36 2015 (r286935) +++ stable/9/usr.sbin/pkg/pkg.c Wed Aug 19 18:33:25 2015 (r286936) @@ -750,7 +750,13 @@ bootstrap_pkg(bool force) goto fetchfail; if (signature_type != NULL && - strcasecmp(signature_type, "FINGERPRINTS") == 0) { + strcasecmp(signature_type, "NONE") != 0) { + if (strcasecmp(signature_type, "FINGERPRINTS") != 0) { + warnx("Signature type %s is not supported for " + "bootstrapping.", signature_type); + goto cleanup; + } + snprintf(tmpsig, MAXPATHLEN, "%s/pkg.txz.sig.XXXXXX", getenv("TMPDIR") ? getenv("TMPDIR") : _PATH_TMP); snprintf(url, MAXPATHLEN, "%s/Latest/pkg.txz.sig", @@ -835,7 +841,13 @@ bootstrap_pkg_local(const char *pkgpath, return (-1); } if (signature_type != NULL && - strcasecmp(signature_type, "FINGERPRINTS") == 0) { + strcasecmp(signature_type, "NONE") != 0) { + if (strcasecmp(signature_type, "FINGERPRINTS") != 0) { + warnx("Signature type %s is not supported for " + "bootstrapping.", signature_type); + goto cleanup; + } + snprintf(path, sizeof(path), "%s.sig", pkgpath); if ((fd_sig = open(path, O_RDONLY)) == -1) { From owner-svn-src-stable@freebsd.org Thu Aug 20 08:34:14 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CBD2F9BEDF1; Thu, 20 Aug 2015 08:34:14 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B49EA11E7; Thu, 20 Aug 2015 08:34:14 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7K8YEOw025588; Thu, 20 Aug 2015 08:34:14 GMT (envelope-from ed@FreeBSD.org) Received: (from ed@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7K8YE3V025587; Thu, 20 Aug 2015 08:34:14 GMT (envelope-from ed@FreeBSD.org) Message-Id: <201508200834.t7K8YE3V025587@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ed set sender to ed@FreeBSD.org using -f From: Ed Schouten Date: Thu, 20 Aug 2015 08:34:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286952 - stable/10/usr.bin/last X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Aug 2015 08:34:14 -0000 Author: ed Date: Thu Aug 20 08:34:13 2015 New Revision: 286952 URL: https://svnweb.freebsd.org/changeset/base/286952 Log: MFC r285742: Unbreak "last reboot". According to the last(1) man page, the "reboot" pseudo-user should print all system reboot entries. This got broken by the utmpx import, as records are typed. Re-add support for "last reboot" by specifically matching against SHUTDOWN_TIME and BOOT_TIME records. PR: 168844 Submitted by: matthew@ Modified: stable/10/usr.bin/last/last.c Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.bin/last/last.c ============================================================================== --- stable/10/usr.bin/last/last.c Thu Aug 20 07:41:33 2015 (r286951) +++ stable/10/usr.bin/last/last.c Thu Aug 20 08:34:13 2015 (r286952) @@ -64,6 +64,7 @@ __FBSDID("$FreeBSD$"); typedef struct arg { char *name; /* argument */ +#define REBOOT_TYPE -1 #define HOST_TYPE -2 #define TTY_TYPE -3 #define USER_TYPE -4 @@ -180,6 +181,8 @@ main(int argc, char *argv[]) if (argc) { setlinebuf(stdout); for (argv += optind; *argv; ++argv) { + if (strcmp(*argv, "reboot") == 0) + addarg(REBOOT_TYPE, *argv); #define COMPATIBILITY #ifdef COMPATIBILITY /* code to allow "last p5" to work */ @@ -389,6 +392,11 @@ want(struct utmpx *bp) for (step = arglist; step; step = step->next) switch(step->type) { + case REBOOT_TYPE: + if (bp->ut_type == BOOT_TIME || + bp->ut_type == SHUTDOWN_TIME) + return (YES); + break; case HOST_TYPE: if (!strcasecmp(step->name, bp->ut_host)) return (YES); From owner-svn-src-stable@freebsd.org Thu Aug 20 14:03:04 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 647A59BEFC2; Thu, 20 Aug 2015 14:03:04 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 54AF21CC6; Thu, 20 Aug 2015 14:03:04 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7KE34i1063480; Thu, 20 Aug 2015 14:03:04 GMT (envelope-from loos@FreeBSD.org) Received: (from loos@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7KE34kG063479; Thu, 20 Aug 2015 14:03:04 GMT (envelope-from loos@FreeBSD.org) Message-Id: <201508201403.t7KE34kG063479@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: loos set sender to loos@FreeBSD.org using -f From: Luiz Otavio O Souza Date: Thu, 20 Aug 2015 14:03:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r286961 - stable/10/sys/netpfil/pf X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Aug 2015 14:03:04 -0000 Author: loos Date: Thu Aug 20 14:03:03 2015 New Revision: 286961 URL: https://svnweb.freebsd.org/changeset/base/286961 Log: MFC r286862: Fix the copy of addresses passed from userland in table replace command. The size2 is the maximum userland buffer size (used when the addresses are copied back to userland). Obtained from: pfSense Sponsored by: Rubicon Communications (Netgate) Modified: stable/10/sys/netpfil/pf/pf_ioctl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netpfil/pf/pf_ioctl.c ============================================================================== --- stable/10/sys/netpfil/pf/pf_ioctl.c Thu Aug 20 13:37:08 2015 (r286960) +++ stable/10/sys/netpfil/pf/pf_ioctl.c Thu Aug 20 14:03:03 2015 (r286961) @@ -2718,8 +2718,7 @@ DIOCCHANGEADDR_error: error = ENODEV; break; } - totlen = (io->pfrio_size + io->pfrio_size2) * - sizeof(struct pfr_addr); + totlen = io->pfrio_size * sizeof(struct pfr_addr); pfras = malloc(totlen, M_TEMP, M_WAITOK); error = copyin(io->pfrio_buffer, pfras, totlen); if (error) { From owner-svn-src-stable@freebsd.org Sat Aug 22 00:47:05 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E5F459BFDC3; Sat, 22 Aug 2015 00:47:05 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CB3A11194; Sat, 22 Aug 2015 00:47:05 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7M0l5Sk081307; Sat, 22 Aug 2015 00:47:05 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7M0l55E081306; Sat, 22 Aug 2015 00:47:05 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201508220047.t7M0l55E081306@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 22 Aug 2015 00:47:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r287010 - stable/10/share/misc X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Aug 2015 00:47:06 -0000 Author: bapt Date: Sat Aug 22 00:47:05 2015 New Revision: 287010 URL: https://svnweb.freebsd.org/changeset/base/287010 Log: MFC: r286805 Update to use the latest version of the PCI IDs Repository. Modified: stable/10/share/misc/pci_vendors Directory Properties: stable/10/ (props changed) Modified: stable/10/share/misc/pci_vendors ============================================================================== --- stable/10/share/misc/pci_vendors Fri Aug 21 22:02:22 2015 (r287009) +++ stable/10/share/misc/pci_vendors Sat Aug 22 00:47:05 2015 (r287010) @@ -3,8 +3,8 @@ # # List of PCI ID's # -# Version: 2012.10.24 -# Date: 2012-10-24 03:15:01 +# Version: 2015.07.31 +# Date: 2015-07-31 03:15:02 # # Maintained by Martin Mares and other volunteers from the # PCI ID Project at http://pci-ids.ucw.cz/. @@ -23,44 +23,23 @@ # device device_name <-- single tab # subvendor subdevice subsystem_name <-- two tabs -0000 Gammagraphx, Inc. (or missing ID) -0010 Allied Telesis, Inc +0010 Allied Telesis, Inc (Wrong ID) # This is a relabelled RTL-8139 8139 AT-2500TX V3 Ethernet -001a Ascend Communications, Inc. 001c PEAK-System Technik GmbH 0001 PCAN-PCI CAN-Bus controller 001c 0004 2 Channel CAN Bus SJC1000 001c 0005 2 Channel CAN Bus SJC1000 (Optically Isolated) -0033 Paradyne corp. 003d Lockheed Martin-Marietta Corp # Real TJN ID is e159, but they got it wrong several times --mj 0059 Tiger Jet Network Inc. (Wrong ID) 0070 Hauppauge computer works Inc. - 0003 WinTV PVR-250 - 0009 WinTV PVR-150 - 0801 WinTV PVR-150 - 0807 WinTV PVR-150 - 4000 WinTV PVR-350 - 4001 WinTV PVR-250 (v1) - 4009 WinTV PVR-250 - 4800 WinTV PVR-350 - 4801 WinTV PVR-250 MCE - 4803 WinTV PVR-250 - 7444 WinTV HVR-1600 7801 WinTV HVR-1800 MCE - 8003 WinTV PVR-150 - 8801 WinTV PVR-150 - c108 WinTV-HVR-4400-HD model 1278 - c801 WinTV PVR-150 - e807 WinTV PVR-500 MCE (1st tuner) - e817 WinTV PVR-500 MCE (2nd tuner) 0071 Nebula Electronics Ltd. 0095 Silicon Image, Inc. (Wrong ID) 0680 Ultra ATA/133 IDE RAID CONTROLLER CARD # Wrong ID used in subsystem ID of the TELES.S0/PCI 2.x ISDN adapter 00a7 Teles AG (Wrong ID) -00f5 BFG Technologies, Inc. 0100 Ncipher Corp Ltd 0123 General Dynamics # 018a is not LevelOne but there is a board misprogrammed @@ -70,72 +49,28 @@ 021b Compaq Computer Corporation 8139 HNE-300 (RealTek RTL8139c) [iPaq Networking] 0270 Hauppauge computer works Inc. (Wrong ID) -0291 Davicom Semiconductor, Inc. - 8212 DM9102A(DM9102AE, SM9102AF) Ethernet 100/10 MBit(Rev 40) # SpeedStream is Efficient Networks, Inc, a Siemens Company 02ac SpeedStream 1012 1012 PCMCIA 10/100 Ethernet Card [RTL81xx] -02e0 XFX Pine Group Inc 0303 Hewlett-Packard Company (Wrong ID) -0308 ZyXEL Communications Corporation +0308 ZyXEL Communications Corporation (Wrong ID) 0315 SK-Electronics Co., Ltd. -0357 TTTech AG +0357 TTTech Computertechnik AG (Wrong ID) 000a TTP-Monitoring Card V2.0 -036f Trigem Computer Inc. -0403 Future Technology Devices International Ltd 0432 SCM Microsystems, Inc. 0001 Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet] -0482 Kyocera -# vendor code used for (at a minimum) RSA cards -04b3 IBM Corp. - 4001 Remote System Administration device [RSA2] -050d Belkin -05a9 OmniVision - 8519 OV519 series -05e3 CyberDoor - 0701 CBD516 -066f SigmaTel - 3410 SMTP3410 - 3500 SMTP3500 0675 Dynalink 1700 IS64PH ISDN Adapter 1702 IS64PH ISDN Adapter 1703 ISDN Adapter (PCI Bus, DV, W) 1704 ISDN Adapter (PCI Bus, D, C) -069d Hughes Network Systems (HNS) 0721 Sapphire, Inc. 0777 Ubiquiti Networks, Inc. -# Atheros, 6th Generation, AR5414, 802.11a, 5GHz - 3005 XtremeRange5 0795 Wired Inc. 6663 Butane II (MPEG2 encoder board) 6666 MediaPress (MPEG2 encoder board) -07ca AVerMedia Technologies Inc. -# Expresscard DVB-T tuner sold by Fujitsu for notebooks - 534a Slim mobile Express DVB-T (Fujitsu) - a301 AVerTV 301 - b808 AVerTV DVB-T Volar (USB 2.0) -07d0 ITT Geospatial Systems 07d1 D-Link System Inc -07e2 ELMEG Communication Systems GmbH -0842 NPG, Personal Grand Technology -# Nee Gemplus International, SA -08e6 Gemalto NV -08ff AuthenTec - afe4 [Anchor] AF-S2 FingerLoc Sensor Module 0925 VIA Technologies, Inc. (Wrong ID) - 1234 VT82C686/A/B USB Controller -093a PixArt Imaging Inc. - 010e Innovage Mini Digital Camera - 010f SDC-300 Webcam - 020f Digital Photo Viewer - 2468 CIF Single Chip - 2600 PAC7311 - 2603 Philips Webcam SPC500NC - 2608 Maxell MaxCam RotaWeb - 2620 C3 Tech Mod. 153 -09c1 Arris - 0704 CM 200E Cable Modem 0a89 BREA Technologies Inc 0b0b Rhino Equipment Corp. 0105 Rhino R1T1 @@ -152,9 +87,6 @@ 0905 R1T3 Single T3 Digital Telephony Card 0906 RCB24FXX 24-channel modular analog telphony card 0a06 RCB672FXX 672-channel modular analog telphony card -0b3d Brontes Technologies -0ccd TerraTec Electronic GmbH - 0038 Cinergy T^2 DVB-T Receiver 0e11 Compaq Computer Corporation 0001 PCI to EISA Bridge 0002 PCI to ISA Bridge @@ -262,7 +194,6 @@ c000 Remote Insight Lights-Out Edition f130 NetFlex-3/P ThunderLAN 1.0 f150 NetFlex-3/P ThunderLAN 2.3 -0e21 Cowon Systems, Inc. 0e55 HaSoTec GmbH 0eac SHF Communication Technologies AG 0008 Ethernet Powerlink Managing Node 01 @@ -328,6 +259,7 @@ 4c53 1300 P017 mezzanine (32-bit PMC) 4c53 1310 P017 mezzanine (64-bit PMC) 002f MegaRAID SAS 2208 IOV [Thunderbolt] + 1028 1f39 SPERC8-e 1028 1f3e SPERC 8 0030 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI 0e11 00da ProLiant ML 350 @@ -381,8 +313,23 @@ 005b MegaRAID SAS 2208 [Thunderbolt] 1000 9265 MegaRAID SAS 9265-8i 1000 9266 MegaRAID SAS 9266-8i + 1000 9267 MegaRAID SAS 9267-8i 1000 9268 MegaRAID SAS 9265CV-8i / 9270CV-8i + 1000 9269 MegaRAID SAS 9266-4i + 1000 9270 MegaRAID SAS 9270-8i + 1000 9271 MegaRAID SAS 9271-8i + 1000 9272 MegaRAID SAS 9272-8i + 1000 9273 MegaRAID SAS 9270CV-8i + 1000 9274 MegaRAID SAS 9270-4i + 1000 9275 MegaRAID SAS 9271-8iCC + 1000 9276 MegaRAID SAS 9271-4i + 1000 9285 MegaRAID SAS 9285-8e + 1000 9288 MegaRAID SAS 9285CV-8e + 1000 9290 MegaRAID SAS 9286-8e + 1000 9291 MegaRAID SAS 9286CV-8e + 1000 9295 MegaRAID SAS 9286CV-8eCC 1014 040b ServeRAID M5110 SAS/SATA Controller + 1014 040c ServeRAID M5120 SAS/SATA Controller 1014 0412 ServeRAID M5110e SAS/SATA Controller 1028 1f2d PERC H810 Adapter 1028 1f30 PERC H710 Embedded @@ -392,11 +339,31 @@ 1028 1f35 PERC H710 Adapter 1028 1f37 PERC H710 Mini (for blades) 1028 1f38 PERC H710 Mini (for monolithics) + 15d9 0690 LSI MegaRAID ROMB + 8086 3510 RMS25PB080 RAID Controller 8086 3513 RMS25CB080 RAID Controller 005c SAS1064A PCI-X Fusion-MPT SAS 005d MegaRAID SAS-3 3108 [Invader] + 1000 9361 MegaRAID SAS 9361-8i + 1028 1f41 PERC H830 Adapter + 1028 1f42 PERC H730P Adapter + 1028 1f43 PERC H730 Adapter + 1028 1f47 PERC H730P Mini + 1028 1f48 PERC H730P Mini (for blades) + 1028 1f49 PERC H730 Mini + 1028 1f4a PERC H730 Mini (for blades) + 1028 1f4d PERC FD33xS + 1028 1f4f PERC H730P Slim + 1028 1f54 PERC FD33xD + 17aa 1052 ThinkServer RAID 720i + 17aa 1053 ThinkServer RAID 720ix 005e SAS1066 PCI-X Fusion-MPT SAS 005f MegaRAID SAS-3 3008 [Fury] + 1028 1f44 PERC H330 Adapter + 1028 1f4b PERC H330 Mini + 1028 1f4c PERC H330 Mini (for blades) + 1028 1f4d PERC H330 Embedded (for monolithic) + 1054 306a SAS 3004 iMR ROMB 0060 MegaRAID SAS 1078 1000 1006 MegaRAID SAS 8888ELP 1000 100a MegaRAID SAS 8708ELP @@ -460,8 +427,11 @@ 1137 0073 2008 ROMB 1137 00b0 UCSC RAID SAS 2008M-8i 1137 00b1 UCSC RAID SAS 2008M-8i + 1137 00c2 UCS E-Series Double Wide + 1137 00c3 UCS E-Series Single Wide 15d9 0400 Supermicro SMC2008-iMR 1734 1177 RAID Ctrl SAS 6G 0/1 (D2607) + 17aa 1051 ThinkServer RAID 510i 8086 350d RMS2AF040 RAID Controller 8086 9240 RAID Controller RS2WC080 8086 9241 RAID Controller RS2WC040 @@ -522,6 +492,8 @@ 0095 SAS3108 PCI-Express Fusion-MPT SAS-3 0096 SAS3004 PCI-Express Fusion-MPT SAS-3 0097 SAS3008 PCI-Express Fusion-MPT SAS-3 + 1028 1f45 12GB/s HBA internal + 1028 1f46 12Gbps HBA 0407 MegaRAID 1000 0530 MegaRAID 530 SCSI 320-0X RAID Controller 1000 0531 MegaRAID 531 SCSI 320-4X RAID Controller @@ -605,6 +577,7 @@ 1028 0533 PowerEdge Expandable RAID Controller 4/QC 8086 0520 MegaRAID RAID Controller SRCU41L 8086 0523 MegaRAID RAID Controller SRCS16 + 3050 SAS2008 PCI-Express Fusion-MPT SAS-2 6001 DX1 Multiformat Broadcast HD/SD Encoder/Decoder 1001 Kolter Electronic 0010 PCI 1616 Measurement card with 32 digital I/O lines @@ -616,91 +589,112 @@ 0016 PCI-MFB Analogue I/O board 0017 PROTO-3 PCI Prototyping board 9100 INI-9100/9100W SCSI Host -# nee ATI Technologies Inc. -1002 Advanced Micro Devices [AMD] nee ATI - 1314 Wrestler HDMI Audio [Radeon HD 6250/6310] - 174b 1001 Sapphire PURE Fusion Mini +# nee ATI Technologies, Inc. +1002 Advanced Micro Devices, Inc. [AMD/ATI] + 1304 Kaveri + 1305 Kaveri + 1306 Kaveri + 1307 Kaveri + 1308 Kaveri HDMI/DP Audio Controller + 1309 Kaveri [Radeon R6/R7 Graphics] + 130a Kaveri [Radeon R6 Graphics] + 130b Kaveri [Radeon R4 Graphics] + 130c Kaveri [Radeon R7 Graphics] + 130d Kaveri [Radeon R6 Graphics] + 130e Kaveri [Radeon R5 Graphics] + 130f Kaveri [Radeon R7 Graphics] + 1310 Kaveri + 1311 Kaveri + 1312 Kaveri + 1313 Kaveri [Radeon R7 Graphics] + 1314 Wrestler HDMI Audio + 174b 1001 PURE Fusion Mini + 1315 Kaveri [Radeon R5 Graphics] + 1316 Kaveri [Radeon R5 Graphics] + 1317 Kaveri + 1318 Kaveri [Radeon R5 Graphics] + 131b Kaveri [Radeon R4 Graphics] + 131c Kaveri [Radeon R7 Graphics] + 131d Kaveri [Radeon R6 Graphics] 1714 BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] 103c 168b ProBook 4535s - 3150 M24 1P [Radeon Mobility X600] + 3150 RV380/M24 [Mobility Radeon X600] 103c 0934 nx8220 - 3151 M24 [FireMV 2400] - 3152 RV370 [Mobility Radeon X300] - 3154 M24GL [Mobility FireGL V3200] - 3171 M24 [FireMV 2400] (Secondary) - 3e50 RV380 0x3e50 [Radeon X600] - 3e54 RV380 0x3e54 [FireGL V3200] + 3151 RV380 GL [FireMV 2400] + 3152 RV370/M22 [Mobility Radeon X300] + 3154 RV380/M24 GL [Mobility FireGL V3200] + 3155 RV380 GL [FireMV 2400] + 3171 RV380 GL [FireMV 2400] (Secondary) + 3e50 RV380 [Radeon X600] + 3e54 RV380 GL [FireGL V3200] 3e70 RV380 [Radeon X600] (Secondary) - 4136 RS100 [Radeon IGP320(M)] - 4137 RS200 [Radeon IGP330/340/350] - 4144 R300 AD [Radeon 9500 Pro] - 4145 R300 AE [Radeon 9700 Pro] - 4146 R300 AF [Radeon 9700 Pro] - 4147 R300 AG [FireGL Z1/X1] - 4148 R350 AH [Radeon 9800] - 4149 R350 AI [Radeon 9800] - 414a R350 AJ [Radeon 9800] - 414b R350 AK [FireGL X2] - 4150 RV350 AP [Radeon 9600] + 4136 RS100 [Mobility IGP 320M] + 4137 RS200 [Radeon IGP 340] + 4144 R300 [Radeon 9500] + 4146 R300 [Radeon 9700 PRO] + 4147 R300 GL [FireGL Z1] + 4148 R350 [Radeon 9800/9800 SE] + 4150 RV350 [Radeon 9550/9600/X1050 Series] 1002 0002 R9600 Pro primary (Asus OEM for HP) 1002 0003 R9600 Pro secondary (Asus OEM for HP) 1002 4722 All-in-Wonder 2006 AGP Edition - 1458 4024 Giga-Byte GV-R96128D (Primary) - 148c 2064 PowerColor R96A-C3N - 148c 2066 PowerColor R96A-C3N - 174b 7c19 Sapphire Atlantis Radeon 9600 Pro - 174b 7c29 GC-R9600PRO [Sapphire] (Primary) + 1458 4024 GV-R96128D + 148c 2064 R96A-C3N + 148c 2066 R96A-C3N + 174b 7c19 Atlantis Radeon 9600 Pro + 174b 7c29 GC-R9600PRO 17ee 2002 Radeon 9600 256Mb Primary 18bc 0101 GC-R9600PRO (Primary) - 4151 RV350 AQ [Radeon 9600] + 4151 RV350 [Radeon 9600 Series] 1043 c004 A9600SE - 4152 RV350 AR [Radeon 9600] + 174b 7c37 Radeon 9600 SE + 4152 RV360 [Radeon 9600/X1050 Series] 1002 0002 Radeon 9600XT 1002 4772 All-in-Wonder 9600 XT 1043 c002 Radeon 9600 XT TVD 1043 c01a A9600XT/TD - 174b 7c29 Sapphire Radeon 9600XT + 1462 9510 RX9600XT (MS-8951) + 174b 7c29 Radeon 9600XT 1787 4002 Radeon 9600 XT - 4153 RV350 AS [Radeon 9550] + 4153 RV350 [Radeon 9550] 1043 010c A9550GE/TD 1462 932c RX9550SE-TD128 (MS-8932) - 4154 RV350 AT [FireGL T2] - 4155 RV350 AU [FireGL T2] - 4156 RV350 AV [FireGL T2] - 4157 RV350 AW [FireGL T2] - 4158 68800AX [Mach32] - 4164 R300 AD [Radeon 9500 Pro] (Secondary) - 4165 R300 AE [Radeon 9700 Pro] (Secondary) - 4166 R300 AF [Radeon 9700 Pro] (Secondary) - 4168 R350 [Radeon 9800] (Secondary) - 4170 RV350 AP [Radeon 9600] (Secondary) + 4154 RV350 GL [FireGL T2] + 4155 RV350 [Radeon 9600] + 4157 RV350 GL [FireGL T2] + 4158 68800AX [Graphics Ultra Pro PCI] + 4164 R300 [Radeon 9500 PRO] (Secondary) + 4165 R300 [Radeon 9700 PRO] (Secondary) + 4166 R300 [Radeon 9700 PRO] (Secondary) + 4168 RV350 [Radeon 9800 SE] (Secondary) + 4170 RV350 [Radeon 9550/9600/X1050 Series] (Secondary) 1002 0003 R9600 Pro secondary (Asus OEM for HP) 1002 4723 All-in-Wonder 2006 AGP Edition (Secondary) - 1458 4025 Giga-Byte GV-R96128D (Secondary) - 148c 2067 PowerColor R96A-C3N (Secondary) - 174b 7c28 GC-R9600PRO [Sapphire] (Secondary) + 1458 4025 GV-R96128D (Secondary) + 148c 2067 R96A-C3N (Secondary) + 174b 7c28 GC-R9600PRO (Secondary) 17ee 2003 Radeon 9600 256Mb (Secondary) 18bc 0100 GC-R9600PRO (Secondary) - 4171 RV350 AQ [Radeon 9600] (Secondary) + 4171 RV350 [Radeon 9600] (Secondary) 1043 c005 A9600SE (Secondary) - 4172 RV350 AR [Radeon 9600] (Secondary) + 174b 7c36 Radeon 9600 SE (secondary) + 4172 RV350 [Radeon 9600/X1050 Series] (Secondary) 1002 0003 Radeon 9600XT (Secondary) 1002 4773 All-in-Wonder 9600 XT (Secondary) 1043 c003 A9600XT (Secondary) 1043 c01b A9600XT/TD (Secondary) - 174b 7c28 Sapphire Radeon 9600XT (Secondary) + 174b 7c28 Radeon 9600XT (Secondary) 1787 4003 Radeon 9600 XT (Secondary) - 4173 RV350 AS [Radeon 9550] (Secondary) + 4173 RV350 [Radeon 9550] (Secondary) 1043 010d A9550GE/TD (Secondary) - 4237 RS250 [Radeon Mobility 7000 IGP] - 4242 R200 BB [Radeon All in Wonder 8500DV] + 4242 R200 [All-In-Wonder Radeon 8500 DV] 1002 02aa Radeon 8500 AIW DV Edition - 4243 R200 BC [Radeon All in Wonder 8500] - 4336 RS100 [Radeon IGP320M] + 4243 R200 PCI Bridge [All-in-Wonder Radeon 8500DV] + 4336 RS100 [Radeon IGP 320M] 1002 4336 Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M) 103c 0024 Pavilion ze4400 builtin Video 161f 2029 eMachines M5312 builtin Video - 4337 RS200 [Radeon IGP330M/340M/350M] + 4337 RS200M [Radeon IGP 330M/340M/345M/350M] 1014 053a ThinkPad R40e 103c 0850 Radeon IGP 345M 4341 IXP150 AC'97 Audio Controller @@ -711,7 +705,7 @@ 4349 Dual Channel Bus Master PCI IDE Controller 434d IXP AC'97 Modem 4353 SMBus - 4354 215CT [Mach64 CT] + 4354 215CT [Mach64 CT PCI] 4358 210888CX [Mach64 CX] 4361 IXP SB300 AC'97 Audio Controller 4363 SMBus @@ -724,36 +718,36 @@ 105b 0c81 Realtek ALC 653 107b 0300 MX6421 1462 0131 MS-1013 Notebook - 4371 IXP SB400 PCI-PCI Bridge + 4371 IXP SB4x0 PCI-PCI Bridge 103c 308b MX6125 1462 7217 Aspire L250 - 4372 IXP SB400 SMBus Controller + 4372 IXP SB4x0 SMBus Controller 1025 0080 Aspire 5024WLMMi 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 0131 MS-1013 Notebook 1462 7217 Aspire L250 - 4373 IXP SB400 USB2 Host Controller + 4373 IXP SB4x0 USB2 Host Controller 1025 0080 Aspire 5024WLMMi 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 7217 Aspire L250 - 4374 IXP SB400 USB Host Controller + 4374 IXP SB4x0 USB Host Controller 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 7217 Aspire L250 - 4375 IXP SB400 USB Host Controller + 4375 IXP SB4x0 USB Host Controller 1025 0080 Aspire 5024WLMMi 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 7217 Aspire L250 - 4376 IXP SB400 IDE Controller + 4376 IXP SB4x0 IDE Controller 1025 0080 Aspire 5024WLMMi 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 1462 0131 MS-1013 Notebook 1462 7217 Aspire L250 - 4377 IXP SB400 PCI-ISA Bridge + 4377 IXP SB4x0 PCI-ISA Bridge 1025 0080 Aspire 5024WLMi 103c 2a20 Pavilion t3030.de Desktop PC 103c 308b MX6125 @@ -762,7 +756,7 @@ 1025 0080 Aspire 5024WLMMi 103c 308b MX6125 1462 0131 MS-1013 Notebook - 4379 IXP SB400 Serial ATA Controller + 4379 IXP SB4x0 Serial ATA Controller 1462 7141 Aspire L250 437a IXP SB400 Serial ATA Controller 1002 4379 4379 Serial ATA Controller @@ -780,9 +774,10 @@ 1458 b005 Gigabyte GA-MA69G-S3H Motherboard 1462 7327 K9AG Neo2 17f2 5999 KI690-AM2 Motherboard - 4381 SB400 SATA Controller (RAID 5 mode) + 4381 SB600 SATA Controller (RAID 5 mode) 4382 SB600 AC97 Audio 4383 SBx00 Azalia (Intel HDA) + 1019 2120 A785GM-M 103c 1611 Pavilion DM1Z-3000 103c 280a DC5750 Microtower 1043 8230 M3A78-EH Motherboard @@ -794,6 +789,7 @@ 17f2 5000 KI690-AM2 Motherboard 4384 SBx00 PCI to PCI Bridge 4385 SBx00 SMBus Controller + 1019 2120 A785GM-M 103c 1611 Pavilion DM1Z-3000 103c 280a DC5750 Microtower 1043 82ef M3A78-EH Motherboard @@ -802,7 +798,7 @@ 1458 4385 GA-MA770-DS3rev2.0 Motherboard 1462 7368 K9AG Neo2 15d9 a811 H8DGU - 174b 1001 Sapphire PURE Fusion Mini + 174b 1001 PURE Fusion Mini 17f2 5000 KI690-AM2 Motherboard 4386 SB600 USB Controller (EHCI) 103c 280a DC5750 Microtower @@ -855,45 +851,51 @@ 103c 1611 Pavilion DM1Z-3000 1043 82ef M3A78-EH Motherboard 1043 8443 M5A88-V EVO - 174b 1001 Sapphire PURE Fusion Mini + 174b 1001 PURE Fusion Mini 4392 SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode] 4393 SB7x0/SB8x0/SB9x0 SATA Controller [RAID5 mode] 4394 SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] 4395 SB8x0/SB9x0 SATA Controller [Storage mode] 4396 SB7x0/SB8x0/SB9x0 USB EHCI Controller + 1019 2120 A785GM-M 103c 1611 Pavilion DM1Z-3000 1043 82ef M3A78-EH Motherboard 1043 8443 M5A88-V EVO 15d9 a811 H8DGU - 174b 1001 Sapphire PURE Fusion Mini + 174b 1001 PURE Fusion Mini 4397 SB7x0/SB8x0/SB9x0 USB OHCI0 Controller + 1019 2120 A785GM-M 103c 1611 Pavilion DM1Z-3000 1043 82ef M3A78-EH Motherboard 1043 8443 M5A88-V EVO 15d9 a811 H8DGU - 174b 1001 Sapphire PURE Fusion Mini + 174b 1001 PURE Fusion Mini 4398 SB7x0 USB OHCI1 Controller + 1019 2120 A785GM-M 1043 82ef M3A78-EH Motherboard 15d9 a811 H8DGU 4399 SB7x0/SB8x0/SB9x0 USB OHCI2 Controller + 1019 2120 A785GM-M 1043 82ef M3A78-EH Motherboard 1043 8443 M5A88-V EVO - 174b 1001 Sapphire PURE Fusion Mini + 174b 1001 PURE Fusion Mini 439c SB7x0/SB8x0/SB9x0 IDE Controller + 1019 2120 A785GM-M 1043 82ef M3A78-EH Motherboard 439d SB7x0/SB8x0/SB9x0 LPC host controller + 1019 2120 A785GM-M 103c 1611 Pavilion DM1Z-3000 1043 82ef M3A78-EH Motherboard 1043 8443 M5A88-V EVO - 174b 1001 Sapphire PURE Fusion Mini + 174b 1001 PURE Fusion Mini 43a0 SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0) 43a1 SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1) 43a2 SB900 PCI to PCI bridge (PCIE port 2) 43a3 SB900 PCI to PCI bridge (PCIE port 3) - 4437 RS250 [Radeon Mobility 7000 IGP] + 4437 RS250 [Mobility Radeon 7000 IGP] 4554 210888ET [Mach64 ET] 4654 Mach64 VT - 4742 3D Rage Pro AGP 1X/2X + 4742 3D Rage PRO AGP 2X 1002 0040 Rage Pro Turbo AGP 2X 1002 0044 Rage Pro Turbo AGP 2X 1002 0061 Rage Pro AIW AGP 2X @@ -909,14 +911,12 @@ 1028 c082 Rage Pro Turbo AGP 2X 8086 4152 Xpert 98D AGP 2X 8086 464a Rage Pro Turbo AGP 2X - 4744 3D Rage Pro AGP 1X + 4744 3D Rage PRO AGP 1X 1002 4744 Rage Pro Turbo AGP 8086 4d55 Rage 3D Pro AGP 1X [Intel MU440EX] - 4747 3D Rage Pro - 4749 3D Rage Pro + 4749 3D Rage PRO PCI 1002 0061 Rage Pro AIW 1002 0062 Rage Pro AIW - 474c Rage XC 474d Rage XL AGP 2X 1002 0004 Xpert 98 RXL AGP 2X 1002 0008 Xpert 98 RXL AGP 2X @@ -929,14 +929,13 @@ 474f Rage XL 1002 0008 Rage XL 1002 474f Rage XL - 4750 3D Rage Pro 215GP + 4750 3D Rage Pro PCI 1002 0040 Rage Pro Turbo 1002 0044 Rage Pro Turbo 1002 0080 Rage Pro Turbo 1002 0084 Rage Pro Turbo 1002 4750 Rage Pro Turbo - 4751 3D Rage Pro 215GQ - 4752 Rage XL + 4752 Rage XL PCI 0e11 001e Proliant Rage XL 1002 0008 Rage XL 1002 4752 Proliant Rage XL @@ -949,16 +948,18 @@ 1028 014a PowerEdge 1750 1028 0165 PowerEdge 750 103c 10e1 NetServer Rage XL + 103c 3208 ProLiant DL140 G2 107b 6400 6400 Server 1734 007a PRIMERGY RX/TX series onboard VGA + 1734 1073 Primergy Econel 200 D2020 mainboard 8086 3411 SDS2 Mainboard 8086 3427 S875WP1-E mainboard 8086 5744 S845WD1-E mainboard 4753 Rage XC 1002 4753 Rage XC - 4754 3D Rage I/II 215GT [Mach64 GT] - 4755 3D Rage II+ 215GTB [Mach64 GTB] - 4756 3D Rage IIC 215IIC [Mach64 GT IIC] + 4754 3D Rage II/II+ PCI [Mach64 GT] + 4755 Mach64 GTB [3D Rage II+ DVD] + 4756 3D Rage IIC PCI [Mach64 GT IIC] 1002 4756 Rage IIC 4757 3D Rage IIC AGP 1002 4757 Rage IIC AGP @@ -967,49 +968,44 @@ 1028 4082 Rage 3D IIC 1028 8082 Rage 3D IIC 1028 c082 Rage 3D IIC - 4758 210888GX [Mach64 GX] - 4759 3D Rage IIC + 4758 210888GX [Mach64 GX PCI] + 4759 3D Rage IIC PCI 475a 3D Rage IIC AGP 1002 0084 Rage 3D Pro AGP 2x XPERT 98 1002 0087 Rage 3D IIC 1002 475a Rage IIC AGP - 4964 RV250 Id [Radeon 9000] - 4965 RV250 Ie [Radeon 9000] - 4966 R250 If [Radeon 9000] + 4966 RV250 [Radeon 9000 Series] 10f1 0002 RV250 If [Tachyon G9000 PRO] 148c 2039 RV250 If [Radeon 9000 Pro "Evil Commando"] 1509 9a00 RV250 If [Radeon 9000 "AT009"] 1681 0040 RV250 If [3D prophet 9000] - 174b 7176 RV250 If [Sapphire Radeon 9000 Pro] + 174b 7176 Radeon 9000 Pro 174b 7192 RV250 If [Radeon 9000 "Atlantis"] 17af 2005 RV250 If [Excalibur Radeon 9000 Pro] 17af 2006 RV250 If [Excalibur Radeon 9000] - 4967 RV250 Ig [Radeon 9000] 496e RV250 [Radeon 9000] (Secondary) - 4a48 R420 JH [Radeon X800] - 4a49 R420 JI [Radeon X800PRO] - 4a4a R420 JJ [Radeon X800SE] - 4a4b R420 JK [Radeon X800] - 4a4c R420 JL [Radeon X800] - 4a4d R420 JM [FireGL X3] - 4a4e R420 JN [Mobility Radeon 9800] - 4a4f R420 [Radeon X800 AGP] - 4a50 R420 JP [Radeon X800XT] - 4a54 R420 [Radeon X800 VE] + 4a49 R420 [Radeon X800 PRO/GTO AGP] + 174b 2620 R420 [Radeon X800 GTO AGP] + 4a4a R420 [Radeon X800 GT AGP] + 4a4b R420 [Radeon X800 AGP Series] + 4a4d R420 GL [FireGL X3-256] + 4a4e RV420/M18 [Mobility Radeon 9800] + 4a4f R420 [Radeon X850 AGP] + 4a50 R420 [Radeon X800 XT Platinum Edition AGP] + 4a54 R420 [Radeon X800 VE AGP] + 1002 4422 All-In-Wonder X800 VE AGP 4a69 R420 [Radeon X800 PRO/GTO] (Secondary) 4a6a R420 [Radeon X800] (Secondary) - 4a6b R420 [Radeon X800] (Secondary) - 4a70 R420 [X800XT-PE] (Secondary) + 4a6b R420 [Radeon X800 XT AGP] (Secondary) + 4a70 R420 [Radeon X800 XT Platinum Edition AGP] (Secondary) 4a74 R420 [Radeon X800 VE] (Secondary) - 4b48 R481 [Radeon X850 PCIe] - 4b49 R480 [Radeon X850XT] - 4b4a R480 [Radeon X850SE AGP] - 4b4b R480 [Radeon X850Pro] - 4b4c R481 [Radeon X850XT-PE] - 4b69 R480 [Radeon X850XT] (Secondary) - 4b6b R480 [Radeon X850Pro] (Secondary) - 4b6c R481 [Radeon X850XT-PE] (Secondary) - 4c42 3D Rage LT Pro AGP-133 + 4b49 R481 [Radeon X850 XT AGP] + 4b4b R481 [Radeon X850 PRO AGP] + 4b4c R481 [Radeon X850 XT Platinum Edition AGP] + 4b69 R481 [Radeon X850 XT AGP] (Secondary) + 4b6b R481 [Radeon X850 PRO AGP] (Secondary) + 4b6c R481 [Radeon X850 XT Platinum Edition AGP] (Secondary) + 4c42 3D Rage LT PRO AGP 2X 0e11 b0e7 Rage LT Pro (Compaq Presario 5240) 0e11 b0e8 Rage 3D LT Pro 0e11 b10e 3D Rage LT Pro (Compaq Armada 1750) @@ -1018,19 +1014,17 @@ 1002 4c42 Rage LT Pro AGP 2X 1002 8001 Rage LT Pro AGP 2X 1028 0085 Rage 3D LT Pro - 4c44 3D Rage LT Pro AGP-66 - 4c45 Rage Mobility M3 AGP - 4c46 Rage Mobility M3 AGP 2x + 4c46 Rage Mobility 128 AGP 2X/Mobility M3 1002 0155 IBM Thinkpad A22p 1014 0155 IBM Thinkpad A22p 1028 00b1 Latitude C600 - 4c47 3D Rage LT-G 215LG - 4c49 3D Rage LT Pro + 4c47 3D Rage IIC PCI / Mobility Radeon 7500/7500C + 4c49 3D Rage LT PRO PCI 1002 0004 Rage LT Pro 1002 0040 Rage LT Pro 1002 0044 Rage LT Pro 1002 4c49 Rage LT Pro - 4c4d Rage Mobility P/M AGP 2x + 4c4d Rage Mobility AGP 2x Series 0e11 b111 Armada M700 0e11 b160 Armada E500 1002 0084 Xpert 98 AGP 2X (Mobility) @@ -1039,23 +1033,20 @@ 1028 00bb Latitude CPx 1179 ff00 Satellite 1715XCDS laptop 13bd 1019 PC-AR10 - 4c4e Rage Mobility L AGP 2x - 4c50 3D Rage LT Pro + 4c50 3D Rage LT PRO PCI 1002 4c50 Rage LT Pro - 4c51 3D Rage LT Pro - 4c52 Rage Mobility P/M + 4c52 Rage Mobility-M1 PCI 1033 8112 Versa Note VXi - 4c53 Rage Mobility L 4c54 264LT [Mach64 LT] - 4c57 RV200 [Mobility Radeon 7500] + 4c57 RV200/M7 [Mobility Radeon 7500] 1014 0517 ThinkPad T30 - 1014 0530 ThinkPad T42 2373-4WU + 1014 0530 ThinkPad T4x Series 1028 00e6 Radeon Mobility M7 LW (Dell Inspiron 8100) 1028 012a Latitude C640 1043 1622 Mobility Radeon M7 (L3C/S) 144d c006 Radeon Mobility M7 LW in vpr Matrix 170B4 - 4c58 Radeon RV200 LX [Mobility FireGL 7800 M7] - 4c59 RV100 LY [Mobility Radeon 7000] + 4c58 RV200/M7 GL [Mobility FireGL 7800] + 4c59 RV100/M6 [Rage/Radeon Mobility Series] 0e11 b111 Evo N600c 1014 0235 ThinkPad A30/A30p (2652/2653) 1014 0239 ThinkPad X22/X23/X24 @@ -1063,66 +1054,56 @@ 104d 80e7 VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP 104d 8140 PCG-Z1SP laptop 1509 1930 Medion MD9703 - 4c5a RV100 LZ [Mobility Radeon 7000] - 4c64 Radeon RV250 Ld [Radeon Mobility 9000 M9] - 4c65 Radeon RV250 Le [Radeon Mobility 9000 M9] - 4c66 Radeon RV250 [Mobility FireGL 9000] + 4c66 RV250/M9 GL [Mobility FireGL 9000/Radeon 9000] 1014 054d ThinkPad T41 - 4c67 Radeon RV250 Lg [Radeon Mobility 9000 M9] -# Secondary chip to the Lf - 4c6e Radeon RV250 Ln [Radeon Mobility 9000 M9] (Secondary) - 4d46 Rage Mobility M4 AGP - 4d4c Rage Mobility M4 AGP + 4c6e RV250/M9 [Mobility Radeon 9000] (Secondary) + 4d46 Rage Mobility 128 AGP 4X/Mobility M4 4d52 Theater 550 PRO PCI [ATI TV Wonder 550] 4d53 Theater 550 PRO PCIe - 4e44 Radeon R300 ND [Radeon 9700 Pro] + 4e44 R300 [Radeon 9700/9700 PRO] 1002 515e Radeon ES1000 1002 5965 Radeon ES1000 - 4e45 Radeon R300 NE [Radeon 9500 Pro] + 4e45 R300 [Radeon 9500 PRO/9700] 1002 0002 Radeon R300 NE [Radeon 9500 Pro] 1681 0002 Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] - 4e46 R300 NF [Radeon 9600 TX] - 4e47 Radeon R300 NG [FireGL X1] - 4e48 Radeon R350 [Radeon 9800 Pro] - 4e49 Radeon R350 [Radeon 9800] - 4e4a R360 NJ [Radeon 9800 XT] + 4e46 R300 [Radeon 9600 TX] + 4e47 R300 GL [FireGL X1] + 4e48 R350 [Radeon 9800 Series] + 4e49 R350 [Radeon 9800] + 4e4a R360 [Radeon 9800 XXL/XT] 1002 4e4a R360 [Radeon 9800 XT] - 4e4b R350 NK [FireGL X2] - 4e50 RV350 [Mobility Radeon 9600 M10] + 4e4b R350 GL [FireGL X2 AGP Pro] + 4e50 RV350/M10 / RV360/M11 [Mobility Radeon 9600 (PRO) / 9700] 1025 005a TravelMate 290 + 1025 0064 Extensa 3000 series laptop: ATI RV360/M11 [Mobility Radeon 9700] 103c 088c NC8000 laptop 103c 0890 NC6000 laptop 144d c00c P35 notebook 1462 0311 MSI M510A 1734 1055 Amilo M1420W - 4e51 RV350 NQ [Mobility Radeon 9600] - 4e52 RV350 [Mobility Radeon 9600 M10] + 4e51 RV350 [Radeon 9550/9600/X1050 Series] + 4e52 RV350/M10 [Mobility Radeon 9500/9700 SE] 144d c00c P35 notebook - 4e53 RV350 NS [Mobility Radeon 9600] - 4e54 M10 NT [FireGL Mobility T2] - 4e56 M11 NV [FireGL Mobility T2e] - 4e64 Radeon R300 [Radeon 9700 Pro] (Secondary) - 4e65 Radeon R300 [Radeon 9500 Pro] (Secondary) + 4e54 RV350/M10 GL [Mobility FireGL T2] + 4e56 RV360/M12 [Mobility Radeon 9550] + 4e64 R300 [Radeon 9700 PRO] (Secondary) + 4e65 R300 [Radeon 9500 PRO] (Secondary) 1002 0003 Radeon R300 NE [Radeon 9500 Pro] 1681 0003 Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary) - 4e66 RV350 NF [Radeon 9600] (Secondary) - 4e67 Radeon R300 [FireGL X1] (Secondary) - 4e68 Radeon R350 [Radeon 9800 Pro] (Secondary) - 4e69 Radeon R350 [Radeon 9800] (Secondary) - 4e6a RV350 NJ [Radeon 9800 XT] (Secondary) + 4e66 RV350 [Radeon 9600] (Secondary) + 4e67 R300 GL [FireGL X1] (Secondary) + 4e68 R350 [Radeon 9800 PRO] (Secondary) + 4e69 R350 [Radeon 9800] (Secondary) + 4e6a RV350 [Radeon 9800 XT] (Secondary) 1002 4e6a R360 [Radeon 9800 XT] (Secondary) 1002 4e71 M10 NQ [Radeon Mobility 9600] - 4e71 M10 NQ [Radeon Mobility 9600] (Secondary) + 4e71 RV350/M10 [Mobility Radeon 9600] (Secondary) 4f72 RV250 [Radeon 9000 Series] - 4f73 Radeon RV250 [Radeon 9000 Series] (Secondary) - 5041 Rage 128 PA/PRO - 5042 Rage 128 PB/PRO AGP 2x - 5043 Rage 128 PC/PRO AGP 4x - 5044 Rage 128 PD/PRO TMDS + 4f73 RV250 [Radeon 9000 Series] (Secondary) + 5044 All-In-Wonder 128 PCI 1002 0028 Rage 128 AIW 1002 0029 Rage 128 AIW - 5045 Rage 128 PE/PRO AGP 2x TMDS - 5046 Rage 128 PF/PRO AGP 4x TMDS + 5046 Rage 128 PRO AGP 4x TMDS 1002 0004 Rage Fury Pro 1002 0008 Rage Fury Pro/Xpert 2000 Pro 1002 0014 Rage Fury Pro @@ -1132,26 +1113,10 @@ 1002 0048 Rage Fury Pro 1002 2000 Rage Fury MAXX AGP 4x (TMDS) (VGA device) 1002 2001 Rage Fury MAXX AGP 4x (TMDS) (Extra device?!) - 5047 Rage 128 PG/PRO - 5048 Rage 128 PH/PRO AGP 2x - 5049 Rage 128 PI/PRO AGP 4x - 504a Rage 128 PJ/PRO TMDS - 504b Rage 128 PK/PRO AGP 2x TMDS - 504c Rage 128 PL/PRO AGP 4x TMDS - 504d Rage 128 PM/PRO - 504e Rage 128 PN/PRO AGP 2x - 504f Rage 128 PO/PRO AGP 4x - 5050 Rage 128 PP/PRO TMDS [Xpert 128] + 5050 Rage128 [Xpert 128 PCI] 1002 0008 Xpert 128 - 5051 Rage 128 PQ/PRO AGP 2x TMDS - 5052 Rage 128 PR/PRO AGP 4x TMDS - 5053 Rage 128 PS/PRO - 5054 Rage 128 PT/PRO AGP 2x - 5055 Rage 128 PU/PRO AGP 4x - 5056 Rage 128 PV/PRO TMDS - 5057 Rage 128 PW/PRO AGP 2x TMDS - 5058 Rage 128 PX/PRO AGP 4x TMDS - 5144 Radeon R100 QD [Radeon 7200] + 5052 Rage 128 PRO AGP 4X TMDS + 5144 R100 [Radeon 7200 / All-In-Wonder Radeon] 1002 0008 Radeon 7000/Radeon VE 1002 0009 Radeon 7000/Radeon 1002 000a Radeon 7000/Radeon @@ -1165,30 +1130,20 @@ 1002 028a Radeon 7000/Radeon 1002 02aa Radeon AIW 1002 053a Radeon 7000/Radeon - 5145 Radeon R100 QE - 5146 Radeon R100 QF - 5147 Radeon R100 QG - 5148 Radeon R200 QH [Radeon 8500] + 5148 R200 GL [FireGL 8800] 1002 010a FireGL 8800 64Mb 1002 0152 FireGL 8800 128Mb 1002 0162 FireGL 8700 32Mb 1002 0172 FireGL 8700 64Mb - 5149 Radeon R200 QI - 514a Radeon R200 QJ - 514b Radeon R200 QK - 514c Radeon R200 QL [Radeon 8500 LE] + 514c R200 [Radeon 8500/8500 LE] 1002 003a Radeon R200 QL [Radeon 8500 LE] 1002 013a Radeon 8500 148c 2026 R200 QL [Radeon 8500 Evil Master II Multi Display Edition] 1681 0010 Radeon 8500 [3D Prophet 8500 128Mb] - 174b 7149 Radeon R200 QL [Sapphire Radeon 8500 LE] + 174b 7149 Radeon 8500 LE 1787 0f08 Radeon R200 QL [PowerMagic Radeon 8500] - 514d Radeon R200 QM [Radeon 9100] - 514e Radeon R200 QN [Radeon 8500LE] - 514f Radeon R200 QO [Radeon 8500LE] - 5154 R200 QT [Radeon 8500] - 5155 R200 QU [Radeon 9100] - 5157 RV200 QW [Radeon 7500] + 514d R200 [Radeon 9100] + 5157 RV200 [Radeon 7500/7500 LE] 1002 013a Radeon 7500 1002 0f2b ALL-IN-WONDER VE PCI 1002 103a Dell Optiplex GX260 @@ -1197,11 +1152,10 @@ 148c 2025 RV200 QW [Radeon 7500 Evil Master Multi Display Edition] 148c 2036 RV200 QW [Radeon 7500 PCI Dual Display] 174b 7146 RV200 QW [Radeon 7500 LE] - 174b 7147 RV200 QW [Sapphire Radeon 7500LE] + 174b 7147 Radeon 7500 LE 174b 7161 Radeon RV200 QW [Radeon 7500 LE] 17af 0202 RV200 QW [Excalibur Radeon 7500LE] - 5158 RV200 QX [Radeon 7500] - 5159 RV100 QY [Radeon 7000/VE] + 5159 RV100 [Radeon 7000 / Radeon VE] 1002 000a Radeon 7000/Radeon VE 1002 000b Radeon 7000 1002 0038 Radeon 7000/Radeon VE @@ -1221,12 +1175,12 @@ 1458 4002 RV100 QY [RADEON 7000 PRO MAYA AV Series] 148c 2003 RV100 QY [Radeon 7000 Multi-Display Edition] 148c 2023 RV100 QY [Radeon 7000 Evil Master Multi-Display] + 148c 2081 RV6DE 174b 0280 Radeon RV100 QY [Radeon 7000/VE] - 174b 7112 RV100 QY [Sapphire Radeon VE 7000] - 174b 7c28 Sapphire Radeon VE 7000 DDR + 174b 7112 Radeon VE 7000 + 174b 7c28 Radeon VE 7000 DDR 1787 0202 RV100 QY [Excalibur Radeon 7000] 17ee 1001 Radeon 7000 64MB DDR + DVI - 515a RV100 QZ [Radeon 7000/VE] 515e ES1000 1028 01bb PowerEdge 1955 Embedded ATI ES1000 1028 01df PowerEdge SC440 @@ -1242,45 +1196,32 @@ 1028 023c PowerEdge R200 Embedded ATI ES1000 103c 1304 Integrity iLO2 Advanced KVM VGA [AD307A] 15d9 8680 X7DVL-E-O motherboard + 15d9 9680 X7DBN Motherboard 8086 3476 S5000PSLSATA Server Board - 515f ES1000 - 5168 Radeon R200 Qh - 5169 Radeon R200 Qi - 516a Radeon R200 Qj - 516b Radeon R200 Qk -# This one is not in ATI documentation, but is in XFree86 source code - 516c Radeon R200 Ql - 5245 Rage 128 RE/SG + 5245 Rage 128 GL PCI 1002 0008 Xpert 128 1002 0028 Rage 128 AIW 1002 0029 Rage 128 AIW 1002 0068 Rage 128 AIW - 5246 Rage 128 RF/SG AGP + 5246 Rage Fury/Xpert 128/Xpert 2000 AGP 2x 1002 0004 Magnum/Xpert 128/Xpert 99 1002 0008 Magnum/Xpert128/X99/Xpert2000 1002 0028 Rage 128 AIW AGP 1002 0044 Rage Fury/Xpert 128/Xpert 2000 1002 0068 Rage 128 AIW AGP 1002 0448 Rage Fury - 5247 Rage 128 RG - 524b Rage 128 RK/VR - 524c Rage 128 RL/VR AGP + 524b Rage 128 VR PCI + 524c Rage 128 VR AGP 1002 0008 Xpert 99/Xpert 2000 1002 0088 Xpert 99 - 5345 Rage 128 SE/4x 5346 Rage 128 SF/4x AGP 2x 1002 0048 RAGE 128 16MB VGA TVOUT AMC PAL - 5347 Rage 128 SG/4x AGP 4x - 5348 Rage 128 SH - 534b Rage 128 SK/4x - 534c Rage 128 SL/4x AGP 2x - 534d Rage 128 SM/4x AGP 4x + 534d Rage 128 4X AGP 4x 1002 0008 Xpert 99/Xpert 2000 1002 0018 Xpert 2000 - 534e Rage 128 4x 5354 Mach 64 VT 1002 5654 Mach 64 reference - 5446 Rage 128 Pro Ultra TF + 5446 Rage 128 PRO Ultra AGP 4x 1002 0004 Rage Fury Pro 1002 0008 Rage Fury Pro/Xpert 2000 Pro 1002 0018 Rage Fury Pro/Xpert 2000 Pro @@ -1289,124 +1230,115 @@ 1002 002a Rage 128 AIW Pro AGP 1002 002b Rage 128 AIW 1002 0048 Xpert 2000 Pro - 544c Rage 128 Pro Ultra TL - 5452 Rage 128 Pro Ultra TR + 5452 Rage 128 PRO Ultra4XL VR-R AGP 1002 001c Rage 128 Pro 4XL 103c 1279 Rage 128 Pro 4XL - 5453 Rage 128 Pro Ultra TS - 5454 Rage 128 Pro Ultra TT - 5455 Rage 128 Pro Ultra TU *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Sat Aug 22 07:32:53 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4E9899BE903; Sat, 22 Aug 2015 07:32:53 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3BBCB1AC2; Sat, 22 Aug 2015 07:32:53 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7M7Wrwf053885; Sat, 22 Aug 2015 07:32:53 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7M7WmJ0053866; Sat, 22 Aug 2015 07:32:48 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508220732.t7M7WmJ0053866@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sat, 22 Aug 2015 07:32:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r287016 - in stable/10: . share/man/man4 sys/arm/mv sys/boot/forth sys/conf sys/dev/ata sys/dev/ata/chipsets sys/modules/ata/atapci/chipsets sys/modules/ata/atapci/chipsets/ataadaptec s... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Aug 2015 07:32:53 -0000 Author: mav Date: Sat Aug 22 07:32:47 2015 New Revision: 287016 URL: https://svnweb.freebsd.org/changeset/base/287016 Log: MFC r280451: Remove from legacy ata(4) driver support for hardware, supported by newer and more functional drivers ahci(4), siis(4) and mvs(4). This removes about 3400 lines of code, unused since FreeBSD 9.0 release. Deleted: stable/10/sys/arm/mv/mv_sata.c stable/10/sys/dev/ata/chipsets/ata-adaptec.c stable/10/sys/dev/ata/chipsets/ata-ahci.c stable/10/sys/modules/ata/atapci/chipsets/ataadaptec/ stable/10/sys/modules/ata/atapci/chipsets/ataahci/ Modified: stable/10/UPDATING stable/10/share/man/man4/ahci.4 stable/10/share/man/man4/ata.4 stable/10/share/man/man4/mvs.4 stable/10/share/man/man4/siis.4 stable/10/sys/arm/mv/files.mv stable/10/sys/boot/forth/loader.conf stable/10/sys/conf/NOTES stable/10/sys/conf/files stable/10/sys/dev/ata/ata-all.h stable/10/sys/dev/ata/ata-pci.h stable/10/sys/dev/ata/chipsets/ata-acerlabs.c stable/10/sys/dev/ata/chipsets/ata-ati.c stable/10/sys/dev/ata/chipsets/ata-intel.c stable/10/sys/dev/ata/chipsets/ata-jmicron.c stable/10/sys/dev/ata/chipsets/ata-marvell.c stable/10/sys/dev/ata/chipsets/ata-nvidia.c stable/10/sys/dev/ata/chipsets/ata-siliconimage.c stable/10/sys/dev/ata/chipsets/ata-via.c stable/10/sys/modules/ata/atapci/chipsets/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/10/UPDATING ============================================================================== --- stable/10/UPDATING Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/UPDATING Sat Aug 22 07:32:47 2015 (r287016) @@ -16,6 +16,12 @@ from older versions of FreeBSD, try WITH stable/10, and then rebuild without this option. The bootstrap process from older version of current is a bit fragile. +20150822: + From legacy ata(4) driver was removed support for SATA controllers + supported by more functional drivers ahci(4), siis(4) and mvs(4). + Kernel modules ataahci and ataadaptec were removed completely, + replaced by ahci and mvs modules respectively. + 20150813: 10.2-RELEASE. Modified: stable/10/share/man/man4/ahci.4 ============================================================================== --- stable/10/share/man/man4/ahci.4 Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/share/man/man4/ahci.4 Sat Aug 22 07:32:47 2015 (r287016) @@ -138,12 +138,6 @@ device for localization and status repor Supporting AHCI controllers may transmit that information to the backplane controllers via SGPIO interface. Backplane controllers interpret received statuses in some way (IBPI standard) to report them using present indicators. -.Pp -AHCI hardware is also supported by ataahci driver from -.Xr ata 4 -subsystem. -If both drivers are loaded at the same time, this one will be -given precedence as the more functional of the two. .Sh HARDWARE The .Nm Modified: stable/10/share/man/man4/ata.4 ============================================================================== --- stable/10/share/man/man4/ata.4 Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/share/man/man4/ata.4 Sat Aug 22 07:32:47 2015 (r287016) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 3, 2012 +.Dd March 23, 2015 .Dt ATA 4 .Os .Sh NAME @@ -50,8 +50,6 @@ atapci_load="YES" ataacard_load="YES" ataacerlabs_load="YES" -ataadaptec_load="YES" -ataahci_load="YES" ataamd_load="YES" ataati_load="YES" atacenatek_load="YES" @@ -76,16 +74,11 @@ atavia_load="YES" The first line is for the common hardware independent code, and is a prerequisite for the other modules. The next three lines are generic bus-specific drivers. -Of the rest, ataahci is the AHCI driver. -The others are vendor-specific PCI drivers. +The rest are vendor-specific PCI drivers. .Pp The following tunables are settable from the .Xr loader 8 : .Bl -ohang -.It Va hw.ahci.force -set to nonzero value for forcing drivers to attach to some known AHCI-capable -chips even if they are configured for legacy IDE emulation (the default is 1, -force the attach). .It Va hw.ata.ata_dma_check_80pin set to 0 to disable the 80pin cable check (the default is 1, check the cable). .It Va hint.atapci.X.msi @@ -106,13 +99,6 @@ Interface Power Management is disabled. This is the default value. .It 1 The device is allowed to initiate a PM state change; the host is passive. -.It 2 -The host initiates a PARTIAL PM state transition every time a port becomes idle. -.It 3 -host initiates SLUMBER PM state transition every time port becomes idle. -.El -.Pp -Modes 2 and 3 are only supported for AHCI. .It Va hint.ata. Ns Ar X Ns Va .dev Ns Ar X Ns Va .sata_rev limits the initial SATA revision (speed) for the specified device on the specified channel. @@ -198,8 +184,7 @@ IT8211F, IT8212F, IT8213F. .It JMicron: JMB360, JMB361, JMB363, JMB365, JMB366, JMB368. .It Marvell -88SX5040, 88SX5041, 88SX5080, 88SX5081, 88SX6041, 88SX6042, 88SX6081, 88SE6101, -88SE6102, 88SE6111, 88SE6121, 88SE6141, 88SE6145, 88SX7042. +88SE6101, 88SE6102, 88SE6111, 88SE6121, 88SE6141, 88SE6145. .It National: SC1100. .It NetCell: @@ -216,7 +201,7 @@ PDC40718, PDC40719. .It ServerWorks: HT1000, ROSB4, CSB5, CSB6, K2, Frodo4, Frodo8. .It Silicon Image: -SiI0680, SiI3112, SiI3114, SiI3124, SiI3132, SiI3512. +SiI0680, SiI3112, SiI3114, SiI3512. .It SiS: SIS180, SIS181, SIS182, SIS5513, SIS530, SIS540, SIS550, SIS620, SIS630, SIS630S, SIS633, SIS635, SIS730, SIS733, SIS735, SIS745, SIS961, SIS962, @@ -227,13 +212,10 @@ VT82C686A, VT82C686B, VT8231, VT8233, VT VT8237A, VT8237S, VT8251, CX700, VX800, VX855, VX900. .El .Pp -Some of above chips are also supported by the more featured -.Xr ahci 4 , -.Xr mvs 4 , -and -.Xr siis 4 -drivers. -If both drivers are loaded at the same time, those will have precedence. +Some of above chips can be configured for AHCI mode. +In such case they are supported by +.Xr ahci 4 +driver instead. .Pp Unknown ATA chipsets are supported in PIO modes, and if the standard busmaster DMA registers are present and contain valid setup, DMA is Modified: stable/10/share/man/man4/mvs.4 ============================================================================== --- stable/10/share/man/man4/mvs.4 Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/share/man/man4/mvs.4 Sat Aug 22 07:32:47 2015 (r287016) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 3, 2013 +.Dd March 23, 2015 .Dt MVS 4 .Os .Sh NAME @@ -109,13 +109,6 @@ Port Multipliers (including FIS-based sw hardware command queues (up to 31 command per port), Native Command Queuing, SATA interface Power Management, device hot-plug and Message Signaled Interrupts. -.Pp -The same hardware is also supported by the atamarvell and ataadaptec -drivers from the -.Xr ata 4 -subsystem. -If both drivers are loaded at the same time, this one will be -given precedence as the more functional of the two. .Sh HARDWARE The .Nm Modified: stable/10/share/man/man4/siis.4 ============================================================================== --- stable/10/share/man/man4/siis.4 Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/share/man/man4/siis.4 Sat Aug 22 07:32:47 2015 (r287016) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 8, 2011 +.Dd March 23, 2015 .Dt SIIS 4 .Os .Sh NAME @@ -98,12 +98,6 @@ The activity LEDs of the adapters suppor driver can be controlled via the .Xr led 4 API for localization or status reporting purposes. -.Pp -Same hardware is also supported by the atasiliconimage driver from -.Xr ata 4 -subsystem. -If both drivers are loaded at the same time, this one will be -given precedence as the more functional of the two. .Sh HARDWARE The .Nm Modified: stable/10/sys/arm/mv/files.mv ============================================================================== --- stable/10/sys/arm/mv/files.mv Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/arm/mv/files.mv Sat Aug 22 07:32:47 2015 (r287016) @@ -27,7 +27,6 @@ arm/mv/mv_common.c standard arm/mv/mv_localbus.c standard arm/mv/mv_machdep.c standard arm/mv/mv_pci.c optional pci -arm/mv/mv_sata.c optional ata | atamvsata arm/mv/mv_ts.c standard arm/mv/timer.c standard arm/mv/twsi.c optional iicbus Modified: stable/10/sys/boot/forth/loader.conf ============================================================================== --- stable/10/sys/boot/forth/loader.conf Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/boot/forth/loader.conf Sat Aug 22 07:32:47 2015 (r287016) @@ -149,10 +149,8 @@ module_path="/boot/modules" # Set the mo ### ATA modules ############################################## ############################################################## -ataahci_load="NO" # AHCI SATA ataacard_load="NO" # ACARD ataacerlabs_load="NO" # Acer Labs Inc. (ALI) -ataadaptec_load="NO" # Adaptec ataamd_load="NO" # American Micro Devices (AMD) ataati_load="NO" # ATI atacenatek_load="NO" # Cenatek Modified: stable/10/sys/conf/NOTES ============================================================================== --- stable/10/sys/conf/NOTES Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/conf/NOTES Sat Aug 22 07:32:47 2015 (r287016) @@ -1719,10 +1719,8 @@ device ata #device atapci # PCI bus support; only generic chipset support # PCI ATA chipsets -#device ataahci # AHCI SATA #device ataacard # ACARD #device ataacerlabs # Acer Labs Inc. (ALI) -#device ataadaptec # Adaptec #device ataamd # American Micro Devices (AMD) #device ataati # ATI #device atacenatek # Cenatek Modified: stable/10/sys/conf/files ============================================================================== --- stable/10/sys/conf/files Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/conf/files Sat Aug 22 07:32:47 2015 (r287016) @@ -680,12 +680,8 @@ dev/ata/ata-card.c optional ata pccard dev/ata/ata-cbus.c optional ata pc98 | atapc98 dev/ata/ata-isa.c optional ata isa | ataisa dev/ata/ata-pci.c optional ata pci | atapci -dev/ata/chipsets/ata-ahci.c optional ata pci | ataahci | ataacerlabs | \ - ataati | ataintel | atajmicron | \ - atavia | atanvidia dev/ata/chipsets/ata-acard.c optional ata pci | ataacard dev/ata/chipsets/ata-acerlabs.c optional ata pci | ataacerlabs -dev/ata/chipsets/ata-adaptec.c optional ata pci | ataadaptec dev/ata/chipsets/ata-amd.c optional ata pci | ataamd dev/ata/chipsets/ata-ati.c optional ata pci | ataati dev/ata/chipsets/ata-cenatek.c optional ata pci | atacenatek @@ -695,7 +691,7 @@ dev/ata/chipsets/ata-highpoint.c optiona dev/ata/chipsets/ata-intel.c optional ata pci | ataintel dev/ata/chipsets/ata-ite.c optional ata pci | ataite dev/ata/chipsets/ata-jmicron.c optional ata pci | atajmicron -dev/ata/chipsets/ata-marvell.c optional ata pci | atamarvell | ataadaptec +dev/ata/chipsets/ata-marvell.c optional ata pci | atamarvell dev/ata/chipsets/ata-micron.c optional ata pci | atamicron dev/ata/chipsets/ata-national.c optional ata pci | atanational dev/ata/chipsets/ata-netcell.c optional ata pci | atanetcell Modified: stable/10/sys/dev/ata/ata-all.h ============================================================================== --- stable/10/sys/dev/ata/ata-all.h Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/dev/ata/ata-all.h Sat Aug 22 07:32:47 2015 (r287016) @@ -150,139 +150,6 @@ #define ATA_SACTIVE 16 -/* SATA AHCI v1.0 register defines */ -#define ATA_AHCI_CAP 0x00 -#define ATA_AHCI_CAP_NPMASK 0x0000001f -#define ATA_AHCI_CAP_SXS 0x00000020 -#define ATA_AHCI_CAP_EMS 0x00000040 -#define ATA_AHCI_CAP_CCCS 0x00000080 -#define ATA_AHCI_CAP_NCS 0x00001F00 -#define ATA_AHCI_CAP_NCS_SHIFT 8 -#define ATA_AHCI_CAP_PSC 0x00002000 -#define ATA_AHCI_CAP_SSC 0x00004000 -#define ATA_AHCI_CAP_PMD 0x00008000 -#define ATA_AHCI_CAP_FBSS 0x00010000 -#define ATA_AHCI_CAP_SPM 0x00020000 -#define ATA_AHCI_CAP_SAM 0x00080000 -#define ATA_AHCI_CAP_ISS 0x00F00000 -#define ATA_AHCI_CAP_ISS_SHIFT 20 -#define ATA_AHCI_CAP_SCLO 0x01000000 -#define ATA_AHCI_CAP_SAL 0x02000000 -#define ATA_AHCI_CAP_SALP 0x04000000 -#define ATA_AHCI_CAP_SSS 0x08000000 -#define ATA_AHCI_CAP_SMPS 0x10000000 -#define ATA_AHCI_CAP_SSNTF 0x20000000 -#define ATA_AHCI_CAP_SNCQ 0x40000000 -#define ATA_AHCI_CAP_64BIT 0x80000000 - -#define ATA_AHCI_GHC 0x04 -#define ATA_AHCI_GHC_AE 0x80000000 -#define ATA_AHCI_GHC_IE 0x00000002 -#define ATA_AHCI_GHC_HR 0x00000001 - -#define ATA_AHCI_IS 0x08 -#define ATA_AHCI_PI 0x0c -#define ATA_AHCI_VS 0x10 - -#define ATA_AHCI_OFFSET 0x80 - -#define ATA_AHCI_P_CLB 0x100 -#define ATA_AHCI_P_CLBU 0x104 -#define ATA_AHCI_P_FB 0x108 -#define ATA_AHCI_P_FBU 0x10c -#define ATA_AHCI_P_IS 0x110 -#define ATA_AHCI_P_IE 0x114 -#define ATA_AHCI_P_IX_DHR 0x00000001 -#define ATA_AHCI_P_IX_PS 0x00000002 -#define ATA_AHCI_P_IX_DS 0x00000004 -#define ATA_AHCI_P_IX_SDB 0x00000008 -#define ATA_AHCI_P_IX_UF 0x00000010 -#define ATA_AHCI_P_IX_DP 0x00000020 -#define ATA_AHCI_P_IX_PC 0x00000040 -#define ATA_AHCI_P_IX_DI 0x00000080 - -#define ATA_AHCI_P_IX_PRC 0x00400000 -#define ATA_AHCI_P_IX_IPM 0x00800000 -#define ATA_AHCI_P_IX_OF 0x01000000 -#define ATA_AHCI_P_IX_INF 0x04000000 -#define ATA_AHCI_P_IX_IF 0x08000000 -#define ATA_AHCI_P_IX_HBD 0x10000000 -#define ATA_AHCI_P_IX_HBF 0x20000000 -#define ATA_AHCI_P_IX_TFE 0x40000000 -#define ATA_AHCI_P_IX_CPD 0x80000000 - -#define ATA_AHCI_P_CMD 0x118 -#define ATA_AHCI_P_CMD_ST 0x00000001 -#define ATA_AHCI_P_CMD_SUD 0x00000002 -#define ATA_AHCI_P_CMD_POD 0x00000004 -#define ATA_AHCI_P_CMD_CLO 0x00000008 -#define ATA_AHCI_P_CMD_FRE 0x00000010 -#define ATA_AHCI_P_CMD_CCS_MASK 0x00001f00 -#define ATA_AHCI_P_CMD_ISS 0x00002000 -#define ATA_AHCI_P_CMD_FR 0x00004000 -#define ATA_AHCI_P_CMD_CR 0x00008000 -#define ATA_AHCI_P_CMD_CPS 0x00010000 -#define ATA_AHCI_P_CMD_PMA 0x00020000 -#define ATA_AHCI_P_CMD_HPCP 0x00040000 -#define ATA_AHCI_P_CMD_ISP 0x00080000 -#define ATA_AHCI_P_CMD_CPD 0x00100000 -#define ATA_AHCI_P_CMD_ATAPI 0x01000000 -#define ATA_AHCI_P_CMD_DLAE 0x02000000 -#define ATA_AHCI_P_CMD_ALPE 0x04000000 -#define ATA_AHCI_P_CMD_ASP 0x08000000 -#define ATA_AHCI_P_CMD_ICC_MASK 0xf0000000 -#define ATA_AHCI_P_CMD_NOOP 0x00000000 -#define ATA_AHCI_P_CMD_ACTIVE 0x10000000 -#define ATA_AHCI_P_CMD_PARTIAL 0x20000000 -#define ATA_AHCI_P_CMD_SLUMBER 0x60000000 - -#define ATA_AHCI_P_TFD 0x120 -#define ATA_AHCI_P_SIG 0x124 -#define ATA_AHCI_P_SSTS 0x128 -#define ATA_AHCI_P_SCTL 0x12c -#define ATA_AHCI_P_SERR 0x130 -#define ATA_AHCI_P_SACT 0x134 -#define ATA_AHCI_P_CI 0x138 -#define ATA_AHCI_P_SNTF 0x13C -#define ATA_AHCI_P_FBS 0x140 - -#define ATA_AHCI_CL_SIZE 32 -#define ATA_AHCI_CL_OFFSET 0 -#define ATA_AHCI_FB_OFFSET (ATA_AHCI_CL_SIZE * 32) -#define ATA_AHCI_CT_OFFSET (ATA_AHCI_FB_OFFSET + 4096) -#define ATA_AHCI_CT_SIZE (2176 + 128) - -struct ata_ahci_dma_prd { - u_int64_t dba; - u_int32_t reserved; - u_int32_t dbc; /* 0 based */ -#define ATA_AHCI_PRD_MASK 0x003fffff /* max 4MB */ -#define ATA_AHCI_PRD_IPC (1<<31) -} __packed; - -struct ata_ahci_cmd_tab { - u_int8_t cfis[64]; - u_int8_t acmd[32]; - u_int8_t reserved[32]; -#define ATA_AHCI_DMA_ENTRIES 129 - struct ata_ahci_dma_prd prd_tab[ATA_AHCI_DMA_ENTRIES]; -} __packed; - -struct ata_ahci_cmd_list { - u_int16_t cmd_flags; -#define ATA_AHCI_CMD_ATAPI 0x0020 -#define ATA_AHCI_CMD_WRITE 0x0040 -#define ATA_AHCI_CMD_PREFETCH 0x0080 -#define ATA_AHCI_CMD_RESET 0x0100 -#define ATA_AHCI_CMD_BIST 0x0200 -#define ATA_AHCI_CMD_CLR_BUSY 0x0400 - - u_int16_t prd_length; /* PRD entries */ - u_int32_t bytecount; - u_int64_t cmd_table_phys; /* 128byte aligned */ -} __packed; - - /* DMA register defines */ #define ATA_DMA_ENTRIES 256 #define ATA_DMA_EOT 0x80000000 Modified: stable/10/sys/dev/ata/ata-pci.h ============================================================================== --- stable/10/sys/dev/ata/ata-pci.h Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/dev/ata/ata-pci.h Sat Aug 22 07:32:47 2015 (r287016) @@ -169,93 +169,49 @@ struct ata_pci_controller { #define ATA_I6300ESB_R1 0x25b08086 #define ATA_I63XXESB2 0x269e8086 #define ATA_I63XXESB2_S1 0x26808086 -#define ATA_I63XXESB2_S2 0x26818086 -#define ATA_I63XXESB2_R1 0x26828086 -#define ATA_I63XXESB2_R2 0x26838086 #define ATA_I82801FB 0x266f8086 #define ATA_I82801FB_S1 0x26518086 #define ATA_I82801FB_R1 0x26528086 #define ATA_I82801FBM 0x26538086 #define ATA_I82801GB 0x27df8086 #define ATA_I82801GB_S1 0x27c08086 -#define ATA_I82801GB_AH 0x27c18086 -#define ATA_I82801GB_R1 0x27c38086 #define ATA_I82801GBM_S1 0x27c48086 -#define ATA_I82801GBM_AH 0x27c58086 -#define ATA_I82801GBM_R1 0x27c68086 #define ATA_I82801HB_S1 0x28208086 -#define ATA_I82801HB_AH6 0x28218086 -#define ATA_I82801HB_R1 0x28228086 -#define ATA_I82801HB_AH4 0x28248086 #define ATA_I82801HB_S2 0x28258086 #define ATA_I82801HBM 0x28508086 #define ATA_I82801HBM_S1 0x28288086 -#define ATA_I82801HBM_S2 0x28298086 -#define ATA_I82801HBM_S3 0x282a8086 #define ATA_I82801IB_S1 0x29208086 #define ATA_I82801IB_S3 0x29218086 -#define ATA_I82801IB_AH6 0x29228086 -#define ATA_I82801IB_AH4 0x29238086 #define ATA_I82801IB_R1 0x29258086 #define ATA_I82801IB_S2 0x29268086 #define ATA_I82801IBM_S1 0x29288086 -#define ATA_I82801IBM_AH 0x29298086 -#define ATA_I82801IBM_R1 0x292a8086 #define ATA_I82801IBM_S2 0x292d8086 #define ATA_I82801JIB_S1 0x3a208086 -#define ATA_I82801JIB_AH 0x3a228086 -#define ATA_I82801JIB_R1 0x3a258086 #define ATA_I82801JIB_S2 0x3a268086 #define ATA_I82801JD_S1 0x3a008086 -#define ATA_I82801JD_AH 0x3a028086 -#define ATA_I82801JD_R1 0x3a058086 #define ATA_I82801JD_S2 0x3a068086 #define ATA_I82801JI_S1 0x3a208086 -#define ATA_I82801JI_AH 0x3a228086 -#define ATA_I82801JI_R1 0x3a258086 #define ATA_I82801JI_S2 0x3a268086 #define ATA_5Series_S1 0x3b208086 #define ATA_5Series_S2 0x3b218086 -#define ATA_5Series_AH1 0x3b228086 -#define ATA_5Series_AH2 0x3b238086 -#define ATA_5Series_R1 0x3b258086 #define ATA_5Series_S3 0x3b268086 #define ATA_5Series_S4 0x3b288086 -#define ATA_5Series_AH3 0x3b298086 -#define ATA_5Series_R2 0x3b2c8086 #define ATA_5Series_S5 0x3b2d8086 #define ATA_5Series_S6 0x3b2e8086 -#define ATA_5Series_AH4 0x3b2f8086 #define ATA_CPT_S1 0x1c008086 #define ATA_CPT_S2 0x1c018086 -#define ATA_CPT_AH1 0x1c028086 -#define ATA_CPT_AH2 0x1c038086 -#define ATA_CPT_R1 0x1c048086 -#define ATA_CPT_R2 0x1c058086 #define ATA_CPT_S3 0x1c088086 #define ATA_CPT_S4 0x1c098086 #define ATA_PBG_S1 0x1d008086 -#define ATA_PBG_AH1 0x1d028086 -#define ATA_PBG_R1 0x1d048086 -#define ATA_PBG_R2 0x1d068086 -#define ATA_PBG_R3 0x28268086 #define ATA_PBG_S2 0x1d088086 #define ATA_PPT_S1 0x1e008086 #define ATA_PPT_S2 0x1e018086 -#define ATA_PPT_AH1 0x1e028086 -#define ATA_PPT_AH2 0x1e038086 -#define ATA_PPT_R1 0x1e048086 -#define ATA_PPT_R2 0x1e058086 -#define ATA_PPT_R3 0x1e068086 -#define ATA_PPT_R4 0x1e078086 #define ATA_PPT_S3 0x1e088086 #define ATA_PPT_S4 0x1e098086 -#define ATA_PPT_R5 0x1e0e8086 -#define ATA_PPT_R6 0x1e0f8086 #define ATA_AVOTON_S1 0x1f208086 #define ATA_AVOTON_S2 0x1f218086 @@ -264,29 +220,13 @@ struct ata_pci_controller { #define ATA_LPT_S1 0x8c008086 #define ATA_LPT_S2 0x8c018086 -#define ATA_LPT_AH1 0x8c028086 -#define ATA_LPT_AH2 0x8c038086 -#define ATA_LPT_R1 0x8c048086 -#define ATA_LPT_R2 0x8c058086 -#define ATA_LPT_R3 0x8c068086 -#define ATA_LPT_R4 0x8c078086 #define ATA_LPT_S3 0x8c088086 #define ATA_LPT_S4 0x8c098086 -#define ATA_LPT_R5 0x8c0e8086 -#define ATA_LPT_R6 0x8c0f8086 #define ATA_WCPT_S1 0x8c808086 #define ATA_WCPT_S2 0x8c818086 -#define ATA_WCPT_AH1 0x8c828086 -#define ATA_WCPT_AH2 0x8c838086 -#define ATA_WCPT_R1 0x8c848086 -#define ATA_WCPT_R2 0x8c858086 -#define ATA_WCPT_R3 0x8c868086 -#define ATA_WCPT_R4 0x8c878086 #define ATA_WCPT_S3 0x8c888086 #define ATA_WCPT_S4 0x8c898086 -#define ATA_WCPT_R5 0x8c8e8086 -#define ATA_WCPT_R6 0x8c8f8086 #define ATA_WELLS_S1 0x8d008086 #define ATA_WELLS_S2 0x8d088086 @@ -300,9 +240,7 @@ struct ata_pci_controller { #define ATA_I31244 0x32008086 #define ATA_ISCH 0x811a8086 -#define ATA_DH89XXCC 0x23238086 -#define ATA_COLETOCRK_AH1 0x23a38086 #define ATA_COLETOCRK_S1 0x23a18086 #define ATA_COLETOCRK_S2 0x23a68086 @@ -322,14 +260,6 @@ struct ata_pci_controller { #define ATA_JMB368_2 0x0368197b #define ATA_MARVELL_ID 0x11ab -#define ATA_M88SX5040 0x504011ab -#define ATA_M88SX5041 0x504111ab -#define ATA_M88SX5080 0x508011ab -#define ATA_M88SX5081 0x508111ab -#define ATA_M88SX6041 0x604111ab -#define ATA_M88SX6042 0x604211ab -#define ATA_M88SX6081 0x608111ab -#define ATA_M88SX7042 0x704211ab #define ATA_M88SE6101 0x610111ab #define ATA_M88SE6102 0x610211ab #define ATA_M88SE6111 0x611111ab @@ -505,10 +435,6 @@ struct ata_pci_controller { #define ATA_SII3512 0x35121095 #define ATA_SII3112 0x31121095 #define ATA_SII3112_1 0x02401095 -#define ATA_SII3124 0x31241095 -#define ATA_SII3132 0x31321095 -#define ATA_SII3132_1 0x02421095 -#define ATA_SII3132_2 0x02441095 #define ATA_SII0680 0x06801095 #define ATA_CMD646 0x06461095 #define ATA_CMD648 0x06481095 @@ -631,8 +557,6 @@ const struct ata_chip_id *ata_find_chip( int ata_mode2idx(int mode); /* global prototypes from chipsets/ata-*.c */ -int ata_ahci_chipinit(device_t); -int ata_marvell_edma_chipinit(device_t); int ata_sii_chipinit(device_t); /* externs */ Modified: stable/10/sys/dev/ata/chipsets/ata-acerlabs.c ============================================================================== --- stable/10/sys/dev/ata/chipsets/ata-acerlabs.c Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/dev/ata/chipsets/ata-acerlabs.c Sat Aug 22 07:32:47 2015 (r287016) @@ -117,11 +117,6 @@ ata_ali_chipinit(device_t dev) ctlr->setmode = ata_sata_setmode; ctlr->getrev = ata_sata_getrev; - /* AHCI mode is correctly supported only on the ALi 5288. */ - if ((ctlr->chip->chipid == ATA_ALI_5288) && - (ata_ahci_chipinit(dev) != ENXIO)) - return 0; - /* Allocate resources for later use by channel attach routines. */ res = malloc(sizeof(struct ali_sata_resources), M_ATAPCI, M_WAITOK); for (i = 0; i < 4; i++) { @@ -347,4 +342,3 @@ ata_ali_setmode(device_t dev, int target } ATA_DECLARE_DRIVER(ata_ali); -MODULE_DEPEND(ata_ali, ata_ahci, 1, 1, 1); Modified: stable/10/sys/dev/ata/chipsets/ata-ati.c ============================================================================== --- stable/10/sys/dev/ata/chipsets/ata-ati.c Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/dev/ata/chipsets/ata-ati.c Sat Aug 22 07:32:47 2015 (r287016) @@ -64,9 +64,6 @@ static int ata_ati_setmode(device_t dev, #define ATI_PATA 0x02 #define ATI_AHCI 0x04 -static int force_ahci = 1; -TUNABLE_INT("hw.ahci.force", &force_ahci); - /* * ATI chipset support functions */ @@ -104,8 +101,6 @@ ata_ati_probe(device_t dev) if (!(ctlr->chip = ata_match_chip(dev, ids))) return ENXIO; - ata_set_desc(dev); - switch (ctlr->chip->cfg1) { case ATI_PATA: ctlr->chipinit = ata_ati_chipinit; @@ -117,12 +112,13 @@ ata_ati_probe(device_t dev) ctlr->chipinit = ata_sii_chipinit; break; case ATI_AHCI: - if (force_ahci == 1 || pci_get_subclass(dev) != PCIS_STORAGE_IDE) - ctlr->chipinit = ata_ahci_chipinit; - else - ctlr->chipinit = ata_ati_chipinit; + if (pci_get_subclass(dev) != PCIS_STORAGE_IDE) + return (ENXIO); + ctlr->chipinit = ata_ati_chipinit; break; } + + ata_set_desc(dev); return (BUS_PROBE_LOW_PRIORITY); } @@ -264,5 +260,4 @@ ata_ati_setmode(device_t dev, int target } ATA_DECLARE_DRIVER(ata_ati); -MODULE_DEPEND(ata_ati, ata_ahci, 1, 1, 1); MODULE_DEPEND(ata_ati, ata_sii, 1, 1, 1); Modified: stable/10/sys/dev/ata/chipsets/ata-intel.c ============================================================================== --- stable/10/sys/dev/ata/chipsets/ata-intel.c Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/dev/ata/chipsets/ata-intel.c Sat Aug 22 07:32:47 2015 (r287016) @@ -80,7 +80,6 @@ static void ata_intel_31244_tf_write(str static void ata_intel_31244_reset(device_t dev); /* misc defines */ -#define INTEL_AHCI 1 #define INTEL_ICH5 2 #define INTEL_6CH 4 #define INTEL_6CH2 8 @@ -127,118 +126,57 @@ ata_intel_probe(device_t dev) { ATA_I6300ESB_S1, 0, INTEL_ICH5, 2, ATA_SA150, "6300ESB" }, { ATA_I6300ESB_R1, 0, INTEL_ICH5, 2, ATA_SA150, "6300ESB" }, { ATA_I82801FB, 0, 0, 2, ATA_UDMA5, "ICH6" }, - { ATA_I82801FB_S1, 0, INTEL_AHCI, 0, ATA_SA150, "ICH6" }, - { ATA_I82801FB_R1, 0, INTEL_AHCI, 0, ATA_SA150, "ICH6" }, - { ATA_I82801FBM, 0, INTEL_AHCI, 0, ATA_SA150, "ICH6M" }, + { ATA_I82801FB_S1, 0, 0, 0, ATA_SA150, "ICH6" }, + { ATA_I82801FB_R1, 0, 0, 0, ATA_SA150, "ICH6" }, + { ATA_I82801FBM, 0, 0, 0, ATA_SA150, "ICH6M" }, { ATA_I82801GB, 0, 0, 1, ATA_UDMA5, "ICH7" }, { ATA_I82801GB_S1, 0, INTEL_ICH7, 0, ATA_SA300, "ICH7" }, - { ATA_I82801GB_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH7" }, - { ATA_I82801GB_AH, 0, INTEL_AHCI, 0, ATA_SA300, "ICH7" }, { ATA_I82801GBM_S1, 0, INTEL_ICH7, 0, ATA_SA150, "ICH7M" }, - { ATA_I82801GBM_R1, 0, INTEL_AHCI, 0, ATA_SA150, "ICH7M" }, - { ATA_I82801GBM_AH, 0, INTEL_AHCI, 0, ATA_SA150, "ICH7M" }, { ATA_I63XXESB2, 0, 0, 1, ATA_UDMA5, "63XXESB2" }, { ATA_I63XXESB2_S1, 0, 0, 0, ATA_SA300, "63XXESB2" }, - { ATA_I63XXESB2_S2, 0, INTEL_AHCI, 0, ATA_SA300, "63XXESB2" }, - { ATA_I63XXESB2_R1, 0, INTEL_AHCI, 0, ATA_SA300, "63XXESB2" }, - { ATA_I63XXESB2_R2, 0, INTEL_AHCI, 0, ATA_SA300, "63XXESB2" }, { ATA_I82801HB_S1, 0, INTEL_6CH, 0, ATA_SA300, "ICH8" }, { ATA_I82801HB_S2, 0, INTEL_6CH2, 0, ATA_SA300, "ICH8" }, - { ATA_I82801HB_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH8" }, - { ATA_I82801HB_AH4, 0, INTEL_AHCI, 0, ATA_SA300, "ICH8" }, - { ATA_I82801HB_AH6, 0, INTEL_AHCI, 0, ATA_SA300, "ICH8" }, { ATA_I82801HBM, 0, 0, 1, ATA_UDMA5, "ICH8M" }, { ATA_I82801HBM_S1, 0, INTEL_6CH, 0, ATA_SA300, "ICH8M" }, - { ATA_I82801HBM_S2, 0, INTEL_AHCI, 0, ATA_SA300, "ICH8M" }, - { ATA_I82801HBM_S3, 0, INTEL_AHCI, 0, ATA_SA300, "ICH8M" }, { ATA_I82801IB_S1, 0, INTEL_6CH, 0, ATA_SA300, "ICH9" }, { ATA_I82801IB_S2, 0, INTEL_6CH2, 0, ATA_SA300, "ICH9" }, { ATA_I82801IB_S3, 0, INTEL_6CH2, 0, ATA_SA300, "ICH9" }, - { ATA_I82801IB_AH4, 0, INTEL_AHCI, 0, ATA_SA300, "ICH9" }, - { ATA_I82801IB_AH6, 0, INTEL_AHCI, 0, ATA_SA300, "ICH9" }, - { ATA_I82801IB_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH9" }, { ATA_I82801IBM_S1, 0, INTEL_6CH2, 0, ATA_SA300, "ICH9M" }, - { ATA_I82801IBM_AH, 0, INTEL_AHCI, 0, ATA_SA300, "ICH9M" }, - { ATA_I82801IBM_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH9M" }, { ATA_I82801IBM_S2, 0, INTEL_6CH2, 0, ATA_SA300, "ICH9M" }, { ATA_I82801JIB_S1, 0, INTEL_6CH, 0, ATA_SA300, "ICH10" }, - { ATA_I82801JIB_AH, 0, INTEL_AHCI, 0, ATA_SA300, "ICH10" }, - { ATA_I82801JIB_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH10" }, { ATA_I82801JIB_S2, 0, INTEL_6CH2, 0, ATA_SA300, "ICH10" }, { ATA_I82801JD_S1, 0, INTEL_6CH, 0, ATA_SA300, "ICH10" }, - { ATA_I82801JD_AH, 0, INTEL_AHCI, 0, ATA_SA300, "ICH10" }, - { ATA_I82801JD_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH10" }, { ATA_I82801JD_S2, 0, INTEL_6CH2, 0, ATA_SA300, "ICH10" }, { ATA_I82801JI_S1, 0, INTEL_6CH, 0, ATA_SA300, "ICH10" }, - { ATA_I82801JI_AH, 0, INTEL_AHCI, 0, ATA_SA300, "ICH10" }, - { ATA_I82801JI_R1, 0, INTEL_AHCI, 0, ATA_SA300, "ICH10" }, { ATA_I82801JI_S2, 0, INTEL_6CH2, 0, ATA_SA300, "ICH10" }, { ATA_5Series_S1, 0, INTEL_6CH, 0, ATA_SA300, "5 Series/3400 Series PCH" }, { ATA_5Series_S2, 0, INTEL_6CH2, 0, ATA_SA300, "5 Series/3400 Series PCH" }, - { ATA_5Series_AH1, 0, INTEL_AHCI, 0, ATA_SA300, "5 Series/3400 Series PCH" }, - { ATA_5Series_AH2, 0, INTEL_AHCI, 0, ATA_SA300, "5 Series/3400 Series PCH" }, - { ATA_5Series_R1, 0, INTEL_AHCI, 0, ATA_SA300, "5 Series/3400 Series PCH" }, { ATA_5Series_S3, 0, INTEL_6CH2, 0, ATA_SA300, "5 Series/3400 Series PCH" }, { ATA_5Series_S4, 0, INTEL_6CH, 0, ATA_SA300, "5 Series/3400 Series PCH" }, - { ATA_5Series_AH3, 0, INTEL_AHCI, 0, ATA_SA300, "5 Series/3400 Series PCH" }, - { ATA_5Series_R2, 0, INTEL_AHCI, 0, ATA_SA300, "5 Series/3400 Series PCH" }, { ATA_5Series_S5, 0, INTEL_6CH2, 0, ATA_SA300, "5 Series/3400 Series PCH" }, { ATA_5Series_S6, 0, INTEL_6CH, 0, ATA_SA300, "5 Series/3400 Series PCH" }, - { ATA_5Series_AH4, 0, INTEL_AHCI, 0, ATA_SA300, "5 Series/3400 Series PCH" }, { ATA_CPT_S1, 0, INTEL_6CH, 0, ATA_SA300, "Cougar Point" }, { ATA_CPT_S2, 0, INTEL_6CH, 0, ATA_SA300, "Cougar Point" }, - { ATA_CPT_AH1, 0, INTEL_AHCI, 0, ATA_SA300, "Cougar Point" }, - { ATA_CPT_AH2, 0, INTEL_AHCI, 0, ATA_SA300, "Cougar Point" }, - { ATA_CPT_R1, 0, INTEL_AHCI, 0, ATA_SA300, "Cougar Point" }, - { ATA_CPT_R2, 0, INTEL_AHCI, 0, ATA_SA300, "Cougar Point" }, { ATA_CPT_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Cougar Point" }, { ATA_CPT_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Cougar Point" }, { ATA_PBG_S1, 0, INTEL_6CH, 0, ATA_SA300, "Patsburg" }, - { ATA_PBG_AH1, 0, INTEL_AHCI, 0, ATA_SA300, "Patsburg" }, - { ATA_PBG_R1, 0, INTEL_AHCI, 0, ATA_SA300, "Patsburg" }, - { ATA_PBG_R2, 0, INTEL_AHCI, 0, ATA_SA300, "Patsburg" }, - { ATA_PBG_R3, 0, INTEL_AHCI, 0, ATA_SA300, "Patsburg" }, { ATA_PBG_S2, 0, INTEL_6CH2, 0, ATA_SA300, "Patsburg" }, { ATA_PPT_S1, 0, INTEL_6CH, 0, ATA_SA300, "Panther Point" }, { ATA_PPT_S2, 0, INTEL_6CH, 0, ATA_SA300, "Panther Point" }, - { ATA_PPT_AH1, 0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" }, - { ATA_PPT_AH2, 0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" }, - { ATA_PPT_R1, 0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" }, - { ATA_PPT_R2, 0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" }, - { ATA_PPT_R3, 0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" }, - { ATA_PPT_R4, 0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" }, { ATA_PPT_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Panther Point" }, { ATA_PPT_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Panther Point" }, - { ATA_PPT_R5, 0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" }, - { ATA_PPT_R6, 0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" }, { ATA_AVOTON_S1, 0, INTEL_6CH, 0, ATA_SA300, "Avoton" }, { ATA_AVOTON_S2, 0, INTEL_6CH, 0, ATA_SA300, "Avoton" }, { ATA_AVOTON_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Avoton" }, { ATA_AVOTON_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Avoton" }, { ATA_LPT_S1, 0, INTEL_6CH, 0, ATA_SA300, "Lynx Point" }, { ATA_LPT_S2, 0, INTEL_6CH, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_AH1, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_AH2, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_R1, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_R2, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_R3, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_R4, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, { ATA_LPT_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point" }, { ATA_LPT_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_R5, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_R6, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, { ATA_WCPT_S1, 0, INTEL_6CH, 0, ATA_SA300, "Wildcat Point" }, { ATA_WCPT_S2, 0, INTEL_6CH, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_AH1, 0, INTEL_AHCI, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_AH2, 0, INTEL_AHCI, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_R1, 0, INTEL_AHCI, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_R2, 0, INTEL_AHCI, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_R3, 0, INTEL_AHCI, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_R4, 0, INTEL_AHCI, 0, ATA_SA300, "Wildcat Point" }, { ATA_WCPT_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Wildcat Point" }, { ATA_WCPT_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_R5, 0, INTEL_AHCI, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_R6, 0, INTEL_AHCI, 0, ATA_SA300, "Wildcat Point" }, { ATA_WELLS_S1, 0, INTEL_6CH, 0, ATA_SA300, "Wellsburg" }, { ATA_WELLS_S2, 0, INTEL_6CH2, 0, ATA_SA300, "Wellsburg" }, { ATA_WELLS_S3, 0, INTEL_6CH, 0, ATA_SA300, "Wellsburg" }, @@ -249,10 +187,8 @@ ata_intel_probe(device_t dev) { ATA_LPTLP_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point-LP" }, { ATA_I31244, 0, 0, 2, ATA_SA150, "31244" }, { ATA_ISCH, 0, 0, 1, ATA_UDMA5, "SCH" }, - { ATA_DH89XXCC, 0, INTEL_AHCI, 0, ATA_SA300, "DH89xxCC" }, { ATA_COLETOCRK_S1, 0, INTEL_6CH2, 0, ATA_SA300, "COLETOCRK" }, { ATA_COLETOCRK_S2, 0, INTEL_6CH2, 0, ATA_SA300, "COLETOCRK" }, - { ATA_COLETOCRK_AH1,0, INTEL_AHCI, 0, ATA_SA300, "COLETOCRK" }, { 0, 0, 0, 0, 0, 0}}; if (pci_get_vendor(dev) != ATA_INTEL_ID) @@ -326,15 +262,6 @@ ata_intel_chipinit(device_t dev) ctlr->ch_detach = ata_pci_ch_detach; ctlr->reset = ata_intel_reset; - /* - * if we have AHCI capability and AHCI or RAID mode enabled - * in BIOS we try for AHCI mode - */ - if ((ctlr->chip->cfg1 & INTEL_AHCI) && - (pci_read_config(dev, 0x90, 1) & 0xc0) && - (ata_ahci_chipinit(dev) != ENXIO)) - return 0; - /* BAR(5) may point to SATA interface registers */ if ((ctlr->chip->cfg1 & INTEL_ICH7)) { ctlr->r_type2 = SYS_RES_MEMORY; @@ -995,4 +922,3 @@ ata_intel_31244_reset(device_t dev) } ATA_DECLARE_DRIVER(ata_intel); -MODULE_DEPEND(ata_intel, ata_ahci, 1, 1, 1); Modified: stable/10/sys/dev/ata/chipsets/ata-jmicron.c ============================================================================== --- stable/10/sys/dev/ata/chipsets/ata-jmicron.c Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/dev/ata/chipsets/ata-jmicron.c Sat Aug 22 07:32:47 2015 (r287016) @@ -100,11 +100,7 @@ ata_jmicron_chipinit(device_t dev) /* do we have multiple PCI functions ? */ if (pci_read_config(dev, 0xdf, 1) & 0x40) { - /* are we on the AHCI part ? */ - if (ata_ahci_chipinit(dev) != ENXIO) - return 0; - - /* otherwise we are on the PATA part */ + /* If this was not claimed by AHCI, then we are on the PATA part */ ctlr->ch_attach = ata_jmicron_ch_attach; ctlr->ch_detach = ata_pci_ch_detach; ctlr->reset = ata_generic_reset; @@ -160,4 +156,3 @@ ata_jmicron_setmode(device_t dev, int ta } ATA_DECLARE_DRIVER(ata_jmicron); -MODULE_DEPEND(ata_jmicron, ata_ahci, 1, 1, 1); Modified: stable/10/sys/dev/ata/chipsets/ata-marvell.c ============================================================================== --- stable/10/sys/dev/ata/chipsets/ata-marvell.c Sat Aug 22 07:27:06 2015 (r287015) +++ stable/10/sys/dev/ata/chipsets/ata-marvell.c Sat Aug 22 07:32:47 2015 (r287016) @@ -55,20 +55,8 @@ static int ata_marvell_chipinit(device_t static int ata_marvell_ch_attach(device_t dev); static int ata_marvell_setmode(device_t dev, int target, int mode); static int ata_marvell_dummy_chipinit(device_t dev); -static int ata_marvell_edma_ch_attach(device_t dev); -static int ata_marvell_edma_ch_detach(device_t dev); -static int ata_marvell_edma_status(device_t dev); -static int ata_marvell_edma_begin_transaction(struct ata_request *request); -static int ata_marvell_edma_end_transaction(struct ata_request *request); -static void ata_marvell_edma_reset(device_t dev); -static void ata_marvell_edma_dmasetprd(void *xsc, bus_dma_segment_t *segs, int nsegs, int error); -static void ata_marvell_edma_dmainit(device_t dev); /* misc defines */ -#define MV_50XX 50 -#define MV_60XX 60 -#define MV_6042 62 -#define MV_7042 72 #define MV_61XX 61 #define MV_91XX 91 @@ -99,15 +87,7 @@ ata_marvell_probe(device_t dev) { struct ata_pci_controller *ctlr = device_get_softc(dev); static const struct ata_chip_id ids[] = - {{ ATA_M88SX5040, 0, 4, MV_50XX, ATA_SA150, "88SX5040" }, - { ATA_M88SX5041, 0, 4, MV_50XX, ATA_SA150, "88SX5041" }, - { ATA_M88SX5080, 0, 8, MV_50XX, ATA_SA150, "88SX5080" }, - { ATA_M88SX5081, 0, 8, MV_50XX, ATA_SA150, "88SX5081" }, - { ATA_M88SX6041, 0, 4, MV_60XX, ATA_SA300, "88SX6041" }, - { ATA_M88SX6042, 0, 4, MV_6042, ATA_SA300, "88SX6042" }, - { ATA_M88SX6081, 0, 8, MV_60XX, ATA_SA300, "88SX6081" }, - { ATA_M88SX7042, 0, 4, MV_7042, ATA_SA300, "88SX7042" }, - { ATA_M88SE6101, 0, 0, MV_61XX, ATA_UDMA6, "88SE6101" }, + {{ ATA_M88SE6101, 0, 0, MV_61XX, ATA_UDMA6, "88SE6101" }, { ATA_M88SE6102, 0, 0, MV_61XX, ATA_UDMA6, "88SE6102" }, { ATA_M88SE6111, 0, 1, MV_61XX, ATA_UDMA6, "88SE6111" }, { ATA_M88SE6121, 0, 2, MV_61XX, ATA_UDMA6, "88SE6121" }, @@ -126,12 +106,6 @@ ata_marvell_probe(device_t dev) ata_set_desc(dev); switch (ctlr->chip->cfg2) { - case MV_50XX: - case MV_60XX: - case MV_6042: - case MV_7042: - ctlr->chipinit = ata_marvell_edma_chipinit; - break; case MV_61XX: ctlr->chipinit = ata_marvell_chipinit; break; @@ -205,425 +179,4 @@ ata_marvell_dummy_chipinit(device_t dev) return (0); } -int -ata_marvell_edma_chipinit(device_t dev) -{ - struct ata_pci_controller *ctlr = device_get_softc(dev); - - if (ata_setup_interrupt(dev, ata_generic_intr)) - return ENXIO; - - ctlr->r_type1 = SYS_RES_MEMORY; - ctlr->r_rid1 = PCIR_BAR(0); - if (!(ctlr->r_res1 = bus_alloc_resource_any(dev, ctlr->r_type1, - &ctlr->r_rid1, RF_ACTIVE))) - return ENXIO; - - /* mask all host controller interrupts */ - ATA_OUTL(ctlr->r_res1, 0x01d64, 0x00000000); - - /* mask all PCI interrupts */ - ATA_OUTL(ctlr->r_res1, 0x01d5c, 0x00000000); - - ctlr->ch_attach = ata_marvell_edma_ch_attach; - ctlr->ch_detach = ata_marvell_edma_ch_detach; - ctlr->reset = ata_marvell_edma_reset; - ctlr->setmode = ata_sata_setmode; - ctlr->getrev = ata_sata_getrev; - ctlr->channels = ctlr->chip->cfg1; - - /* clear host controller interrupts */ - ATA_OUTL(ctlr->r_res1, 0x20014, 0x00000000); - if (ctlr->chip->cfg1 > 4) - ATA_OUTL(ctlr->r_res1, 0x30014, 0x00000000); - - /* clear PCI interrupts */ - ATA_OUTL(ctlr->r_res1, 0x01d58, 0x00000000); - - /* unmask PCI interrupts we want */ - ATA_OUTL(ctlr->r_res1, 0x01d5c, 0x007fffff); - - /* unmask host controller interrupts we want */ - ATA_OUTL(ctlr->r_res1, 0x01d64, 0x000000ff/*HC0*/ | 0x0001fe00/*HC1*/ | - /*(1<<19) | (1<<20) | (1<<21) |*/(1<<22) | (1<<24) | (0x7f << 25)); - - return 0; -} - -static int -ata_marvell_edma_ch_attach(device_t dev) -{ - struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev)); - struct ata_channel *ch = device_get_softc(dev); - u_int64_t work; - int i; - - ata_marvell_edma_dmainit(dev); - work = ch->dma.work_bus; - /* clear work area */ - bzero(ch->dma.work, 1024+256); - bus_dmamap_sync(ch->dma.work_tag, ch->dma.work_map, - BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); - - /* set legacy ATA resources */ - for (i = ATA_DATA; i <= ATA_COMMAND; i++) { - ch->r_io[i].res = ctlr->r_res1; - ch->r_io[i].offset = 0x02100 + (i << 2) + ATA_MV_EDMA_BASE(ch); - } - ch->r_io[ATA_CONTROL].res = ctlr->r_res1; - ch->r_io[ATA_CONTROL].offset = 0x02120 + ATA_MV_EDMA_BASE(ch); - ch->r_io[ATA_IDX_ADDR].res = ctlr->r_res1; - ata_default_registers(dev); - - /* set SATA resources */ - switch (ctlr->chip->cfg2) { - case MV_50XX: - ch->r_io[ATA_SSTATUS].res = ctlr->r_res1; - ch->r_io[ATA_SSTATUS].offset = 0x00100 + ATA_MV_HOST_BASE(ch); - ch->r_io[ATA_SERROR].res = ctlr->r_res1; - ch->r_io[ATA_SERROR].offset = 0x00104 + ATA_MV_HOST_BASE(ch); - ch->r_io[ATA_SCONTROL].res = ctlr->r_res1; - ch->r_io[ATA_SCONTROL].offset = 0x00108 + ATA_MV_HOST_BASE(ch); - break; - case MV_60XX: - case MV_6042: - case MV_7042: - ch->r_io[ATA_SSTATUS].res = ctlr->r_res1; - ch->r_io[ATA_SSTATUS].offset = 0x02300 + ATA_MV_EDMA_BASE(ch); - ch->r_io[ATA_SERROR].res = ctlr->r_res1; - ch->r_io[ATA_SERROR].offset = 0x02304 + ATA_MV_EDMA_BASE(ch); - ch->r_io[ATA_SCONTROL].res = ctlr->r_res1; - ch->r_io[ATA_SCONTROL].offset = 0x02308 + ATA_MV_EDMA_BASE(ch); - ch->r_io[ATA_SACTIVE].res = ctlr->r_res1; - ch->r_io[ATA_SACTIVE].offset = 0x02350 + ATA_MV_EDMA_BASE(ch); - break; - } - - ch->flags |= ATA_NO_SLAVE; - ch->flags |= ATA_USE_16BIT; /* XXX SOS needed ? */ - ch->flags |= ATA_SATA; - ata_generic_hw(dev); - ch->hw.begin_transaction = ata_marvell_edma_begin_transaction; - ch->hw.end_transaction = ata_marvell_edma_end_transaction; - ch->hw.status = ata_marvell_edma_status; - - /* disable the EDMA machinery */ - ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000002); - DELAY(100000); /* SOS should poll for disabled */ - - /* set configuration to non-queued 128b read transfers stop on error */ - ATA_OUTL(ctlr->r_res1, 0x02000 + ATA_MV_EDMA_BASE(ch), (1<<11) | (1<<13)); - - /* request queue base high */ - ATA_OUTL(ctlr->r_res1, 0x02010 + ATA_MV_EDMA_BASE(ch), work >> 32); - - /* request queue in ptr */ - ATA_OUTL(ctlr->r_res1, 0x02014 + ATA_MV_EDMA_BASE(ch), work & 0xffffffff); - - /* request queue out ptr */ - ATA_OUTL(ctlr->r_res1, 0x02018 + ATA_MV_EDMA_BASE(ch), 0x0); - - /* response queue base high */ - work += 1024; - ATA_OUTL(ctlr->r_res1, 0x0201c + ATA_MV_EDMA_BASE(ch), work >> 32); - - /* response queue in ptr */ - ATA_OUTL(ctlr->r_res1, 0x02020 + ATA_MV_EDMA_BASE(ch), 0x0); - - /* response queue out ptr */ - ATA_OUTL(ctlr->r_res1, 0x02024 + ATA_MV_EDMA_BASE(ch), work & 0xffffffff); - - /* clear SATA error register */ - ATA_IDX_OUTL(ch, ATA_SERROR, ATA_IDX_INL(ch, ATA_SERROR)); - - /* clear any outstanding error interrupts */ - ATA_OUTL(ctlr->r_res1, 0x02008 + ATA_MV_EDMA_BASE(ch), 0x0); - - /* unmask all error interrupts */ - ATA_OUTL(ctlr->r_res1, 0x0200c + ATA_MV_EDMA_BASE(ch), ~0x0); - - /* enable EDMA machinery */ - ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000001); - return 0; -} - -static int -ata_marvell_edma_ch_detach(device_t dev) -{ - struct ata_channel *ch = device_get_softc(dev); - - if (ch->dma.work_tag && ch->dma.work_map) - bus_dmamap_sync(ch->dma.work_tag, ch->dma.work_map, - BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); - ata_dmafini(dev); - return (0); -} - *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@freebsd.org Sat Aug 22 07:45:51 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 139C19BECE9; Sat, 22 Aug 2015 07:45:51 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 003D816A9; Sat, 22 Aug 2015 07:45:51 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7M7joKJ058818; Sat, 22 Aug 2015 07:45:50 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7M7jomN058814; Sat, 22 Aug 2015 07:45:50 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508220745.t7M7jomN058814@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sat, 22 Aug 2015 07:45:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r287022 - in stable/10/sys: dev/ata dev/ata/chipsets sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Aug 2015 07:45:51 -0000 Author: mav Date: Sat Aug 22 07:45:49 2015 New Revision: 287022 URL: https://svnweb.freebsd.org/changeset/base/287022 Log: MFC r286448: Disable 32-bit PIO for 6Gbit/s Intel SATA controllers. For some reason 32-bit PIO writes are not working on 6Gbit/s Intel SATA ports, while 16/32-bit PIO reads and 16-bit PIO writes are working fine. 3Gbit/s ports on the same controllers have no this problem. Workaround this by disabling 32-bit PIO for all Intel controllers that may have 6Gbit/s ports. It halves PIO performance from 6MB/s to 3MB/s, but who bother about speed of such rare and slow mode, which is also highly discouraged by SATA specifications? Modified: stable/10/sys/dev/ata/ata-all.c stable/10/sys/dev/ata/chipsets/ata-intel.c stable/10/sys/sys/ata.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/ata/ata-all.c ============================================================================== --- stable/10/sys/dev/ata/ata-all.c Sat Aug 22 07:41:28 2015 (r287021) +++ stable/10/sys/dev/ata/ata-all.c Sat Aug 22 07:45:49 2015 (r287022) @@ -573,6 +573,7 @@ ata_mode2str(int mode) case ATA_UDMA6: return "UDMA133"; case ATA_SA150: return "SATA150"; case ATA_SA300: return "SATA300"; + case ATA_SA600: return "SATA600"; default: if (mode & ATA_DMA_MASK) return "BIOSDMA"; Modified: stable/10/sys/dev/ata/chipsets/ata-intel.c ============================================================================== --- stable/10/sys/dev/ata/chipsets/ata-intel.c Sat Aug 22 07:41:28 2015 (r287021) +++ stable/10/sys/dev/ata/chipsets/ata-intel.c Sat Aug 22 07:45:49 2015 (r287022) @@ -155,34 +155,34 @@ ata_intel_probe(device_t dev) { ATA_5Series_S4, 0, INTEL_6CH, 0, ATA_SA300, "5 Series/3400 Series PCH" }, { ATA_5Series_S5, 0, INTEL_6CH2, 0, ATA_SA300, "5 Series/3400 Series PCH" }, { ATA_5Series_S6, 0, INTEL_6CH, 0, ATA_SA300, "5 Series/3400 Series PCH" }, - { ATA_CPT_S1, 0, INTEL_6CH, 0, ATA_SA300, "Cougar Point" }, - { ATA_CPT_S2, 0, INTEL_6CH, 0, ATA_SA300, "Cougar Point" }, + { ATA_CPT_S1, 0, INTEL_6CH, 0, ATA_SA600, "Cougar Point" }, + { ATA_CPT_S2, 0, INTEL_6CH, 0, ATA_SA600, "Cougar Point" }, { ATA_CPT_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Cougar Point" }, { ATA_CPT_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Cougar Point" }, - { ATA_PBG_S1, 0, INTEL_6CH, 0, ATA_SA300, "Patsburg" }, + { ATA_PBG_S1, 0, INTEL_6CH, 0, ATA_SA600, "Patsburg" }, { ATA_PBG_S2, 0, INTEL_6CH2, 0, ATA_SA300, "Patsburg" }, - { ATA_PPT_S1, 0, INTEL_6CH, 0, ATA_SA300, "Panther Point" }, - { ATA_PPT_S2, 0, INTEL_6CH, 0, ATA_SA300, "Panther Point" }, + { ATA_PPT_S1, 0, INTEL_6CH, 0, ATA_SA600, "Panther Point" }, + { ATA_PPT_S2, 0, INTEL_6CH, 0, ATA_SA600, "Panther Point" }, { ATA_PPT_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Panther Point" }, { ATA_PPT_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Panther Point" }, - { ATA_AVOTON_S1, 0, INTEL_6CH, 0, ATA_SA300, "Avoton" }, - { ATA_AVOTON_S2, 0, INTEL_6CH, 0, ATA_SA300, "Avoton" }, + { ATA_AVOTON_S1, 0, INTEL_6CH, 0, ATA_SA600, "Avoton" }, + { ATA_AVOTON_S2, 0, INTEL_6CH, 0, ATA_SA600, "Avoton" }, { ATA_AVOTON_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Avoton" }, { ATA_AVOTON_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Avoton" }, - { ATA_LPT_S1, 0, INTEL_6CH, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_S2, 0, INTEL_6CH, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point" }, - { ATA_LPT_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point" }, - { ATA_WCPT_S1, 0, INTEL_6CH, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_S2, 0, INTEL_6CH, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WCPT_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Wildcat Point" }, - { ATA_WELLS_S1, 0, INTEL_6CH, 0, ATA_SA300, "Wellsburg" }, - { ATA_WELLS_S2, 0, INTEL_6CH2, 0, ATA_SA300, "Wellsburg" }, - { ATA_WELLS_S3, 0, INTEL_6CH, 0, ATA_SA300, "Wellsburg" }, - { ATA_WELLS_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Wellsburg" }, - { ATA_LPTLP_S1, 0, INTEL_6CH, 0, ATA_SA300, "Lynx Point-LP" }, - { ATA_LPTLP_S2, 0, INTEL_6CH, 0, ATA_SA300, "Lynx Point-LP" }, + { ATA_LPT_S1, 0, INTEL_6CH, 0, ATA_SA600, "Lynx Point" }, + { ATA_LPT_S2, 0, INTEL_6CH, 0, ATA_SA600, "Lynx Point" }, + { ATA_LPT_S3, 0, INTEL_6CH2, 0, ATA_SA600, "Lynx Point" }, + { ATA_LPT_S4, 0, INTEL_6CH2, 0, ATA_SA600, "Lynx Point" }, + { ATA_WCPT_S1, 0, INTEL_6CH, 0, ATA_SA600, "Wildcat Point" }, + { ATA_WCPT_S2, 0, INTEL_6CH, 0, ATA_SA600, "Wildcat Point" }, + { ATA_WCPT_S3, 0, INTEL_6CH2, 0, ATA_SA600, "Wildcat Point" }, + { ATA_WCPT_S4, 0, INTEL_6CH2, 0, ATA_SA600, "Wildcat Point" }, + { ATA_WELLS_S1, 0, INTEL_6CH, 0, ATA_SA600, "Wellsburg" }, + { ATA_WELLS_S2, 0, INTEL_6CH2, 0, ATA_SA600, "Wellsburg" }, + { ATA_WELLS_S3, 0, INTEL_6CH, 0, ATA_SA600, "Wellsburg" }, + { ATA_WELLS_S4, 0, INTEL_6CH2, 0, ATA_SA600, "Wellsburg" }, + { ATA_LPTLP_S1, 0, INTEL_6CH, 0, ATA_SA600, "Lynx Point-LP" }, + { ATA_LPTLP_S2, 0, INTEL_6CH, 0, ATA_SA600, "Lynx Point-LP" }, { ATA_LPTLP_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point-LP" }, { ATA_LPTLP_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point-LP" }, { ATA_I31244, 0, 0, 2, ATA_SA150, "31244" }, @@ -394,6 +394,8 @@ ata_intel_ch_attach(device_t dev) } } else ctlr->setmode = ata_intel_new_setmode; + if (ctlr->chip->max_dma >= ATA_SA600) + ch->flags |= ATA_USE_16BIT; } else if (ctlr->chip->chipid != ATA_ISCH) ch->flags |= ATA_CHECKS_CABLE; return (0); Modified: stable/10/sys/sys/ata.h ============================================================================== --- stable/10/sys/sys/ata.h Sat Aug 22 07:41:28 2015 (r287021) +++ stable/10/sys/sys/ata.h Sat Aug 22 07:45:49 2015 (r287022) @@ -335,6 +335,7 @@ struct ata_params { #define ATA_UDMA6 0x46 #define ATA_SA150 0x47 #define ATA_SA300 0x48 +#define ATA_SA600 0x49 #define ATA_DMA_MAX 0x4f From owner-svn-src-stable@freebsd.org Sat Aug 22 15:36:21 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DE8AD9BFD96; Sat, 22 Aug 2015 15:36:21 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B54F2A93; Sat, 22 Aug 2015 15:36:21 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7MFaLWQ066576; Sat, 22 Aug 2015 15:36:21 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7MFaLqF066575; Sat, 22 Aug 2015 15:36:21 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508221536.t7MFaLqF066575@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sat, 22 Aug 2015 15:36:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r287024 - stable/10/sys/dev/ahci X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Aug 2015 15:36:22 -0000 Author: mav Date: Sat Aug 22 15:36:20 2015 New Revision: 287024 URL: https://svnweb.freebsd.org/changeset/base/287024 Log: MFC r285020: Disable port multiplier support on Marvell 88SE61xx chips. According to report, some recent unrelated changes in the driver triggered timeouts when testing for absent port multiplier. Cause of this behavior channge is unclear, but since these chips are old, rare and buggy, it is easier to just disable port multiplier support, same as done in Linux. Modified: stable/10/sys/dev/ahci/ahci_pci.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/ahci/ahci_pci.c ============================================================================== --- stable/10/sys/dev/ahci/ahci_pci.c Sat Aug 22 12:59:05 2015 (r287023) +++ stable/10/sys/dev/ahci/ahci_pci.c Sat Aug 22 15:36:20 2015 (r287024) @@ -184,14 +184,14 @@ static const struct { {0x2365197b, 0x00, "JMicron JMB365", AHCI_Q_NOFORCE}, {0x2366197b, 0x00, "JMicron JMB366", AHCI_Q_NOFORCE}, {0x2368197b, 0x00, "JMicron JMB368", AHCI_Q_NOFORCE}, - {0x611111ab, 0x00, "Marvell 88SE6111", AHCI_Q_NOFORCE | AHCI_Q_1CH | - AHCI_Q_EDGEIS}, - {0x612111ab, 0x00, "Marvell 88SE6121", AHCI_Q_NOFORCE | AHCI_Q_2CH | - AHCI_Q_EDGEIS | AHCI_Q_NONCQ | AHCI_Q_NOCOUNT}, - {0x614111ab, 0x00, "Marvell 88SE6141", AHCI_Q_NOFORCE | AHCI_Q_4CH | - AHCI_Q_EDGEIS | AHCI_Q_NONCQ | AHCI_Q_NOCOUNT}, - {0x614511ab, 0x00, "Marvell 88SE6145", AHCI_Q_NOFORCE | AHCI_Q_4CH | - AHCI_Q_EDGEIS | AHCI_Q_NONCQ | AHCI_Q_NOCOUNT}, + {0x611111ab, 0x00, "Marvell 88SE6111", AHCI_Q_NOFORCE | AHCI_Q_NOPMP | + AHCI_Q_1CH | AHCI_Q_EDGEIS}, + {0x612111ab, 0x00, "Marvell 88SE6121", AHCI_Q_NOFORCE | AHCI_Q_NOPMP | + AHCI_Q_2CH | AHCI_Q_EDGEIS | AHCI_Q_NONCQ | AHCI_Q_NOCOUNT}, + {0x614111ab, 0x00, "Marvell 88SE6141", AHCI_Q_NOFORCE | AHCI_Q_NOPMP | + AHCI_Q_4CH | AHCI_Q_EDGEIS | AHCI_Q_NONCQ | AHCI_Q_NOCOUNT}, + {0x614511ab, 0x00, "Marvell 88SE6145", AHCI_Q_NOFORCE | AHCI_Q_NOPMP | + AHCI_Q_4CH | AHCI_Q_EDGEIS | AHCI_Q_NONCQ | AHCI_Q_NOCOUNT}, {0x91201b4b, 0x00, "Marvell 88SE912x", AHCI_Q_EDGEIS}, {0x91231b4b, 0x11, "Marvell 88SE912x", AHCI_Q_ALTSIG}, {0x91231b4b, 0x00, "Marvell 88SE912x", AHCI_Q_EDGEIS|AHCI_Q_SATA2}, From owner-svn-src-stable@freebsd.org Sat Aug 22 16:59:28 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BDACA9BFCD4; Sat, 22 Aug 2015 16:59:28 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id AB4E11976; Sat, 22 Aug 2015 16:59:28 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7MGxSGt003796; Sat, 22 Aug 2015 16:59:28 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7MGxSfr003795; Sat, 22 Aug 2015 16:59:28 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201508221659.t7MGxSfr003795@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sat, 22 Aug 2015 16:59:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r287026 - stable/10/usr.sbin/ctld X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Aug 2015 16:59:28 -0000 Author: mav Date: Sat Aug 22 16:59:27 2015 New Revision: 287026 URL: https://svnweb.freebsd.org/changeset/base/287026 Log: MFC r286462: Refactor early stages of security negotiation. Modified: stable/10/usr.sbin/ctld/login.c Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/ctld/login.c ============================================================================== --- stable/10/usr.sbin/ctld/login.c Sat Aug 22 15:58:35 2015 (r287025) +++ stable/10/usr.sbin/ctld/login.c Sat Aug 22 16:59:27 2015 (r287026) @@ -737,6 +737,30 @@ login_negotiate(struct connection *conn, keys_delete(request_keys); } +static void +login_wait_transition(struct connection *conn) +{ + struct pdu *request, *response; + struct iscsi_bhs_login_request *bhslr; + + log_debugx("waiting for state transition request"); + request = login_receive(conn, false); + bhslr = (struct iscsi_bhs_login_request *)request->pdu_bhs; + if ((bhslr->bhslr_flags & BHSLR_FLAGS_TRANSIT) == 0) { + login_send_error(request, 0x02, 0x00); + log_errx(1, "got no \"T\" flag after answering AuthMethod"); + } + pdu_delete(request); + + log_debugx("got state transition request"); + response = login_new_response(request); + login_set_nsg(response, BHSLR_STAGE_OPERATIONAL_NEGOTIATION); + pdu_send(response); + pdu_delete(response); + + login_negotiate(conn, NULL); +} + void login(struct connection *conn) { @@ -747,7 +771,7 @@ login(struct connection *conn) struct portal_group *pg; const char *initiator_name, *initiator_alias, *session_type, *target_name, *auth_method; - bool redirected; + bool redirected, fail, trans; /* * Handle the initial Login Request - figure out required authentication @@ -856,6 +880,19 @@ login(struct connection *conn) } } + if (ag->ag_type == AG_TYPE_DENY) { + login_send_error(request, 0x02, 0x01); + log_errx(1, "auth-type is \"deny\""); + } + + if (ag->ag_type == AG_TYPE_UNKNOWN) { + /* + * This can happen with empty auth-group. + */ + login_send_error(request, 0x02, 0x01); + log_errx(1, "auth-type not set, denying access"); + } + /* * Enforce initiator-name and initiator-portal. */ @@ -889,80 +926,37 @@ login(struct connection *conn) return; } + fail = false; + response = login_new_response(request); + response_keys = keys_new(); + trans = (bhslr->bhslr_flags & BHSLR_FLAGS_TRANSIT) != 0; + auth_method = keys_find(request_keys, "AuthMethod"); if (ag->ag_type == AG_TYPE_NO_AUTHENTICATION) { - /* - * Initiator might want to to authenticate, - * but we don't need it. - */ - log_debugx("authentication not required; " - "transitioning to operational parameter negotiation"); - - if ((bhslr->bhslr_flags & BHSLR_FLAGS_TRANSIT) == 0) - log_warnx("initiator did not set the \"T\" flag; " - "transitioning anyway"); - - response = login_new_response(request); - login_set_nsg(response, BHSLR_STAGE_OPERATIONAL_NEGOTIATION); - response_keys = keys_new(); - /* - * Required by Linux initiator. - */ - auth_method = keys_find(request_keys, "AuthMethod"); - if (auth_method != NULL && - login_list_contains(auth_method, "None")) + log_debugx("authentication not required"); + if (auth_method == NULL || + login_list_contains(auth_method, "None")) { keys_add(response_keys, "AuthMethod", "None"); - - if (conn->conn_session_type == CONN_SESSION_TYPE_NORMAL) { - if (conn->conn_target->t_alias != NULL) - keys_add(response_keys, - "TargetAlias", conn->conn_target->t_alias); - keys_add_int(response_keys, - "TargetPortalGroupTag", pg->pg_tag); - } - keys_save(response_keys, response); - pdu_send(response); - pdu_delete(response); - keys_delete(response_keys); - pdu_delete(request); - keys_delete(request_keys); - - login_negotiate(conn, NULL); - return; - } - - if (ag->ag_type == AG_TYPE_DENY) { - login_send_error(request, 0x02, 0x01); - log_errx(1, "auth-type is \"deny\""); - } - - if (ag->ag_type == AG_TYPE_UNKNOWN) { - /* - * This can happen with empty auth-group. - */ - login_send_error(request, 0x02, 0x01); - log_errx(1, "auth-type not set, denying access"); - } - - log_debugx("CHAP authentication required"); - - auth_method = keys_find(request_keys, "AuthMethod"); - if (auth_method == NULL) { - login_send_error(request, 0x02, 0x07); - log_errx(1, "received Login PDU without AuthMethod"); - } - /* - * XXX: This should be Reject, not just a login failure (5.3.2). - */ - if (login_list_contains(auth_method, "CHAP") == 0) { - login_send_error(request, 0x02, 0x01); - log_errx(1, "initiator requests unsupported AuthMethod \"%s\" " - "instead of \"CHAP\"", auth_method); + } else { + log_warnx("initiator requests " + "AuthMethod \"%s\" instead of \"None\"", + auth_method); + keys_add(response_keys, "AuthMethod", "Reject"); + } + if (trans) + login_set_nsg(response, BHSLR_STAGE_OPERATIONAL_NEGOTIATION); + } else { + log_debugx("CHAP authentication required"); + if (auth_method == NULL || + login_list_contains(auth_method, "CHAP")) { + keys_add(response_keys, "AuthMethod", "CHAP"); + } else { + log_warnx("initiator requests unsupported " + "AuthMethod \"%s\" instead of \"CHAP\"", + auth_method); + keys_add(response_keys, "AuthMethod", "Reject"); + fail = true; + } } - - response = login_new_response(request); - - response_keys = keys_new(); - keys_add(response_keys, "AuthMethod", "CHAP"); if (conn->conn_session_type == CONN_SESSION_TYPE_NORMAL) { if (conn->conn_target->t_alias != NULL) keys_add(response_keys, @@ -978,7 +972,17 @@ login(struct connection *conn) pdu_delete(request); keys_delete(request_keys); - login_chap(conn, ag); + if (fail) { + log_debugx("sent reject for AuthMethod; exiting"); + exit(1); + } - login_negotiate(conn, NULL); + if (ag->ag_type != AG_TYPE_NO_AUTHENTICATION) { + login_chap(conn, ag); + login_negotiate(conn, NULL); + } else if (trans) { + login_negotiate(conn, NULL); + } else { + login_wait_transition(conn); + } } From owner-svn-src-stable@freebsd.org Sat Aug 22 21:35:36 2015 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 189B19BE7EE; Sat, 22 Aug 2015 21:35:36 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 07A6082D; Sat, 22 Aug 2015 21:35:36 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t7MLZZjb025721; Sat, 22 Aug 2015 21:35:35 GMT (envelope-from jilles@FreeBSD.org) Received: (from jilles@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t7MLZZWH025720; Sat, 22 Aug 2015 21:35:35 GMT (envelope-from jilles@FreeBSD.org) Message-Id: <201508222135.t7MLZZWH025720@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jilles set sender to jilles@FreeBSD.org using -f From: Jilles Tjoelker Date: Sat, 22 Aug 2015 21:35:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r287027 - stable/10/bin/mv X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Aug 2015 21:35:36 -0000 Author: jilles Date: Sat Aug 22 21:35:35 2015 New Revision: 287027 URL: https://svnweb.freebsd.org/changeset/base/287027 Log: MFC r284916: mv: Improve message when moving two or more files to non-directory. The message text is from cp, which has had a nicer message for this since 2007 (PR bin/50656). As with cp, the exit status changes from 64 to 1. PR: 201083 Modified: stable/10/bin/mv/mv.c Directory Properties: stable/10/ (props changed) Modified: stable/10/bin/mv/mv.c ============================================================================== --- stable/10/bin/mv/mv.c Sat Aug 22 16:59:27 2015 (r287026) +++ stable/10/bin/mv/mv.c Sat Aug 22 21:35:35 2015 (r287027) @@ -122,7 +122,7 @@ main(int argc, char *argv[]) */ if (stat(argv[argc - 1], &sb) || !S_ISDIR(sb.st_mode)) { if (argc > 2) - usage(); + errx(1, "%s is not a directory", argv[argc - 1]); exit(do_move(argv[0], argv[1])); }